# BitBot IRC Bot

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

## Description
BitBot is a modular event-driven IRC bot designed to automate various tasks such as channel management, user interaction, and information retrieval.

## Key Features
- **Modular Architecture**: Uses a plugin system with multiple modules for different functionalities.
- **Channel Management**: Auto-joins specified channels on connection.
- **User Interaction**: Responds to commands like `.nick` and `.raw`.
- **Event Handling**: Handles various IRC events such as joins, invites, and messages.
- **Configuration Settings**: Allows setting of bot behavior through server/channel settings.

## File Analysis
- **accept_invite.py** — Sets whether the bot accepts channel invites on a per-server basis.
- **acronym.py** — Provides definitions for acronyms using an external API.
- **admin.py** — Manages administrative commands like changing nickname and sending raw IRC commands.
- **badwords.py** — Manages badword lists in channels.
- **birthday.py** — Handles birthday-related commands.
- **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 access levels and permissions in channels.
- **channel_blacklist.py** — Refuses to join specified channels.
- **channel_keys.py** — Manages channel keys (passwords).
- **channel_op.py** — Handles channel operator management based on access settings.
- **channel_save.py** — Auto-joins specified channels upon connection.
- **check_certificate.py** — Checks the validity of the server's SSL certificate.
- **check_mode.py** — Manages low and high access modes in channels.
- **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 different entities (server, channel).
- **ctcp.py** — Handles CTCP requests and responses.
- **database_backup.py** — Backs up the database at regular intervals.
- **deferred_read.py** — Postpones parsing of certain IRC lines until after the 001 message is received.
- **define.py** — Fetches definitions for words using an API.
- **dice.py** — Implements dice rolling functionality.
- **duckduckgo.py** — Searches DuckDuckGo and provides a URL as a result.
- **ducks.py** — Spawns ducks in channels based on user messages.
- **echo.py** — Echoes back received commands or actions.
- **eightball.py** — Provides random answers to yes/no questions.
- **eval_lua.py** — Evaluates Lua code using an external service.
- **eval_python.py** — Evaluates Python code using an external service.
- **factoids.py** — Manages factoid-like entries.
- **fake_echo.py** — Sends messages as if they were from the bot itself.
- **format_activity.py** — Formats and sends IRC activity events.
- **github.py** — Searches GitHub for issues, pull requests, and commits.
- **google.py** — Provides Google search results based on user queries.
- **greeting.py** — Sends a greeting to users when they join the channel.
- **hash.py** — Hashes strings using various algorithms.
- **help.py** — Manages command help and usage information.
- **highlight_spam.py** — Protects against highlight spam in channels.
- **ids.py** — Provides user ID and account name information.
- **ignore.py** — Manages ignoring of users or commands.
- **imdb.py** — Searches for movie/tv show information using IMDb API.
- **imgur.py** — Retrieves image and gallery information from Imgur.
- **in.py** — Sets reminders based on time inputs.
- **info.py** — Provides version and configuration information about the bot.
- **ip_addresses.py** — Resolves IP addresses to geographical information.
- **ircv3.py** — Manages IRCv3 capabilities and statistics.
- **ircv3_botignore.py** — Ignores specific messages from bots.
- **ircv3_chathistory.py** — Handles event playback for channel history.
- **ircv3_echo_message.py** — Echoes messages with labeled responses.
- **ircv3_labeled_responses.py** — Manages labeled response capabilities.
- **ircv3_message_tracking.py** — Tracks message IDs and delivery status.
- **ircv3_metadata.py** — Sets metadata for the bot.
- **ircv3_multiline.py** — Handles multiline messages.
- **ircv3_resume.py** — Manages server state resumption.
- **ircv3_server_time.py** — Manages server time synchronization.
- **ircv3_sts.py** — Manages secure TLS session tickets.
- **isup.py** — Checks if a given URL is up or not.