# BitBot IRC Bot

**Category:** mIRC_Bot
**Original Author:** jesopo

## Description
BitBot is a modular event-driven IRC bot designed to automate various tasks on IRC channels, such as managing users, responding to commands, and handling channel events.

## Key Features
- **Modular Architecture**: BitBot uses a plugin system for adding functionality.
- **Command Handling**: Supports custom commands and triggers.
- **User Management**: Can manage user permissions and roles within the bot's configuration.
- **Channel Operations**: Automates joining channels, sending messages, and handling channel events like joins and parts.
- **NickServ Interaction**: Identifies with NickServ on connected servers.

## File Analysis
- **setup.py** — Sets up the bot as a Python package.
- **v01.16.00-aliases.py** — Migrates old alias settings from previous versions.
- **v01.16.00-karma.py** — Migrates old karma settings from previous versions.
- **accept_invite.py** — Automatically accepts channel invites if the bot is an operator on that server.
- **acronym.py** — Provides a command to find possible meanings of acronyms.
- **badges.py** — Manages user badges and dates in human-readable formats.
- **badwords.py** — Lists and adds badwords to channels.
- **birthday.py** — Handles birthday-related commands and date parsing.
- **bitcoin.py** — Provides a command to get the current Bitcoin exchange rate.
- **bot_channel.py** — Sets the main channel for the bot to join on server connect.
- **botlist.py** — Responds to specific commands with a predefined message.
- **channel_op.py** — Manages channel bans and kicks, setting default reasons.
- **channel_save.py** — Handles autojoining channels when the bot connects.
- **check_certificate.py** — Checks the validity of the server's TLS certificate.
- **coins.py** — Implements a betting system with various commands for coin flips and lotteries.
- **command_suggestions.py** — Provides command suggestions based on user input.
- **define.py** — Retrieves word definitions from Wordnik API.
- **dice.py** — Rolls dice using a DND-style format.
- **duckduckgo.py** — Fetches the first result from DuckDuckGo search.
- **ducks.py** — Spawns ducks in channels based on user messages and settings.
- **echo.py** — Echoes commands back to users, including /me actions and private messages.
- **eightball.py** — Provides random answers to yes/no questions.
- **eval_lua.py** — Evaluates Lua code through an external service.
- **eval_python.py** — Evaluates Python code through an external service.
- **factoids.py** — Manages factoid commands for storing and retrieving information.
- **github.py** — Fetches GitHub-related information such as commits, issues, and pull requests.
- **google.py** — Searches Google using the Custom Search API.
- **greeting.py** — Sends a greeting to users when they join a channel.
- **hash.py** — Hashes strings with various algorithms.
- **healthcheck.py** — Performs health checks on servers by pinging URLs.
- **highlight_spam.py** — Protects against highlight spam in channels.
- **ids.py** — Provides user and account ID information.
- **imdb.py** — Searches for movie or TV show details using the IMDb API.
- **imgur.py** — Retrieves image information from Imgur.
- **in.py** — Sets reminders based on time input.
- **info.py** — Displays version and other bot-related information.
- **ip_addresses.py** — Handles IP address lookups and DNS settings.
- **ircv3.py** — Supports IRCv3 capabilities for server interaction.
- **ircv3_botignore.py** — Ignores certain messages from specific servers.
- **ircv3_multiline.py** — Implements multiline message support.
- **ircv3_resume.py** — Manages resume tokens for server connections.
- **ircv3_typing.py** — Handles typing indicators in IRCv3.
- **isup.py** — Checks if a given URL is up or down.
- **karma.py** — Tracks and manages karma points for users.
- **kick-rejoin.py** — Rejoins channels after being kicked by operators.
- **lastfm.py** — Retrieves last played tracks from Last.fm.
- **location.py** — Sets and retrieves user locations using the OpenCagedata API.
- **markov.py** — Generates text based on Markov chains.
- **message_filter.py** — Filters messages in channels based on predefined rules.
- **mumble.py** — Retrieves user and bandwidth stats from Mumble servers.
- **nickserv.py** — Identifies with NickServ when the bot connects to a server.
- **nr.py** — Fetches train arrival information using the National Rail API.
- **onionoo.py** — Searches for Tor relay details using Onionoo.
- **ops.py** — Alerts all online channel operators in the current channel.
- **pong.py** — Responds with "Pong!" to a ping command.
- **pronouns.py** — Manages and displays user pronouns.
- **quotes.py** — Manages and retrieves quotes for channels.
- **random_number.py** — Generates random numbers or coin flips.
- **relay.py** — Relays channel events to other servers.
- **rest_api.py** — Provides a REST API for the bot's functionality.