# 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 supports features like user management, channel operations, and command-based interactions.

## Key Features
- **Modular Architecture**: BitBot consists of multiple modules that can be enabled or disabled independently.
- **User Management**: Supports setting up and managing user permissions within channels.
- **Channel Operations**: Automates joining and parting channels based on server settings.
- **Command Handling**: Responds to various commands sent by users, such as `!acronym`, `!btc`, and more.
- **Event Hooks**: Triggers actions based on IRC events like joins, parts, kicks, and messages.

## File Analysis
- **setup.py** — Sets up the bot with necessary configurations and dependencies.
- **v01.16.00-aliases.py** — Migrates old alias settings to a newer format.
- **v01.16.00-karma.py** — Migrates old karma settings to a newer format.
- **accept_invite.py** — Sets whether the bot should accept invites on a server.
- **acronym.py** — Provides possible meanings for acronyms based on user input.
- **badges.py** — Manages date formatting and parsing within the bot's operations.
- **badwords.py** — Lists and adds bad words to be monitored in channels.
- **birthday.py** — Handles birthday-related commands and date parsing.
- **bitcoin.py** — Fetches current Bitcoin exchange rates.
- **bot_channel.py** — Sets the main channel for the bot upon connection.
- **botlist.py** — Responds to specific commands to list bots or roll calls.
- **channel_op.py** — Manages banning, kicking, and other channel operations.
- **channel_save.py** — Handles autojoining channels on server connect.
- **check_certificate.py** — Checks the validity of TLS certificates used by the bot.
- **coins.py** — Implements a coin-flipping or lottery system with betting functionality.
- **command_suggestions.py** — Provides command suggestions to users based on their input.
- **define.py** — Fetches definitions for words from an API.
- **dice.py** — Rolls dice and provides results in a DND-style format.
- **duckduckgo.py** — Searches DuckDuckGo for the first result of a given query.
- **ducks.py** — Spawns ducks (random messages) based on channel activity.
- **echo.py** — Echoes user input back to them or performs actions like `/me`.
- **eightball.py** — Provides random responses similar to an eight-ball.
- **eval_lua.py** — Evaluates Lua code from a web service.
- **eval_python.py** — Evaluates Python code from a web service.
- **factoids.py** — Manages and retrieves factoid information.
- **github.py** — Searches GitHub for issues, pull requests, or repositories based on user input.
- **google.py** — Fetches the first result from Google searches.
- **greeting.py** — Sends a greeting message to users when they join a channel.
- **hash.py** — Hashes strings using various algorithms.
- **healthcheck.py** — Pings an external URL for health checks.
- **highlight_spam.py** — Protects against highlight spam by kicking or banning spammers.
- **ids.py** — Provides user and account information.
- **imdb.py** — Searches IMDb for movie or TV show details.
- **imgur.py** — Retrieves image and gallery information from Imgur.
- **in.py** — Sets reminders based on time input.
- **info.py** — Displays version information about the bot.
- **ip_addresses.py** — Provides IP address geolocation data.
- **ircv3.py** — Manages IRCv3 capabilities for better protocol support.
- **ircv3_botignore.py** — Ignores specific tags in private messages.
- **ircv3_multiline.py** — Supports multiline commands and responses.
- **ircv3_resume.py** — Handles resuming connections after a server restart.
- **ircv3_typing.py** — Manages typing indicators for better user experience.
- **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 the server.
- **lastfm.py** — Retrieves last listened to tracks from Last.fm.
- **location.py** — Sets and retrieves user location data.
- **markov.py** — Generates text based on Markov chains.
- **message_filter.py** — Filters messages based on predefined rules.
- **mumble.py** — Provides information about users and bandwidth usage in Mumble servers.
- **nickserv.py** — Identifies with NickServ upon connecting to a server.
- **nr.py** — Retrieves train schedule information from National Rail API.
- **onionoo.py** — Fetches Tor relay details using Onionoo service.
- **ops.py** — Alerts all online channel operators in the current channel.
- **pong.py** — Responds with "Pong!" to a ping command.
- **pronouns.py** — Manages and retrieves user pronouns.
- **quotes.py** — Manages and displays quotes from 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 interacting with the bot.