# Willie IRC Bot

**Category:** Standalone_Bot
**Original Author:** Elad Alfassa, Edward Powell

## Description
Willie is an IRC bot written in Python that can be configured to perform various tasks on an IRC network, such as responding to commands, managing channels, and fetching information from the internet.

## Key Features
- Responds to commands with predefined actions.
- Manages channel operations like joining, parting, and kicking users.
- Fetches data from the web using HTTP requests.
- Supports configuration through a structured file system.
- Implements various modules for specific functionalities such as weather, translation, and spell checking.

## File Analysis
- **conftest.py** — Lists files to be ignored by pytest.
- **pytest_run.py** — Runs pytest tests within the project directory.
- **setup.py** — Defines package metadata and dependencies for Willie.
- **makerpm.py** — Generates a RPM spec file for packaging Willie.
- **make.bat** — A batch script for Sphinx documentation generation.
- **conf.py** — Configuration settings for Sphinx documentation.
- **__init__.py** — Initializes the Willie bot module, setting up core functionality and version information.
- **bot.py** — Contains the main logic of the Willie bot, including IRC protocol handling and command processing.
- **config.py** — Manages configuration settings for Willie modules.
- **coretasks.py** — Defines core tasks and events handled by the Willie bot.
- **db.py** — Provides an interface for database operations within Willie modules.
- **irc.py** — Implements IRC protocol-related functionalities.
- **module.py** — Contains decorators and utility functions for defining Willie commands.
- **test_tools.py** — Offers classes and functions to assist in writing tests for Willie modules.
- **tools.py** — Includes miscellaneous tools and shortcuts used by Willie modules.
- **web.py** — Handles web-related interactions within Willie modules.
- **admin.py** — Manages administrative tasks such as joining channels and setting bot preferences.
- **adminchannel.py** — Provides functionality to manage channel permissions.
- **announce.py** — Sends announcements to all channels the bot is in.
- **bugzilla.py** — Retrieves information from Bugzilla issue trackers.
- **calc.py** — Performs mathematical calculations using Google's calculator API.
- **chanlogs.py** — Logs messages and actions in IRC channels.
- **clock.py** — Manages time-related functionalities, including clock displays and countdowns.
- **countdown.py** — Displays a countdown to a specified date.
- **currency.py** — Fetches currency exchange rates from the Bank of Canada's API.
- **dice.py** — Implements dice rolling functionality.
- **etymology.py** — Provides etymological information for words.
- **find.py** — Corrects spelling errors using sed-like notation.
- **github.py** — Interacts with GitHub repositories and issues.
- **help.py** — Displays help documentation for Willie commands.
- **ip.py** — Looks up IP addresses and geolocation data.
- **ipython.py** — Provides an interactive Python console within the bot.
- **isup.py** — Checks website availability using isup.me service.
- **lmgtfy.py** — Generates "Let me Google that for you" links.
- **meetbot.py** — Logs and manages meeting information in IRC channels.
- **movie.py** — Fetches movie details from IMDb.
- **ping.py** — Responds to greetings and pings with predefined messages.
- **radio.py** — Manages ShoutCAST radio streams.
- **rand.py** — Generates random numbers based on user input.
- **reddit-info.py** — Retrieves detailed information about Reddit posts.
- **reload.py** — Reloads Willie modules for administrative use.
- **remind.py** — Sets and manages reminders.
- **rss.py** — Fetches and displays RSS feed data.
- **search.py** — Searches the web using Google's AJAX API.
- **seen.py** — Tracks when users were last seen in IRC channels.
- **spellcheck.py** — Checks spelling 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 Unicode codepoint information.
- **units.py** — Converts units of measurement.
- **url.py** — Retrieves and formats titles from URLs.
- **version.py** — Manages versioning information for Willie.
- **weather.py** — Fetches weather data using Yahoo! Weather API.
- **wikipedia.py** — Provides Wikipedia search functionality.
- **wiktionary.py** — Offers definitions and translations from Wiktionary.
- **xkcd.py** — Retrieves XKCD comics and related information.
- **youtube.py** — Searches YouTube for videos.