# PyFibot

**Category:** Standalone_Bot
**Original Author:** Riku Lindblad (shrike@addiktit.net)

## Description
PyFibot is a modular IRC bot written in Python, based on Twisted library. It supports various commands and modules for interacting with users and channels.

## Key Features
- Supports multiple IRC networks and channels.
- Manages user permissions and access levels.
- Provides auto-op functionality for specific channels.
- Integrates with external services like weather forecasts, BMI calculations, and more.
- Handles URL tracking and safety checks.
- Includes a module system allowing easy addition of new functionalities.

## File Analysis
- **ez_setup.py** — Bootstrapping setuptools installation.
- **run.sh** — Shell script to start the bot using virtual environment.
- **setup.py** — Python package setup configuration.
- **test.sh** — Bash script for running tests with coverage.
- **validate.py** — Validates configuration file against a schema.
- **conf.py** — Sphinx documentation configuration.
- **make.bat** — Batch script for building documentation.
- **botcore.py** — Core bot functionality, including command handling and logging.
- **colorlogger.py** — Custom logger implementation with colored output.
- **pyfibot.py** — Main bot script file.
- **__init__.py** (multiple) — Module initialization files.
- **module_autoop.py** — Manages auto-op rules for channels.
- **module_autorejoin.py** — Rejoins a channel after being kicked.
- **module_bmi.py** — Calculates and displays BMI based on user input.
- **module_fmi.py** — Fetches weather data from Finnish Meteorological Institute.
- **module_geoip.py** — Determines the country of an IRC user based on IP address.
- **module_matkahuolto.py** — Tracks shipments using Matkahuolto service.
- **module_openweather.py** — Provides weather updates using OpenWeatherMap API.
- **module_posti.py** — Tracks packages and consignments from Posti Finland.
- **module_rss.py** — Fetches and displays RSS feed information.
- **module_spotify.py** — Parses Spotify URLs and provides song information.
- **module_tvrage.py** — Retrieves TV show data using TheTVRage API.
- **module_tvmaze.py** — Provides episode information from TV Maze.
- **module_update.py** — Updates bot code from Git repository.
- **module_urlsize.py** — Warns about large URLs in messages.
- **module_urltitle.py** — Displays HTML page titles for web links.
- **module_usertrack.py** — Tracks user activity and IP addresses.
- **module_webchat.py** — Identifies web chat users' hostnames.
- **module_wolfram_alpha.py** — Retrieves information from Wolfram Alpha API.
- **module_ask.py** — Provides random facts and trivia.
- **module_autoop_old.py** — Legacy auto-op management module.
- **module_calc.py** — Performs mathematical calculations.
- **module_dhl.py** — Tracks shipments using DHL service.
- **module_expl.py** — Stores and retrieves text snippets for use in messages.
- **module_forecast.py** — Fetches weather forecasts from Yahoo Weather API.
- **module_imgur.py** — Uploads images to Imgur.
- **module_nugget.py** — Retrieves random nuggets of information.
- **module_oraakkeli.py** — Asks questions to an online oracle.
- **module_pgsqlwanha.py** — Tracks URLs in PostgreSQL database.
- **module_sqlitewanha.py** — Tracks URLs in SQLite database.
- **module_tvrage.py** — Retrieves TV show data using TheTVRage API.
- **module_urlsafety.py** — Checks the safety of URLs.
- **__init__.py** (multiple) — Utility modules for pyfibot.