# Willie IRC Bot

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

## Description
Willie is a standalone IRC bot that can be configured to perform various tasks such as responding to commands, managing channels, and providing information.

## Key Features
- Responds to commands with predefined actions.
- Manages channel operations like joining, parting, and kicking users.
- Provides information and performs calculations.
- Supports configuration through a `.ini` file.

## File Analysis
- **checkstyle.sh —** A script for running PEP8 code style checks on Python files.
- **conftest.py —** Ignores certain files when using pytest.
- **pytest_run.py —** Runs pytest from the command line, adding the project directory to `sys.path`.
- **setup.py —** Manages package installation and configuration details.
- **willie.py —** The main bot file containing initialization logic and core functionality.
- **makerpm.py —** Generates a RPM spec file for packaging Willie as an RPM.
- **make.bat —** A batch script to build documentation using Sphinx.
- **conf.py —** Configuration file for Sphinx documentation.
- **test_db.py —** Tests the database functionality of Willie.
- **__init__.py —** Initialization module containing core bot tasks and configuration.
- **bot.py —** Contains IRC bot logic, including event handling and command processing.
- **config.py —** Bot configuration management.
- **coretasks.py —** Core tasks for the bot, such as handling IRC events.
- **db.py —** Database functionality for Willie.
- **formatting.py —** Provides formatting functions for text output.
- **irc.py —** IRC protocol related utilities and classes.
- **logger.py —** Logging handler for logging to an IRC channel.
- **module.py —** Decorators and tools for defining bot commands.
- **web.py —** Web-related functionality, including HTTP requests.
- **admin.py —** Administration module for managing the bot.
- **adminchannel.py —** Provides administrative functions for specific channels.
- **announce.py —** Sends an announcement to all channels.
- **bugzilla.py —** Integrates with Bugzilla issue trackers.
- **calc.py —** Performs basic calculations.
- **chanlogs.py —** Logs channel events.
- **clock.py —** Displays the current time in a specified timezone.
- **countdown.py —** Counts down to a specific date.
- **currency.py —** Provides currency exchange rate information.
- **dice.py —** Dice rolling functionality.
- **etymology.py —** Provides etymological information for words.
- **find.py —** Corrects spelling errors using sed notation.
- **find_updates.py —** Checks for updates to Willie.
- **github.py —** Interacts with GitHub repositories.
- **help.py —** Provides help and documentation commands.
- **ip.py —** Performs IP lookups using GeoIP databases.
- **ipython.py —** Embeds an IPython console in the bot.
- **isup.py —** Checks if a website is up using isup.me.
- **lmgtfy.py —** Generates Google search links.
- **meetbot.py —** Logs meeting information to channels.
- **movie.py —** Provides movie information from IMDb.
- **ping.py —** Responds to greetings and pings.
- **radio.py —** Manages ShoutCAST radio streams.
- **rand.py —** Generates random numbers.
- **reddit.py —** Retrieves information about Reddit posts.
- **reload.py —** Reloads modules for admin use.
- **remind.py —** Sets reminders for users.
- **rss.py —** Fetches and displays RSS feeds.
- **safety.py —** Alerts about potentially malicious URLs.
- **search.py —** Performs web searches using Bing.
- **seen.py —** Tracks when users were last seen in channels.
- **spellcheck.py —** Checks spelling of words.
- **tell.py —** Manages private messages and asks.
- **tld.py —** Provides information about top-level domains.
- **translate.py —** Translates text between languages.
- **unicode_info.py —** Displays Unicode codepoints.
- **units.py —** Converts units of measurement.