# Infobot 0.43.4

**Category:** Standalone_Bot
**Original Author:** Kevin Lenzo & Patrick Cole

## Description
Infobot is a standalone IRC bot that learns from declarative statements, such as "x is at y", and responds to queries like "where can I find x". It supports various features including CTCP handling, DNS lookups, math calculations, and user management.

## Key Features
- Learns from declarative statements ("x is y")
- Responds to queries with learned information
- Supports CTCP commands (version, echo, ping)
- Performs DNS lookups
- Handles IRC actions and messages
- Manages user permissions and flags
- Tracks seen times for users

## File Analysis
- **get_stuff.pl** — Processes tracking files to update the database.
- **run_if_needed.pl** — Starts Infobot if it's not already running.
- **track2fact.pl** — Converts tracking logs into fact databases.
- **ANSI.pl** — Handles ANSI color codes for text formatting.
- **CTCP.pl** — Implements CTCP commands (version, echo, ping).
- **DBM.pl** — Manages database operations using DBM files.
- **DNS.pl** — Performs DNS lookups and caches results.
- **Help.pl** — Provides help documentation based on a configuration file.
- **Internic.pl** — Summarizes information from Internic's domain summary service.
- **Irc.pl** — Handles IRC protocol interactions, including joining channels and sending messages.
- **IrcExtras.pl** — Extends Irc.pl with additional functionality.
- **Math.pl** — Performs basic math calculations.
- **Misc.pl** — Manages miscellaneous operations like logging and user handling.
- **Norm.pl** — Normalizes input text for better processing.
- **Params.pl** — Loads parameter files to configure the bot.
- **Process.pl** — Processes incoming IRC messages.
- **Question.pl** — Handles question-based queries.
- **Reply.pl** — Retrieves and formats responses from the database.
- **Search.pl** — Searches the database for specific entries.
- **Setup.pl** — Sets up initial configurations and data structures.
- **Statement.pl** — Manages statement-based updates to the database.
- **Traceroute.pl** — Performs traceroute queries.
- **Update.pl** — Updates the database with new information.
- **User.pl** — Handles user-specific configurations and permissions.
- **myRoutines.pl** — Extends core functionality with custom routines.
- **nickometer.pl** — Evaluates nicknames based on a set of rules.
- **Zephyr.pl** — Integrates Zephyr messaging for infobot notifications.
- **ZephyrExtras.pl** — Extends Zephyr integration with additional features.
- **ZephyrHooks.pl** — Hooks into Zephyr actions and messages.
- **README** — General instructions for setting up the bot.
- **README.scripts** — Scripts to manage database operations.
- **IMPORTANT:_read_REVISIONS_and_infobot.html** — Important notes on revisions and configuration updates.
- **REVISIONS** — Log of changes made in different versions.
- **infobot** — The main Infobot script.
- **infobot_guide.html** — User guide for the infobot.
- **infobot-are.txt, infobot-is.txt** — Example databases containing key-value pairs.
- **infobot.config** — Configuration file for setting up the bot.
- **infobot.users** — User configuration and permissions.
- **infobot.crontab** — Cron job to run Infobot regularly.
- **infobot.help** — Documentation on how to use and interact with the infobot.
- **sane-are.txt, sane-is.txt** — Example databases for testing purposes.
- **curl** — A simple Perl script to query the database.
- **dump_db** — Script to dump database contents into a text file.
- **make_db** — Script to create or update database entries from a source file.
- **makepasswd** — Generates password hashes.
- **reduce_db** — Script to process and split database entries.
- **code_to_country.txt, country_to_code.txt** — Mapping of country codes to names and vice versa.
- **Zephyr_README** — Notes for integrating Zephyr with Infobot.