# Willie IRC Bot

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

## Description
Willie is a lightweight, open-source IRC bot written in Python that provides various utilities and services to the channels it joins.

## Key Features
- **Commands and Modules**: Willie supports over 40 modules for different functionalities such as weather checks, Wikipedia lookups, random number generation, and more.
- **Configuration Management**: It uses a configuration system to manage settings like database preferences and IRC server details.
- **Event Handling**: Willie can handle various IRC events including joins, parts, kicks, and messages.

## File Analysis
- **conftest.py** — Excludes certain files from pytest testing.
- **pytest_run.py** — Script for running tests using pytest.
- **setup.py** — Python package setup script to install the bot.
- **willie.py** — Main entry point of Willie, handling command-line arguments and initialization.
- **makerpm.py** — Script for creating a RPM package.
- **make.bat** — Batch file for Sphinx documentation build.
- **conf.py** — Configuration settings for generating Sphinx documentation.
- **__init__.py** — Initialization module defining core functions and classes.
- **bot.py** — Core bot functionality, handling IRC protocol interactions.
- **config.py** — Configuration class to manage Willie's configuration.
- **coretasks.py** — Contains routines for handling standard IRC events.
- **db.py** — Database interface for storing preferences and settings.
- **irc.py** — Implements the IRC client functionality.
- **module.py** — Decorators and utility functions for defining commands and modules.
- **test_tools.py** — Tools for testing Willie's modules.
- **tools.py** — Miscellaneous tools and shortcuts used in Willie modules.
- **web.py** — Web-related functions for interacting with web applications.
- **admin.py** — Admin module for managing bot operations.
- **adminchannel.py** — Module to manage administrative channels and users.
- **announce.py** — Sends an announcement to all channels the bot is in.
- **bugzilla.py** — Interface with Bugzilla issue trackers.
- **calc.py** — Calculator module using Google's calculator API.
- **clock.py** — Provides time-related functionalities.
- **countdown.py** — Counts down to a specified date.
- **currency.py** — Currency exchange rate lookup.
- **dice.py** — Dice rolling module.
- **etymology.py** — Etymology lookups.
- **find.py** — Spell check and correction module.
- **github.py** — Interface with GitHub repositories.
- **help.py** — Documentation retrieval for Willie commands.
- **ip.py** — IP address lookup using GeoIP databases.
- **isup.py** — Website status checker.
- **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 interjection handling.
- **radio.py** — Shoutcast radio stream monitoring.
- **rand.py** — Random number generation.
- **reddit-info.py** — Reddit post information retrieval.
- **reload.py** — Module reloader for bot administration.
- **remind.py** — Reminder management functionality.
- **rss.py** — RSS feed monitoring and notification.
- **search.py** — Web search using Google's AJAX API.
- **seen.py** — Tracks when users were last seen in a channel.
- **spellcheck.py** — Spell check module.
- **tell.py** — Tell and ask functionality for private messages.
- **tld.py** — Top-level domain information retrieval.
- **translate.py** — Translation between different languages.
- **unicode_info.py** — Codepoint lookup utility.
- **units.py** — Unit conversion tool.
- **url.py** — URL title extraction.
- **version.py** — Version and commit information management.
- **weather.py** — Weather information retrieval from Yahoo!
- **wikipedia.py** — Wikipedia article retrieval.
- **wiktionary.py** — Wiktionary definition lookup.
- **xkcd.py** — XKCD comic fetching.
- **youtube.py** — YouTube video search.