# pyfibot

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

## Description
PyFibot is a Python-based IRC bot that provides various functionalities such as automatic operations, weather updates, news feeds, and more. It uses the Twisted framework for handling IRC communications.

## Key Features
- **Automatic Operations:** Manages channel ops using `.autoop` commands.
- **Weather Updates:** Fetches weather data from OpenWeatherMap and TheTVDB.
- **RSS Feeds:** Subscribes to RSS feeds and notifies users of updates.
- **Spotify URL Parsing:** Parses Spotify URLs for music information.
- **URL Safety Check:** Checks the safety of provided URLs.

## File Analysis
- **ez_setup.py** — Bootstrapping script for installing dependencies.
- **run.sh** — Shell script to start the bot with configuration.
- **setup.py** — Setup script for packaging and distributing PyFibot.
- **validate.py** — Validates configuration files using JSON schema.
- **conf.py** — Sphinx documentation configuration file.
- **make.bat** — Batch file for building documentation.
- **__init__.py** — Initialization file for modules.
- **botcore.py** — Core bot functionalities including logging and command handling.
- **colorlogger.py** — Custom logger with colored output.
- **pyfibot.py** — Main bot script containing initialization logic.
- **compass_points.py** — Defines compass points for location-related commands.
- **eplib.py** — Library for fetching data from epguides.com.
- **namedays.py** — Finnish name days calendar.
- **module_autoop.py** — Manages auto-op rules for channels.
- **module_autorejoin.py** — Rejoins channels after being kicked.
- **module_bmi.py** — Calculates and displays BMI values.
- **module_fmi.py** — Fetches weather data from FMI (Finnish Meteorological Institute).
- **module_geoip.py** — Determines user's country based on IP address.
- **module_matkahuolto.py** — Tracks shipments using Matkahuolto service.
- **module_openweather.py** — Fetches weather updates from OpenWeatherMap.
- **module_posti.py** — Tracks packages using Posti service.
- **module_rss.py** — Subscribes to and displays RSS feeds.
- **module_spotify.py** — Parses Spotify URLs for music information.
- **module_thetvdb.py** — Fetches TV show data from TheTVDB.
- **module_tvrage.py** — Fetches TV show data from TVRage.
- **module_update.py** — Updates bot code from Git repositories.
- **module_urlsize.py** — Warns about large URLs.
- **module_urltitle.py** — Displays HTML page titles.
- **module_usertrack.py** — Tracks user activity in channels.
- **module_webchat.py** — Displays webchat users' hostnames on join.
- **module_wolfram_alpha.py** — Fetches answers from Wolfram Alpha API.
- **module_ask.py** — Retrieves information from online knowledge bases.
- **module_autoop_old.py** — Manages auto-op rules (older version).
- **module_calc.py** — Performs mathematical calculations.
- **module_dhl.py** — Tracks shipments using DHL service.
- **module_expl.py** — Provides random explanations based on terms.
- **module_forecast.py** — Fetches weather forecasts from Yahoo Weather API.
- **module_imgur.py** — Uploads images to Imgur.
- **module_nugget.py** — Retrieves random nuggets of wisdom.
- **module_oraakkeli.py** — Asks questions to the Oracle of Lintukoto.
- **module_pgsqlwanha.py** — Tracks URLs in PostgreSQL database.
- **module_sqlitewanha.py** — Tracks URLs in SQLite database.
- **module_urlsafety.py** — Checks URL safety using UnmaskParasites service.
- **dictdiffer.py** — Calculates differences between dictionaries.
- **find_config_opts.py** — Finds configuration options in scripts.
- **imgur_auth.py** — Authorizes access to Imgur API.
- **ptime.py** — Parses time strings.
- **pyfiurl.py** — Finds absolute URLs from text.
- **timeoutdict.py** — Manages timeouts for dictionary entries.
- **twitter_application_auth.py** — Authenticates Twitter application.
- **bot_mock.py** — Mock bot for testing purposes.
- **test_areena.py** — Test script for module_urltitle with Areena.
- **test_example.py** — Example test script.
- **test_openweather.py** — Test script for module_openweather.
- **test_rss.py** — Test script for module_rss.
- **test_spotify.py** — Test script for module_spotify.
- **test_urltitle.py** — Test script for module_urltitle.
- **test_wikipedia.py** — Test script for module_urltitle with Wikipedia.