# 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 a wide range of functionalities including administrative tasks, general information retrieval, and interactive commands for users.

## Key Features
- **Commands and Modules**: Extensive command set with over 50 modules providing various functions such as calculations, web searches, reminders, and more.
- **Configuration Management**: Supports configuration through `config.py` allowing customization of bot behavior.
- **Event Handling**: Handles IRC events like JOIN, PART, PRIVMSG for automated responses and actions.
- **Database Support**: Uses SQLite database for storing user data and configurations.
- **Web Integration**: Can fetch web content using the `web` module.

## File Analysis
- **checkstyle.sh** — Script to check code style with PEP8.
- **ci_build.sh** — Build script for continuous integration.
- **conftest.py** — Pytest configuration file for testing Willie modules.
- **pytest_run.py** — Entry point for running tests using pytest.
- **setup.py** — Setup script for packaging and distributing Willie.
- **release.sh** — Script to release a new version of Willie.
- **update_db.py** — Database migration script for updating 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.
- **test_db.py** — Test suite for the database functionality.
- **test_trigger.py** — Test suite for message parsing and handling.
- **__init__.py** — Initialization module containing core bot functions.
- **bot.py** — Main bot logic including IRC connection, event handling, and command processing.
- **config.py** — Configuration class for accessing Willie's configuration file.
- **coretasks.py** — Core tasks and routines for the bot.
- **db.py** — Database interaction and management.
- **formatting.py** — Functions to apply IRC formatting to text.
- **irc.py** — Utility functions for handling IRC protocol interactions.
- **logger.py** — Logging functionality using custom IrcLoggingHandler.
- **module.py** — Decorators and tools for defining Willie modules.
- **test_tools.py** — Classes and functions for testing Willie modules.
- **tools.py** — Miscellaneous tools and shortcuts used in Willie modules.
- **trigger.py** — PreTrigger class for parsing IRC messages.
- **web.py** — Functions for interacting with web applications or websites.
- **admin.py** — Admin module providing commands like `join` and `kick`.
- **adminchannel.py** — Module for managing administrative channels.
- **announce.py** — Sends announcements to all channels the bot is in.
- **bugzilla.py** — Bug tracking module using Bugzilla.
- **calc.py** — Calculator functionality.
- **chanlogs.py** — Logs channel events like messages, joins, and parts.
- **clock.py** — Provides current time and date information.
- **countdown.py** — Displays countdowns to given dates.
- **currency.py** — Currency exchange rate module.
- **dice.py** — Dice rolling functionality.
- **etymology.py** — Etymology lookup module.
- **find.py** — Spelling correction using sed notation.
- **find_updates.py** — Checks for new Willie versions.
- **github.py** — Github interaction and issue tracking.
- **help.py** — Help command to provide information about other commands.
- **ip.py** — IP address lookup functionality.
- **ipython.py** — Interactive Python console within the bot.
- **isup.py** — Website status checker using isup.me.
- **lmgtfy.py** — "Let me Google that for you" module.
- **meetbot.py** — Meeting logging and management.
- **movie.py** — Movie information retrieval from IMDb.
- **ping.py** — Greeting and rude responses.
- **radio.py** — ShoutCAST radio stream monitoring.
- **rand.py** — Random number generation.
- **reddit.py** — Reddit module for detailed post info.
- **reload.py** — Module reloader for bot administration.
- **remind.py** — Reminder functionality.
- **rss.py** — RSS feed management and notification.
- **safety.py** — Malicious URL detection using VirusTotal.
- **search.py** — Web search capabilities.
- **seen.py** — Tracks when users were last seen.
- **spellcheck.py** — Spell check module.
- **tell.py** — Tell and ask functionality.