# BitBot IRC Bot

**Category:** Standalone_Bot
**Original Author:** Unknown

## Description
BitBot is a standalone IRC bot designed to automate various channel operations such as managing user access, sending messages, and responding to commands.

## Key Features
- Manages channel settings like mode control and invite acceptance.
- Provides command-line arguments for configuration.
- Implements modules for various functionalities including fortune-telling, currency exchange, and trivia.
- Supports automatic joining of configured channels at connection time.
- Includes a system for managing user permissions and access levels within the bot.

## File Analysis
- **start.py** — Entry point of the bot with command-line argument parsing and module imports.
- **8ball.py** — Implements a fortune-telling feature using random responses.
- **accept_invite.py** — Handles accepting invites to channels on connected servers.
- **admin.py** — Provides administrative commands for changing nicknames, sending raw IRC data, and parting channels.
- **auto_mode.py** — Manages automatic channel mode settings based on user identification status.
- **badwords.py** — Allows listing and adding badwords in a channel to filter out offensive language.
- **birthday.py** — Handles birthday messages by parsing dates and formatting them.
- **bitcoin.py** — Fetches current Bitcoin exchange rates from an API.
- **books.py** — Searches for book information using Google Books API.
- **bot_channel.py** — Sets the main bot channel on server connection.
- **botlist.py** — Sends a predefined message when specific commands are received in channels.
- **channel_access.py** — Manages user access levels within channels.
- **channel_op.py** — Implements spam protection and highlighting features for channels.
- **channel_save.py** — Handles saving the state of channel keys upon connection.
- **check_mode.py** — Checks required channel modes before executing commands.
- **check_urls.py** — Automatically checks URLs for malicious content using VirusTotal API.
- **coins.py** — Implements a simple betting game with various outcomes and rules.
- **config.py** — Manages configuration settings for channels, servers, and the bot itself.
- **ctcp.py** — Responds to CTCP version requests from users on connected servers.
- **cve.py** — Fetches details of Common Vulnerabilities and Exposures (CVE) entries.
- **database_backup.py** — Backups the database at regular intervals.
- **define.py** — Retrieves definitions for words using Wordnik API.
- **dice.py** — Rolls dice with specified sides.
- **duckduckgo.py** — Fetches first result from DuckDuckGo search engine.
- **ducks.py** — Spawns ducks in channels based on user messages and settings.
- **echo.py** — Echoes received commands back to the channel.
- **eval_lua.py** — Evaluates Lua code snippets using an online service.
- **eval_python.py** — Evaluates Python code snippets using an online service.
- **eval_rust.py** — Evaluates Rust code snippets using an online playground.
- **factoids.py** — Manages factoid-based knowledge in channels.
- **format_activity.py** — Formats and logs various IRC events.
- **google.py** — Fetches first Google search result for a given query.
- **greeting.py** — Sends a greeting message to users when they join the channel.
- **hash.py** — Hashes strings using various algorithms.
- **ids.py** — Displays user and channel IDs.
- **imdb.py** — Searches for movie or TV show information on IMDb.
- **imgur.py** — Retrieves information about images or galleries from Imgur.
- **in.py** — Sets reminders based on time input.
- **ip_addresses.py** — Resolves IP addresses to hostnames and vice versa.
- **karma.py** — Tracks karma points for users in channels.
- **lastfm.py** — Fetches the last listened-to track information from a user's Last.fm profile.
- **location.py** — Retrieves location details using OpenCage API.
- **message_tracking.py** — Tracks and logs private messages with message IDs.
- **metadata.py** — Manages metadata for IRC messages.
- **mixed_unicode.py** — Detects scripts in Unicode text.
- **modules.py** — Reloads or loads modules dynamically.
- **nick_regain.py** — Ensures the bot regains its nickname if it changes during connection.
- **nickserv.py** — Identifies with NickServ using a password on connected servers.
- **nr.py** — Fetches train arrival and departure information from National Rail API.
- **perform.py** — Executes predefined commands at server connection.
- **pong.py** — Responds to ping messages with pong.
- **print_activity.py** — Prints various IRC events to the bot's log.
- **pronouns.py** — Manages user pronoun settings in channels.
- **quotes.py** — Manages and displays quotes from predefined categories.
- **random_number.py** — Generates random numbers within a specified range.
- **rest_api.py** — Provides an HTTP REST API for interacting with the bot.
- **resume.py** — Manages session resumption state upon server reconnection.
- **rot13.py** — Encodes and decodes text using ROT13 cipher.
- **sed.py** — Implements sed-like functionality to modify messages.