# BitBot IRC Bot

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

## Description
BitBot is a Python-based IRC bot designed to automate various tasks on IRC networks. It includes features such as channel management, user interaction, and external service integration.

## Key Features
- **Automated Channel Management**: Manages channel modes and access levels.
- **User Interaction**: Responds to commands from users in channels.
- **External Service Integration**: Fetches data from services like Bitcoin rates and IMDb.
- **Event Handling**: Triggers actions based on IRC events such as joins, messages, and invites.

## File Analysis
- **start.py** — Entry point of the bot, sets up command-line arguments and loads modules.
- **8ball.py** — Implements a simple random response generator for "magic 8-ball" questions.
- **accept_invite.py** — Handles accepting channel invitations on behalf of the bot.
- **admin.py** — Provides administrative commands like changing nickname and sending raw IRC messages.
- **auto_mode.py** — Manages automatic channel modes based on user status.
- **badwords.py** — Detects and lists bad words in channels, allowing for moderation actions.
- **bitcoin.py** — Fetches Bitcoin exchange rates from an API.
- **books.py** — Searches for book information using Google Books API.
- **bot_channel.py** — Sets the main channel where the bot should join upon connection.
- **channel_access.py** — Manages access levels and permissions in channels.
- **channel_op.py** — Handles highlighting spam and protecting against it.
- **channel_save.py** — Saves autojoin settings for channels on server connect.
- **check_mode.py** — Checks channel modes based on predefined settings.
- **check_urls.py** — Automatically checks URLs for malicious content using VirusTotal API.
- **coins.py** — Implements a simple gambling system with betting and lottery features.
- **ctcp.py** — Responds to CTCP (Client-to-Client Protocol) requests.
- **database_backup.py** — Backups the database at regular intervals.
- **define.py** — Provides definitions for words using Wordnik API.
- **dice.py** — Rolls dice based on user input.
- **ducks.py** — Tracks and displays ducks in channels, with kick-on-no-ducks feature.
- **eval_lua.py** — Evaluates Lua code snippets provided by users.
- **eval_python.py** — Evaluates Python code snippets using an online service.
- **eval_rust.py** — Evaluates Rust code snippets using an online playground.
- **factoids.py** — Stores and retrieves factoids for quick reference.
- **google.py** — Searches Google for a given query.
- **greeting.py** — Sends a greeting message to users when they join a channel.
- **hash.py** — Hashes strings using various algorithms.
- **ids.py** — Displays user and channel IDs.
- **imdb.py** — Fetches information about movies or TV shows from IMDb API.
- **imgur.py** — Shortens URLs using the is.gd service.
- **in.py** — Sets reminders for users.
- **ip_addresses.py** — Resolves IP addresses to hostnames and vice versa.
- **isgd.py** — Provides a shortlink service for URLs.
- **karma.py** — Tracks karma points for users in channels.
- **lastfm.py** — Retrieves last listened tracks from Last.fm accounts.
- **message_tracking.py** — Tracks private messages and notifications.
- **mixed_unicode.py** — Detects script changes in text.
- **modules.py** — Manages loading and unloading of modules.
- **nick_regain.py** — Ensures the bot regains its nickname after a disconnect.
- **nickserv.py** — Authenticates with NickServ on server connection.
- **nr.py** — Provides train arrival information using the National Rail API.
- **perform.py** — Executes commands stored in the server settings upon connection.
- **pong.py** — Responds to `ping` messages with `Pong`.
- **print_activity.py** — Prints IRC activity logs.
- **quit.py** — Sends a random quote when quitting.
- **quotes.py** — Manages and retrieves quotes for channels.
- **random_number.py** — Generates random numbers based on user input.
- **rest_api.py** — Provides an HTTP REST API for interacting with the bot.
- **resume.py** — Handles resuming state after disconnection.
- **rot13.py** — Encodes/decodes text using ROT13 cipher.
- **sed.py** — Replaces patterns in messages based on user input.
- **seen.py** — Tracks when users were last seen in channels.
- **set.py** — Manages channel settings and adds to them.
- **shakespeare.py** — Generates insults in Shakespearean English.
- **signals.py** — Handles bot shutdown with a random quote.
- **soundcloud.py** — Searches SoundCloud for tracks or profiles.
- **spotify.py** — Fetches information about music from Spotify API.
- **stats.py** — Provides uptime and statistics about the bot's operation.
- **strax.py** — Suggests battle strategies in a fictional context.