# Willie IRC Bot

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

## Description
Willie is a standalone IRC bot written in Python that provides various utilities and services to IRC channels. It can handle commands, automate tasks, and interact with users through text-based interactions.

## Key Features
- Handles IRC protocol events such as JOIN, PART, KICK, and PRIVMSG.
- Supports command-line testing via `pytest_run.py`.
- Manages configuration settings for different modules.
- Provides a variety of plugins (modules) that offer functionalities like weather checks, spell checking, and more.
- Can be configured to run as a service using `willie.service`.

## File Analysis
- **pytest_run.py** — Script for running pytest tests from the command line.
- **setup.py** — Python package setup configuration file.
- **willie.py** — Main bot script that initializes Willie and runs its core functionalities.
- **makerpm.py** — Script to create a RPM package for distribution.
- **make.bat** — Batch script for Sphinx documentation generation.
- **conf.py** — Configuration file for Sphinx documentation build.
- **__init__.py** — Initialization module for Willie's core functionalities.
- **bot.py** — Contains the main bot class and its methods.
- **config.py** — Config class abstraction for accessing configuration files.
- **coretasks.py** — Handles various core tasks like startup messages.
- **db.py** — Database interface for Willie modules.
- **icao.py** — Provides ICAO (International Civil Aviation Organization) codes data.
- **irc.py** — Utility IRC bot with protocol handling and socket communication.
- **module.py** — Decorators and tools for defining Willie commands and events.
- **test_tools.py** — Classes and functions to help in writing tests.
- **tools.py** — Miscellaneous tools and shortcuts for use in Willie modules.
- **web.py** — Web-related functions for interaction with web applications or websites.
- **admin.py** — Admin module for managing bot operations.
- **adminchannel.py** — Admin channel management plugin.
- **announce.py** — Sends announcements to all channels the bot is in.
- **bugzilla.py** — Module for interacting with Bugzilla issue trackers.
- **calc.py** — Calculator module that performs basic math and conversions.
- **clock.py** — Provides current time information based on different time zones.
- **countdown.py** — Displays a countdown to a given date.
- **dice.py** — Dice rolling module.
- **etymology.py** — Module for etymological information lookup.
- **find.py** — Spelling correction and error fixing using sed notation.
- **github.py** — GitHub interaction plugin.
- **help.py** — Documentation retrieval and command help system.
- **ip.py** — IP address look-up module.
- **isup.py** — Website status checker with isup.me.
- **lmgtfy.py** — Module to generate "Let me Google that for you" links.
- **meetbot.py** — Meeting logging and management plugin.
- **movie.py** — Movie information retrieval using IMDb API.
- **ping.py** — Greeting and interjection handling module.
- **radio.py** — ShoutCAST radio stream monitoring and control.
- **rand.py** — Random number generation module.
- **reddit-info.py** — Module for detailed Reddit post information.
- **reload.py** — Module reloader for bot administration.
- **remind.py** — Reminder management system.
- **rss.py** — RSS feed monitoring and management plugin.
- **search.py** — Web search functionality using Google AJAX API.
- **seen.py** — Tracks when users were last seen in a channel.
- **spellcheck.py** — Spell checking module.
- **tell.py** — Tell and ask message system.
- **tld.py** — Top-level domain information retrieval.
- **translate.py** — Translation functionality using Google Translate API.
- **unicode_info.py** — Codepoint lookup and information.
- **units.py** — Unit conversion utilities.
- **url.py** — URL title fetching module.
- **version.py** — Displays the version of Willie running in a git repository.
- **weather.py** — Yahoo! Weather module for weather updates.
- **wikipedia.py** — Wikipedia search functionality.
- **wiktionary.py** — Wiktionary lookup and definition retrieval.
- **xkcd.py** — XKCD comic fetching module.
- **youtube.py** — YouTube video search and information retrieval.