# Willie IRC Bot

**Category:** Standalone_Bot
**Original Author:** Elad Alfassa <elad@fedoraproject.org>

## Description
Willie is a standalone IRC bot designed to automate tasks on IRC networks, manage channels, and provide various services such as web searches, reminders, and administrative functions.

## Key Features
- Manages channel operations (JOIN, KICK, OP)
- Provides web search capabilities via Bing and Google
- Offers random number generation and dice rolling functionalities
- Supports reminder management
- Implements a help system for users
- Includes modules for currency conversion, etymology lookup, and more

## File Analysis
- **checkstyle.sh** — Script to check code style using PEP8.
- **ci_build.sh** — Build script for continuous integration testing.
- **conftest.py** — Pytest configuration file to ignore specific test files.
- **pytest_run.py** — Python script for running tests with pytest.
- **setup.py** — Setup script for packaging and distributing Willie.
- **willie.py** — Main bot entry point, defining the core functionality.
- **release.sh** — Script to release a new version of Willie.
- **update_db.py** — Database migration script for updating database schema.
- **makerpm.py** — Python script to create an RPM package.
- **make.bat** — Batch file for Sphinx documentation generation.
- **conf.py** — Configuration file for Sphinx documentation.
- **__init__.py** — Initialization module defining the bot's version and core functionality.
- **test_db.py** — Test suite for database operations.
- **test_trigger.py** — Test cases for message parsing.
- **bot.py** — Core bot implementation, handling IRC events and commands.
- **coretasks.py** — Defines routine tasks for Willie.
- **db.py** — Database management module using SQLite.
- **formatting.py** — Provides formatting functions for IRC messages.
- **irc.py** — IRC protocol utility functions.
- **logger.py** — Logging handler for sending logs to the IRC network.
- **module.py** — Decorators and utilities for defining bot commands.
- **web.py** — HTTP client module for making web requests.
- **config.py** — Configuration section definitions.
- **admin.py** — Admin module providing administrative functions.
- **adminchannel.py** — Channel management module with admin privileges.
- **announce.py** — Module to broadcast announcements in all channels.
- **bugzilla.py** — Bug tracking and issue reporting module.
- **calc.py** — Calculator functionality for performing arithmetic operations.
- **chanlogs.py** — Logging of channel events.
- **clock.py** — Time-related commands, including time zone handling.
- **countdown.py** — Countdown timer functionality.
- **currency.py** — Currency conversion using exchange rates from the Bank of Canada.
- **dice.py** — Dice rolling module for random number generation.
- **etymology.py** — Etymology lookup and definition retrieval.
- **find.py** — Spelling correction with sed notation support.
- **find_updates.py** — Module to check for new Willie versions.
- **github.py** — Github issue and pull request tracking.
- **help.py** — Help command providing documentation and module information.
- **ip.py** — IP address lookup using GeoIP database.
- **ipython.py** — Interactive Python console within the bot.
- **isup.py** — Website status checker with isup.me API.
- **lmgtfy.py** — Let me Google that for you command.
- **meetbot.py** — Meeting logging and management module.
- **movie.py** — Movie information retrieval using imdbapi.com.
- **ping.py** — Greeting and rudeness handling commands.
- **radio.py** — ShoutCAST radio stream monitoring.
- **rand.py** — Random number generation and dice rolling.
- **reddit.py** — Reddit post and comment fetching.
- **reload.py** — Module reloader for bot administrators.
- **remind.py** — Reminder management functionality.
- **rss.py** — RSS feed handling and notification.
- **safety.py** — URL safety checks using VirusTotal API.
- **search.py** — Web search capabilities with Bing and Google.
- **seen.py** — Last seen timestamp for users.