# Willie IRC Bot

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

## Description
Willie is a standalone IRC bot written in Python that provides various functionalities such as command execution, channel management, and web interaction.

## Key Features
- Runs unattended with command triggers (`!cmd/.cmd`)
- Implements an access/user-level system for managing permissions
- Manages text, join, kick, and op automation
- Supports web interactions through HTTP GET, POST, and HEAD methods

## File Analysis
- **checkstyle.sh —** Script for running PEP8 code style checks.
- **ci_build.sh —** Script for building the bot using Travis CI.
- **conftest.py —** Configuration file for pytest to ignore certain files during testing.
- **pytest_run.py —** Script for running tests using `pytest`.
- **setup.py —** Setup script for packaging and distributing Willie.
- **willie.py —** Main entry point of the bot, handling initialization and command execution.
- **release.sh —** Script for releasing a new version of Willie to PyPI and building documentation.
- **update_db.py —** Migration script for updating database schema.
- **makerpm.py —** Script for creating RPM packages.
- **make.bat —** Batch file for Sphinx documentation build.
- **conf.py —** Configuration file for Sphinx documentation.
- **test_db.py —** Test suite for the bot's database functionality.
- **test_trigger.py —** Test suite for message parsing and handling.
- **__init__.py —** Initialization module for Willie, containing version information and core imports.
- **bot.py —** Core IRC bot implementation with event handling and command processing.
- **coretasks.py —** Module for defining core tasks and routines.
- **db.py —** Database management module using SQLite.
- **formatting.py —** Module for applying IRC formatting to text.
- **irc.py —** Utility IRC bot implementation with protocol-related features.
- **logger.py —** Logging handler for sending logs to an IRC channel.
- **module.py —** Decorators and utility functions for defining commands and events.
- **web.py —** Web interaction module supporting HTTP requests.
- **admin.py —** Admin module providing administrative functionalities.
- **adminchannel.py —** Module handling admin channels and permissions.
- **announce.py —** Module for sending announcements to all channels.
- **bugzilla.py —** Bug tracking module using Bugzilla API.
- **calc.py —** Calculator module performing arithmetic operations.
- **chanlogs.py —** Channel logging module.
- **clock.py —** Time-related functionalities including time and countdowns.
- **countdown.py —** Module for displaying countdowns to a given date.
- **currency.py —** Currency exchange rate module using Bank of Canada data.
- **dice.py —** Dice rolling module.
- **etymology.py —** Etymology lookup module.
- **find.py —** Spelling correction and suggestion module.
- **find_updates.py —** Module for checking for updates to Willie.
- **github.py —** GitHub interaction module.
- **help.py —** Help and documentation module.
- **ip.py —** IP address lookup module using GeoIP database.
- **ipython.py —** Interactive Python console within the bot.
- **isup.py —** Website status checker with isup.me API.
- **lmgtfy.py —** Module for suggesting Google searches.
- **meetbot.py —** Meeting logging and management module.
- **movie.py —** Movie information module using IMDb API.
- **ping.py —** Greeting and rudeness handling module.
- **radio.py —** ShoutCast radio stream monitoring module.
- **rand.py —** Random number generation module.
- **reddit.py —** Reddit interaction module.
- **reload.py —** Module for reloading modules on the fly.
- **remind.py —** Reminder management module.
- **rss.py —** RSS feed parsing and notification module.
- **safety.py —** URL safety checking using VirusTotal API.
- **search.py —** Web search module using Bing.
- **seen.py —** Module for tracking when users were last seen.
- **spellcheck.py —** Spell check module using Enchant library.
- **tell.py —** Tell and ask functionality module.
- **tld.py —** Top-level domain information module.