# BitBot IRC Bot

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

## Description
BitBot is a modular event-driven IRC bot written in Python that provides various functionalities such as command handling, channel management, user interactions, and more.

## Key Features
- **Modular Architecture**: BitBot consists of multiple modules that can be enabled or disabled independently.
- **Command Handling**: Supports commands for actions like echoing messages, rolling dice, searching the web, and more.
- **Channel Management**: Manages channel settings such as joining channels on connect, accepting invites, and handling kicks.
- **User Interaction**: Provides features like karma tracking, factoids, and user-specific settings.
- **Automations**: Automates tasks like joining channels from a configuration file, managing nicknames, and more.

## File Analysis
- **setup.py** — Sets up the bot with necessary dependencies and configurations.
- **v01.16.00-aliases.py** — Migrates aliases from previous versions to v1.16.0.
- **v01.16.00-karma.py** — Migrates karma settings from previous versions to v1.16.0.
- **accept_invite.py** — Handles accepting invites on connected servers.
- **acronym.py** — Provides a command for finding possible meanings of acronyms.
- **badges.py** — Manages user badges and date parsing.
- **badwords.py** — Lists and adds bad words to the channel settings.
- **birthday.py** — Tracks birthdays in channels.
- **bitcoin.py** — Fetches Bitcoin exchange rates.
- **bot_channel.py** — Sets a default bot channel on server connect.
- **botlist.py** — Responds to specific commands with predefined messages.
- **channel_op.py** — Manages channel operations like kicking and banning users.
- **channel_save.py** — Saves channels to join upon connecting to the server.
- **check_certificate.py** — Checks the validity of the bot's TLS certificate.
- **coins.py** — Implements a simple gambling system with betting and lotteries.
- **command_suggestions.py** — Provides command suggestions based on user input.
- **define.py** — Fetches definitions from Wordnik API.
- **dice.py** — Rolls dice in a DND-style format.
- **duckduckgo.py** — Searches DuckDuckGo for the first result of a given query.
- **ducks.py** — Spawns ducks in channels based on user messages.
- **echo.py** — Echoes and performs actions like /me messages.
- **eightball.py** — Provides random answers to yes/no questions.
- **eval_lua.py** — Evaluates Lua code through an external service.
- **eval_python.py** — Evaluates Python code through an external service.
- **factoids.py** — Manages factoid entries and settings.
- **github.py** — Fetches information from GitHub repositories.
- **google.py** — Searches Google for the first result of a given query.
- **greeting.py** — Sends greetings to users when they join channels.
- **hash.py** — Hashes strings using various algorithms.
- **healthcheck.py** — Performs health checks on specified URLs.
- **highlight_spam.py** — Protects against highlight spam in channels.
- **ids.py** — Provides user and channel IDs.
- **imdb.py** — Searches for movie or TV show information from IMDb.
- **imgur.py** — Retrieves image details from Imgur.
- **in.py** — Sets reminders based on time intervals.
- **info.py** — Displays version and other bot-related information.
- **ip_addresses.py** — Resolves IP addresses and provides geolocation data.
- **ircv3.py** — Manages IRCv3 capabilities and statistics.
- **ircv3_botignore.py** — Ignores specific messages based on IRCv3 tags.
- **ircv3_multiline.py** — Handles multiline messages in IRCv3.
- **ircv3_resume.py** — Manages resume tokens for reconnecting.
- **ircv3_typing.py** — Implements typing indicators using IRCv3.
- **isup.py** — Checks if a given URL is up or down.
- **karma.py** — Tracks and manages karma points in channels.
- **kick-rejoin.py** — Rejoins channels after being kicked.
- **lastfm.py** — Retrieves last listened to tracks from Last.fm.
- **location.py** — Sets and retrieves user locations using OpenCagedata API.
- **markov.py** — Generates text based on Markov chains.
- **message_filter.py** — Filters messages in channels.
- **mumble.py** — Provides statistics for Mumble servers.
- **nickserv.py** — Manages NickServ identification on connected servers.
- **nr.py** — Fetches train information from the National Rail API.
- **onionoo.py** — Retrieves Tor relay details using Onionoo API.
- **ops.py** — Alerts all online channel ops with a command.
- **pong.py** — Responds to ping commands.
- **pronouns.py** — Manages user pronoun settings.
- **quotes.py** — Manages and retrieves quotes in channels.
- **random_number.py** — Provides random numbers or coin flips.
- **relay.py** — Relays channel events based on configuration.
- **rest_api.py** — Exposes a REST API for various bot functionalities.