# 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 user permissions, handling commands, and performing actions like joining channels and kicking users.

## Key Features
- **Modular Architecture**: BitBot uses a modular design with separate files for different functionalities.
- **Command Handling**: Supports custom commands through the `received.command` event.
- **User Permissions**: Manages user access levels using settings like `accept-invites`, `mode-low`, and `mode-high`.
- **Channel Management**: Automatically joins specified channels on connection, as defined in server settings.
- **Event Hooks**: Responds to various IRC events such as channel joins, messages, and invites.

## File Analysis
- **setup.py** — Sets up the bot with its dependencies and configuration.
- **v01.16.00-aliases.py** — Migrates command aliases from an older version of BitBot.
- **v01.16.00-karma.py** — Migrates karma settings from an older version of BitBot.
- **accept_invite.py** — Handles accepting channel invites based on server settings.
- **acronym.py** — Provides a service to find possible meanings for acronyms.
- **admin.py** — Allows changing the bot's nickname and sending raw IRC commands.
- **aliases.py** — Manages command aliases.
- **badges.py** — Manages user badges with date parsing functionality.
- **badwords.py** — Lists and manages bad words in channels.
- **birthday.py** — Handles birthday-related events, including parsing dates.
- **bitcoin.py** — Fetches Bitcoin exchange rates.
- **bot_channel.py** — Sets the main channel for the bot to join upon connection.
- **botlist.py** — Responds to specific commands with a predefined message.
- **channel_access.py** — Manages user access levels in channels.
- **channel_blacklist.py** — Refuses joining specified channels.
- **channel_keys.py** — Manages channel keys for authentication.
- **channel_op.py** — Sets ban and kick formats for users based on their access level.
- **channel_save.py** — Automatically joins specified channels upon connection.
- **check_certificate.py** — Checks the validity of the bot's SSL certificate.
- **check_mode.py** — Manages channel modes, setting low and high access levels.
- **coins.py** — Implements a betting system with various commands for playing games like roulette.
- **command_suggestions.py** — Provides command suggestions based on user input.
- **config.py** — Manages configuration settings across different scopes (server, channel, user).
- **ctcp.py** — Handles CTCP requests and responses.
- **database_backup.py** — Backs up the bot's database at regular intervals.
- **deferred_read.py** — Delays parsing of certain IRC lines until after the 001 message is received.
- **define.py** — Provides a service to look up word definitions from Wordnik API.
- **dice.py** — Allows rolling dice with various formats.
- **duckduckgo.py** — Fetches results from DuckDuckGo search engine.
- **ducks.py** — Spawns ducks in channels based on user activity.
- **echo.py** — Echoes messages and performs actions like sending /me lines.
- **eightball.py** — Provides random answers to yes/no questions.
- **eval_lua.py** — Evaluates Lua code from an external API.
- **eval_python.py** — Evaluates Python code from an external API.
- **factoids.py** — Manages factoid commands, storing and retrieving information.
- **fake_echo.py** — Forwards messages to the bot itself for processing.
- **format_activity.py** — Formats IRC activity events.
- **github.py** — Fetches information about GitHub repositories and issues.
- **google.py** — Searches Google for a given query.
- **greeting.py** — Sends a greeting message when users join a channel.
- **hash.py** — Hashes strings using various algorithms.
- **help.py** — Provides help documentation for commands.
- **highlight_spam.py** — Protects against highlight spam by kicking or banning offenders.
- **ids.py** — Displays user and account IDs.
- **ignore.py** — Manages ignoring users, channels, and commands.
- **imdb.py** — Fetches information about movies and TV shows from IMDb.
- **imgur.py** — Retrieves image details from Imgur.
- **in.py** — Sets reminders for future events.
- **info.py** — Provides version and other bot-related information.
- **ip_addresses.py** — Resolves IP addresses to their geographical locations.
- **ircv3.py** — Supports IRCv3 capabilities like event-playback, echo-message, and metadata.
- **ircv3_botignore.py** — Ignores messages from specific bots.
- **ircv3_chathistory.py** — Manages chat history using IRCv3 capabilities.
- **ircv3_echo_message.py** — Echoes sent messages back to the sender.
- **ircv3_labeled_responses.py** — Supports labeled responses for better message tracking.
- **ircv3_message_tracking.py** — Tracks and logs messages with unique IDs.
- **ircv3_metadata.py** — Sets metadata tags for bot information.
- **ircv3_multiline.py** — Handles multiline messages in IRC.
- **ircv3_resume.py** — Manages session resumption using IRCv3 capabilities.