# Sopel IRC Bot

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

## Description
Sopel is a standalone IRC bot written in Python that provides various features such as command execution, event handling, and module loading to interact with IRC channels.

## Key Features
- Runs unattended with commands triggered by nicknames or prefixes.
- Implements an access/user-level system for managing permissions.
- Loads modules dynamically from the filesystem.
- Provides a wide range of functionality through loaded plugins including calculations, web searches, reminders, and more.

## File Analysis
- **checkstyle.sh** — Script to check Python code style using `pep8`.
- **ci_build.sh** — Build script for running tests and code checks.
- **conftest.py** — Configuration file for pytest to ignore certain files during testing.
- **pytest_run.py** — Script used to run pytest from the command line.
- **setup.py** — Setup script for packaging and distributing Sopel using setuptools.
- **sopel.py** — Entry point of the bot, runs the main logic.
- **release.sh** — Script for releasing a new version of Sopel by building and uploading to PyPI.
- **update_db.py** — Migration script for updating database schema from 3.x/4.x versions to 5.0.
- **makerpm.py** — Script to create an RPM package for Sopel.
- **make.bat** — Batch file for Sphinx documentation build.
- **conf.py** — Configuration file for Sphinx documentation generation.
- **__init__.py** — Initialization module for the bot, defining version and basic setup.
- **bot.py** — Core functionality of the IRC bot, handling connections, commands, and events.
- **coretasks.py** — Contains core tasks for handling standard IRC codes.
- **db.py** — Database management module using SQLite.
- **formatting.py** — Provides functions to apply IRC formatting to text.
- **irc.py** — Utility IRC bot with protocol-related features.
- **loader.py** — Module loader and configuration system.
- **logger.py** — Logging handler for the bot, sending logs to an IRC channel.
- **module.py** — Decorators and utility functions for defining commands and events.
- **run_script.py** — Entry point script for running Sopel from command line.
- **test_tools.py** — Classes and functions for testing modules.
- **trigger.py** — Trigger handling and message parsing.
- **web.py** — Web-related utilities for interacting with websites.
- **admin.py** — Administration module for managing bot settings.
- **adminchannel.py** — Channel management commands.
- **announce.py** — Sends an announcement to all channels the bot is in.
- **bugzilla.py** — Bug reporting and issue tracking.
- **calc.py** — Calculator functionality.
- **clock.py** — Time-related commands.
- **countdown.py** — Countdown timer.
- **currency.py** — Currency exchange rate module.
- **dice.py** — Dice rolling functionality.
- **etymology.py** — Etymology lookup.
- **find.py** — Spelling correction and suggestion.
- **find_updates.py** — Module for checking for new versions of Sopel.
- **help.py** — Command documentation and help system.
- **ip.py** — GeoIP lookups.
- **ipython.py** — Interactive Python console.
- **isup.py** — Website status checker.
- **lmgtfy.py** — "Let me Google that for you" module.
- **meetbot.py** — Meeting logging functionality.
- **movie.py** — Movie information lookup.
- **ping.py** — Greeting and interjection handling.
- **rand.py** — Random number generation.
- **reddit.py** — Reddit-related commands.
- **reload.py** — Module reloader for admins.
- **remind.py** — Reminder functionality.
- **safety.py** — Malicious URL detection.
- **search.py** — Web search capabilities.
- **seen.py** — Tracks when users were last seen.
- **spellcheck.py** — Spell checking and suggestions.
- **tell.py** — Tell and ask module for private messages.
- **tld.py** — Top-level domain information.
- **translate.py** — Translation functionality.
- **unicode_info.py** — Unicode codepoint lookup.