# BitBot IRC Bot

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

## Description
BitBot is a modular event-driven IRC bot written in Python that can be configured to perform various automated tasks, such as joining channels, responding to commands, and managing user access.

## Key Features
- **Modular architecture**: BitBot consists of multiple modules that handle different functionalities.
- **Command handling**: Supports custom commands with permissions and help documentation.
- **Channel management**: Can join specified channels automatically upon connection.
- **User access control**: Implements a permission system to manage channel access levels.
- **Event-driven operations**: Responds to various IRC events such as joins, parts, and messages.

## File Analysis
- **accept_invite.py** — Handles accepting invites on connected servers.
- **acronym.py** — Provides definitions for acronyms based on user input.
- **admin.py** — Manages bot-related commands like changing the nickname and sending raw IRC commands.
- **badwords.py** — Manages a list of bad words in channels, allowing users to add or view them.
- **birthday.py** — Tracks birthdays within channels.
- **bitcoin.py** — Fetches current Bitcoin exchange rates.
- **bot_channel.py** — Sets the main channel for the bot upon connection.
- **botlist.py** — Sends a predefined message when specific commands are received in a channel.
- **channel_access.py** — Manages user access levels and permissions within channels.
- **channel_blacklist.py** — Refuses to join specified channels.
- **channel_keys.py** — Manages channel-specific keys or passwords.
- **channel_op.py** — Sets ban formats for low and high access levels in channels.
- **channel_save.py** — Joins autojoin channels upon connecting to a server.
- **check_certificate.py** — Checks the validity of the bot's TLS certificate before establishing a connection.
- **check_mode.py** — Manages channel modes and required permissions.
- **coins.py** — Implements a betting system with various commands for users.
- **command_suggestions.py** — Provides suggestions for unknown commands based on existing ones.
- **config.py** — Handles configuration settings for the bot, including server-specific configurations.
- **ctcp.py** — Responds to CTCP requests from other IRC clients.
- **database_backup.py** — Backups the bot's database at regular intervals.
- **deferred_read.py** — Delays parsing of certain IRC lines until after receiving a 001 message.
- **define.py** — Provides definitions for words based on user input.
- **dice.py** — Allows users to roll dice with specified parameters.
- **duckduckgo.py** — Fetches the first result from DuckDuckGo search engine.
- **ducks.py** — Spawns ducks in channels based on certain conditions.
- **echo.py** — Echoes messages, performs actions, and sends private messages.
- **eightball.py** — Provides random responses to yes/no questions.
- **eval_lua.py** — Evaluates Lua code provided by users.
- **eval_python.py** — Evaluates Python code provided by users.
- **factoids.py** — Manages factoid commands for quick information retrieval.
- **fake_echo.py** — Simulates sending messages from the bot itself.
- **format_activity.py** — Formats and logs various IRC events.
- **github.py** — Fetches information about GitHub repositories, issues, and pull requests.
- **google.py** — Provides search results from Google based on user queries.
- **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 users.
- **ids.py** — Displays user and channel IDs.
- **ignore.py** — Manages ignored users, channels, and commands.
- **imdb.py** — Fetches information about movies and TV shows from IMDb.
- **imgur.py** — Retrieves image and gallery information from Imgur.
- **in.py** — Sets reminders for future events.
- **info.py** — Provides version and configuration information about the bot.
- **ip_addresses.py** — Resolves IP addresses to their geographical locations.
- **ircv3.py** — Implements support for IRCv3 capabilities such as stats, event playback, and metadata.
- **ircv3_botignore.py** — Ignores messages from specific servers based on IRCv3 bot ignore tags.
- **ircv3_chathistory.py** — Manages chat history using IRCv3 event-playback capability.
- **ircv3_echo_message.py** — Echoes sent messages with labeled responses.
- **ircv3_labeled_responses.py** — Handles labeled responses in IRCv3.
- **ircv3_message_tracking.py** — Tracks message IDs and delivery statuses.
- **ircv3_metadata.py** — Sets metadata for the bot on connected servers.
- **ircv3_multiline.py** — Supports multiline messages using IRCv3 capabilities.
- **ircv3_resume.py** — Manages server state resumption after disconnection.
- **ircv3_server_time.py** — Tracks and logs server time.
- **ircv3_sts.py** — Implements Server Time Stamping (STS) for secure connections.
- **isup.py** — Checks if a given URL is up or down.