# Infobot 0.43.51

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

## Description
Infobot is a standalone IRC bot that learns from declarative statements and responds to queries based on its database of factoids.

## Key Features
- Learns by observing "x is y" statements.
- Responds to questions like "where can I find x".
- Maintains persistent state using DBM files for learning and logging.
- Supports private messaging with special handling.
- Implements a user management system with flags controlling permissions.
- Can be configured via an external parameter file.

## File Analysis
- **get_stuff.pl** — Processes tracking logs to update the database.
- **run_if_needed.pl** — Ensures Infobot runs as a background process.
- **track2fact.pl** — Converts tracking log files into factoid entries.
- **ANSI.pl** — Provides ANSI color codes for output formatting.
- **CTCP.pl** — Handles CTCP (Client-to-Client Protocol) queries.
- **DBM.pl** — Manages database operations using DBM files.
- **DNS.pl** — Performs DNS lookups and caches results.
- **Help.pl** — Provides help text based on a configuration file.
- **Internic.pl** — Summarizes information from Internic databases.
- **Irc.pl** — Handles IRC protocol interactions, including server connections.
- **IrcExtras.pl** — Extends Irc functionality with additional hooks and routines.
- **IrcHooks.pl** — Hooks into IRC events for processing.
- **Math.pl** — Implements math operations based on a simple parser.
- **Misc.pl** — Contains miscellaneous utility functions.
- **Norm.pl** — Normalizes input text, including profanity filtering.
- **Params.pl** — Loads and manages parameter settings from configuration files.
- **Process.pl** — Processes incoming IRC messages.
- **Question.pl** — Handles question queries.
- **Reply.pl** — Retrieves and formats responses based on the database.
- **Search.pl** — Allows searching through the factoid database.
- **Setup.pl** — Sets up initial parameters and configurations.
- **Statement.pl** — Handles statement updates to the database.
- **Traceroute.pl** — Performs traceroute queries.
- **Update.pl** — Updates the database with new entries.
- **User.pl** — Manages user permissions and flags.
- **myRoutines.pl** — Extends core functionality with custom routines.
- **nickometer.pl** — A nick-o-meter for evaluating nicks.
- **Zephyr.pl** — Hooks into Zephyr messaging system.
- **ZephyrExtras.pl** — Additional hooks and utilities for the Zephyr integration.
- **ZephyrHooks.pl** — Handles events from the Zephyr messaging system.
- **README** — Documentation on setup and configuration changes.
- **README.scripts** — Instructions for using scripts to update databases.
- **infobot** — The main Infobot script.
- **infobot_guide.html** — User guide documentation.
- **infobot_guide.html~** — An older version of the user guide.
- **infobot-is.txt, infobot-are.txt** — Example factoid entries.
- **infobot.config** — Configuration file for setting up parameters.
- **infobot.crontab** — Cron job to run Infobot at regular intervals.
- **infobot.users** — User configuration and permissions.
- **curl** — A Perl script for responding to queries.
- **dump_db** — Dumps the database contents to a flat file.
- **makepasswd** — Generates password hashes.
- **unupdate_dbs** — Undoes updates made by specific users.
- **update_db** — Adds entries from a text file to the database.
- **code_to_country.txt, country_to_code.txt** — Mapping of country codes and names.