# Willie IRC Bot

**Category:** Standalone_Bot
**Original Author:** Sean B. Palmer, Michael Yanovich, Edward Powell, Elad Alfassa

## Description
Willie is a standalone IRC bot written in Python that provides various functionalities such as command execution, web interaction, and module-based extensions.

## Key Features
- Supports Python 2.7+ (with some compatibility for Python 3)
- Manages configuration through `config.py` and `core_section.py`
- Provides core functionality via `bot.py`, `irc.py`, and `loader.py`
- Includes a wide range of modules for various tasks like calculations, weather checks, and web searches
- Supports command-line testing with `pytest_run.py`

## File Analysis
- **checkstyle.sh** — Runs PEP8 code style checks on Python files.
- **ci_build.sh** — Automates the build process for Willie using Travis CI-like steps.
- **conftest.py** — Ignores specific test files when running pytest.
- **pytest_run.py** — Executes tests with pytest and exits based on the result.
- **setup.py** — Manages package setup and distribution.
- **willie.py** — Main bot script that initializes Willie.
- **release.sh** — Handles the release process by building and uploading packages to PyPI.
- **update_db.py** — Migrates database from older versions to newer ones.
- **makerpm.py** — Generates RPM package for Willie.
- **make.bat** — Sphinx documentation build command file.
- **conf.py** — Configuration settings for Sphinx documentation.
- **test_db.py** — Tests the new database functionality.
- **test_trigger.py** — Tests message parsing and handling.
- **__init__.py** — Initializes core components of Willie.
- **bot.py** — Manages IRC bot operations, including command processing and event handling.
- **coretasks.py** — Defines core tasks for Willie's routine execution.
- **db.py** — Manages database interactions using SQLite.
- **formatting.py** — Provides IRC formatting utilities.
- **irc.py** — Implements basic IRC protocol interaction.
- **loader.py** — Loads and manages modules dynamically.
- **logger.py** — Handles logging to the IRC channel.
- **module.py** — Defines decorators for creating Willie callables.
- **web.py** — Manages HTTP requests and responses.
- **__init__.py** — Initializes configuration sections.
- **core_section.py** — Configures core settings like nick, host, SSL support.
- **types.py** — Provides types for section definitions in the config.
- **admin.py** — Admin module with features like auto-rejoining on kick.
- **adminchannel.py** — Manages channel-specific admin commands.
- **announce.py** — Sends announcements to all channels.
- **bugzilla.py** — Reports issues to Bugzilla instances.
- **calc.py** — Performs mathematical calculations.
- **clock.py** — Provides time-related functionalities.
- **countdown.py** — Counts down to a specified date.
- **currency.py** — Fetches currency exchange rates.
- **dice.py** — Implements dice rolling functionality.
- **etymology.py** — Retrieves etymological information.
- **find.py** — Corrects spelling errors using sed notation.
- **find_updates.py** — Checks for updates to Willie.
- **help.py** — Provides help documentation for commands.
- **ip.py** — Performs GeoIP lookups.
- **ipython.py** — Embeds an IPython console in the bot.
- **isup.py** — Checks website status using isup.me.
- **lmgtfy.py** — Generates Google search links.
- **meetbot.py** — Logs and manages meeting information.
- **movie.py** — Retrieves movie information from IMDb.
- **ping.py** — Responds to greetings and pings.
- **rand.py** — Generates random numbers.
- **reddit.py** — Provides Reddit-related functionalities.
- **reload.py** — Reloads modules for administration.
- **remind.py** — Manages reminders.
- **safety.py** — Alerts about potentially malicious URLs.
- **search.py** — Performs web searches.
- **seen.py** — Tracks when users were last seen.
- **spellcheck.py** — Provides spell-checking capabilities.
- **tell.py** — Manages tell and ask functionalities.
- **tld.py** — Retrieves information about top-level domains.
- **translate.py** — Translates text between languages.