# Sopel IRC Bot

**Category:** Standalone_Bot
**Original Author:** Sean B. Palmer, Elsie Powell, Ari Koivula, et al.

## Description
Sopel is a versatile IRC bot written in Python that provides a wide range of functionality including command execution, channel management, and web interaction through its modules.

## Key Features
- **Command Execution**: Supports various commands for interacting with the IRC network.
- **Channel Management**: Automatically joins channels, manages users, and performs actions like kicking or banning.
- **Web Interaction**: Fetches data from external APIs such as Reddit and IMDB.
- **Module System**: Extensible through a plugin system that allows adding new functionality.

## File Analysis
- **checkstyle.sh** — Script for checking Python source files.
- **ci_build.sh** — Build script for testing Sopel on both Python 2.7 and 3.x.
- **conftest.py** — Configuration file for pytest to ignore certain test files.
- **pytest_run.py** — Script used to run tests using `pytest`.
- **setup.py** — Setup configuration for packaging and distributing Sopel.
- **sopel.py** — Entry point script that runs the bot.
- **release.sh** — Script for releasing a new version of Sopel.
- **update_db.py** — Database migration script to update database schema.
- **makerpm.py** — Script to create RPM packages for distribution.
- **make.bat** — Batch file for Sphinx documentation build.
- **conf.py** — Configuration file for Sphinx documentation generation.
- **__init__.py** — Initializes the bot and sets up its environment.
- **bot.py** — Core functionality of the bot, handling IRC events and commands.
- **coretasks.py** — Tasks that run in the background to support core functionality.
- **db.py** — Database management module for storing and retrieving data.
- **formatting.py** — Provides functions for applying IRC formatting to text.
- **irc.py** — IRC protocol implementation, handling network communication.
- **loader.py** — Module loader responsible for loading plugins dynamically.
- **logger.py** — Logging system for the bot.
- **module.py** — Decorators and tools for creating callable plugin functions.
- **run_script.py** — Entry point script to run Sopel with command-line arguments.
- **test_tools.py** — Classes and functions used in testing modules.
- **trigger.py** — Trigger handling, parsing incoming IRC messages.
- **web.py** — Web-related functionality for interacting with web applications.
- **admin.py** — Admin module providing commands for bot management.
- **adminchannel.py** — Module for managing administrative channels.
- **announce.py** — Sends an announcement to all channels the bot is in.
- **bugzilla.py** — Bug reporting and tracking module using Bugzilla.
- **calc.py** — Calculator module for performing arithmetic operations.
- **clock.py** — Time-related commands, including countdowns.
- **currency.py** — Currency conversion functionality.
- **dice.py** — Dice rolling and probability simulation.
- **etymology.py** — Etymology lookup module.
- **find.py** — Spell correction and text fixing module.
- **find_updates.py** — Module for checking for new versions of Sopel.
- **help.py** — Documentation and help command module.
- **ip.py** — GeoIP lookup functionality.
- **ipython.py** — Interactive IPython console integration.
- **isup.py** — Website status checker using isup.me.
- **lmgtfy.py** — Let me Google that for you module.
- **meetbot.py** — Meeting logging and management module.
- **movie.py** — Movie information lookup using IMDb API.
- **ping.py** — Greeting and interjection handling.
- **rand.py** — Random number generation module.
- **reddit.py** — Reddit-related commands, including fetching posts.
- **reload.py** — Module reloader for development purposes.
- **remind.py** — Reminder management functionality.
- **safety.py** — Malicious URL detection and alerting.
- **search.py** — Web search functionality using Bing API.
- **seen.py** — Tracks when users were last seen in the channel.
- **spellcheck.py** — Spell checking module.
- **tell.py** — Tell and ask functionality for private messages.
- **tld.py** — Top-level domain information lookup.
- **translate.py** — Translation module using external APIs.
- **unicode_info.py** — Unicode codepoint lookup.