# BitBot IRC Bot

**Category:** Standalone_Bot
**Original Author:** jesopo

## Description
BitBot is a modular event-driven IRC bot designed to automate various tasks on IRC channels. It includes features for managing channel settings, user permissions, and performing actions like joining channels, kicking users, and changing nicknames.

## Key Features
- **Modular Structure**: BitBot is composed of multiple modules that can be enabled or disabled independently.
- **Channel Management**: Automatically joins specified channels at connection time.
- **User Permissions**: Manages channel access levels with commands to change permissions.
- **Event Handling**: Responds to various IRC events such as JOIN, KICK, and PRIVMSG.
- **Command Execution**: Executes custom commands based on user input.

## File Analysis
- **setup.py** — Sets up the bot's configuration and dependencies.
- **v01.16.00-aliases.py** — Migrates command aliases from previous versions to v1.16.0.
- **v01.16.00-karma.py** — Migrates karma settings from previous versions to v1.16.0.
- **accept_invite.py** — Accepts channel invites based on server settings.
- **acronym.py** — Fetches possible meanings of acronyms using an external API.
- **admin.py** — Allows changing the bot's nickname and sending raw IRC commands.
- **aliases.py** — Manages command aliases for different channels.
- **badges.py** — Handles date formatting and parsing.
- **badwords.py** — Lists and adds bad words to a channel’s filter.
- **birthday.py** — Tracks user birthdays in the channel.
- **bitcoin.py** — Fetches current Bitcoin exchange rates.
- **bot_channel.py** — Sets the main bot channel on connection.
- **botlist.py** — Responds to !botlist commands with a greeting message.
- **channel_access.py** — Manages user access levels for channels.
- **channel_blacklist.py** — Prevents joining specified channels.
- **channel_keys.py** — Handles channel keys (passwords) for secure connections.
- **channel_op.py** — Sets ban and kick formats for users with different access levels.
- **channel_save.py** — Saves autojoin channels on connection.
- **check_certificate.py** — Checks the validity of SSL certificates before connecting to a server.
- **check_mode.py** — Manages channel modes and user access levels.
- **coins.py** — Implements a betting system with various commands.
- **command_suggestions.py** — Provides command suggestions based on user input.
- **config.py** — Manages configuration settings for the bot.
- **ctcp.py** — Responds to CTCP requests from users.
- **database_backup.py** — Backups the database at regular intervals.
- **deferred_read.py** — Delays parsing of certain IRC lines until after 001 is received.
- **define.py** — Fetches definitions for words using an external API.
- **dice.py** — Rolls dice with specified parameters.
- **duckduckgo.py** — Retrieves the first result from DuckDuckGo search engine.
- **ducks.py** — Spawns ducks in channels based on user activity.
- **echo.py** — Echoes and acts out messages sent to it.
- **eightball.py** — Provides random answers to yes/no questions.
- **eval_lua.py** — Evaluates Lua code snippets.
- **eval_python.py** — Evaluates Python code snippets.
- **factoids.py** — Manages factoid commands for storing and retrieving information.
- **fake_echo.py** — Forwards messages as if they were sent by the bot itself.
- **format_activity.py** — Formats IRC activity logs.
- **github.py** — Searches GitHub repositories, issues, and pull requests.
- **google.py** — Retrieves first Google search result for a given query.
- **greeting.py** — Sends a greeting message to users when they 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 channel IDs.
- **ignore.py** — Manages user ignores and command ignores.
- **imdb.py** — Searches for movie and TV show information on IMDb.
- **imgur.py** — Retrieves image and gallery details from Imgur.
- **in.py** — Sets reminders to be triggered after a specified time.
- **info.py** — Displays bot version and other information.
- **ip_addresses.py** — Resolves IP addresses and checks nameservers.
- **ircv3.py** — Supports various IRCv3 capabilities for enhanced functionality.
- **ircv3_botignore.py** — Ignores messages with specific tags from bots.
- **ircv3_chathistory.py** — Manages chat history using IRCv3 event-playback capability.
- **ircv3_echo_message.py** — Echoes sent messages to the server for tracking purposes.
- **ircv3_labeled_responses.py** — Handles labeled responses and message IDs.
- **ircv3_message_tracking.py** — Tracks message delivery and read status.
- **ircv3_metadata.py** — Sets metadata tags for messages.
- **ircv3_multiline.py** — Supports multiline messages with batch handling.
- **ircv3_resume.py** — Manages session resumption using IRCv3 capabilities.