# Willie IRC Bot

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

## Description
Willie is a lightweight, open-source IRC bot written in Python. It provides a wide range of features including command handling, event processing, and module support for extending functionality.

## Key Features
- Runs unattended with command triggers (!cmd/.cmd)
- Implements an access/user-level system for managing permissions
- Supports text/JOIN/KICK/OP automation
- Extensible via modules written in Python

## File Analysis
- **pytest_run.py** — Script for running pytest from the command line.
- **setup.py** — Configuration and packaging script for distributing Willie.
- **willie.py** — Main bot entry point, initializes core functionality.
- **makerpm.py** — Script to create RPM packages for distribution.
- **make.bat** — Batch file for Sphinx documentation generation.
- **conf.py** — Configuration settings for Sphinx documentation build.
- **__init__.py** — Initialization module defining Willie's core tasks.
- **bot.py** — Bot class implementing IRC protocol handling and command processing.
- **config.py** — Configuration abstraction layer for accessing bot settings.
- **coretasks.py** — Core task definitions for handling standard IRC events.
- **db.py** — Database interface for storing preferences and data.
- **icao.py** — Contains ICAO codes and their geographical coordinates.
- **irc.py** — Utility functions and classes for IRC protocol interaction.
- **module.py** — Decorators and utilities for defining bot commands and events.
- **test_tools.py** — Classes and functions to assist in writing tests.
- **tools.py** — Miscellaneous tools and shortcuts used by Willie modules.
- **web.py** — Web-related utility functions for interacting with web applications.
- **admin.py** — Module for administrative tasks such as joining channels.
- **adminchannel.py** — Provides commands to manage channel permissions.
- **announce.py** — Sends an announcement to all channels the bot is in.
- **bugzilla.py** — Interface to Bugzilla issue trackers.
- **calc.py** — Performs simple mathematical calculations using Google's calculator API.
- **clock.py** — Displays current time for a specified timezone.
- **countdown.py** — Counts down to a specific date.
- **dice.py** — Rolls dice and provides results based on user input.
- **etymology.py** — Provides etymological information about words.
- **find.py** — Collects spelling corrections from channel logs.
- **github.py** — Interacts with GitHub repositories using OAuth tokens.
- **help.py** — Displays documentation for Willie commands.
- **ip.py** — Looks up IP addresses and their geographical locations.
- **isup.py** — Checks if a website is up using isup.me service.
- **lmgtfy.py** — Generates Google search links based on user input.
- **meetbot.py** — Logs meeting information to files or web servers.
- **movie.py** — Retrieves movie information from IMDb API.
- **ping.py** — Responds with greetings and interjections.
- **radio.py** — Manages ShoutCAST radio streams.
- **rand.py** — Generates random numbers based on user input.
- **reddit-info.py** — Provides detailed information about Reddit posts.
- **reload.py** — Reloads Willie modules for admin use.
- **remind.py** — Manages reminders and notifications.
- **rss.py** — Fetches and displays RSS feed updates.
- **search.py** — Performs web searches using Google's AJAX API.
- **seen.py** — Tracks when users were last seen in the channel.
- **spellcheck.py** — Checks spelling of words and provides suggestions.
- **tell.py** — Manages private messages between users.
- **tld.py** — Provides information about top-level domains.
- **translate.py** — Translates text using Google Translate API.
- **unicode_info.py** — Displays information about Unicode code points.
- **units.py** — Converts units of measurement.
- **url.py** — Retrieves and displays titles from URLs.
- **version.py** — Displays the version number of Willie.
- **weather.py** — Fetches weather updates using Yahoo! Weather API.
- **wikipedia.py** — Provides information from Wikipedia.
- **wiktionary.py** — Offers definitions and translations from Wiktionary.
- **xkcd.py** — Retrieves XKCD comics or related information.
- **youtube.py** — Searches for YouTube videos.