# Willie IRC Bot

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

## Description
Willie is a standalone IRC bot written in Python that provides various commands and functionalities to interact with IRC channels.

## Key Features
- Provides core IRC functionality such as joining channels, sending messages, and handling events.
- Supports command-based interactions through `.cmd` and `!cmd`.
- Manages user permissions and access levels.
- Implements a database system for storing configuration and state information.
- Offers modules for various functionalities like weather checks, random number generation, and web searches.

## File Analysis
- **checkstyle.sh** — Script to check code style using PEP8.
- **ci_build.sh** — CI build script for running tests and ensuring the bot is functional across different Python versions.
- **conftest.py** — Pytest configuration file used to ignore certain test files.
- **pytest_run.py** — Entry point for running pytest with Willie-specific configurations.
- **setup.py** — Setup script for installing Willie using setuptools.
- **willie.py** — Main bot entry point, handling command-line arguments and starting the bot.
- **update_db.py** — Script to update database schema from older versions to newer ones.
- **makerpm.py** — Script to create a RPM package for distributing Willie on Red Hat-based systems.
- **make.bat** — Windows batch file for building documentation using Sphinx.
- **conf.py** — Configuration file for Sphinx documentation generation.
- **test_db.py** — Test suite for the database functionality.
- **test_trigger.py** — Test suite for message parsing and handling.
- **__init__.py** — Initialization module for Willie, containing core functionalities.
- **bot.py** — IRC bot implementation with event handling and command processing.
- **config.py** — Configuration class for accessing Willie's configuration file.
- **coretasks.py** — Core tasks and routines for the Willie bot.
- **db.py** — Database management module for Willie.
- **formatting.py** — Module for applying IRC formatting to text.
- **irc.py** — IRC protocol implementation with various utility functions.
- **logger.py** — Logging handler for logging messages to an IRC channel.
- **module.py** — Decorators and tools for defining Willie modules.
- **web.py** — Web-related functions for interacting with web applications or websites.
- **admin.py** — Administration module for managing bot operations.
- **adminchannel.py** — Module for handling administrative channels.
- **announce.py** — Module for sending announcements to all channels.
- **bugzilla.py** — Bug tracking and management module using Bugzilla.
- **calc.py** — Calculator module for performing arithmetic operations.
- **chanlogs.py** — Channel logging module for recording channel activities.
- **clock.py** — Time and date functionality module.
- **countdown.py** — Countdown timer module.
- **currency.py** — Currency conversion module using Bank of Canada data.
- **dice.py** — Dice rolling module.
- **etymology.py** — Etymology lookup module.
- **find.py** — Spelling correction and suggestion module.
- **find_updates.py** — Module for checking for new Willie versions.
- **github.py** — GitHub interaction module.
- **help.py** — Help and documentation module.
- **ip.py** — IP address lookup module using GeoIP database.
- **ipython.py** — Interactive Python console module.
- **isup.py** — Website status check module.
- **lmgtfy.py** — Let me Google that for you module.
- **meetbot.py** — Meeting logging and management module.
- **movie.py** — Movie information lookup module using IMDb API.
- **ping.py** — Greeting and rudeness handling module.
- **radio.py** — ShoutCAST radio stream monitoring module.
- **rand.py** — Random number generation module.
- **reddit.py** — Reddit interaction and information module.
- **reload.py** — Module reloader for bot administration.
- **remind.py** — Reminder management module.
- **rss.py** — RSS feed handling and notification module.
- **safety.py** — URL safety check module using VirusTotal API.
- **search.py** — Web search functionality module.
- **seen.py** — User activity tracking module.
- **spellcheck.py** — Spell checking and suggestion module.
- **tell.py** — Tell and ask message management module.
- **tld.py** — Top Level Domain information lookup module.