# Perlbot 1.9.2

**Category:** Standalone_Bot
**Original Author:** Andrew Burke / Jeremy Muhlich

## Description
Perlbot is a standalone IRC bot written in Perl, designed to manage channels, handle user authentication and authorization, and provide various administrative features for IRC network operators.

## Key Features
- **Bot Management**: Loads and unloads plugins, manages channel operations (joining, parting, cycling).
- **User Authentication**: Allows setting and changing passwords, managing hostmasks.
- **Channel Logging**: Logs messages to files based on configured channels.
- **Admin Control**: Provides commands for admins to reload the configuration, set debug levels, and manage bot behavior.
- **Event Handling**: Responds to various IRC events such as JOIN, PART, KICK, and NICK changes.

## File Analysis
- **perlbot.pl** — Entry point of the Perlbot application.
- **perlbot-date-system.pl** — Script for converting eggdrop log filenames to perlbot format.
- **perlbot-from-eggdrop.pl** — Converts simple eggdrop logs into perlbot format.
- **index.pl** — Web interface script to display IRC logs and search through them.
- **plog.pl** — Script to generate HTML pages from IRC logs.
- **config-sample.xml** — Sample configuration file for Perlbot.
- **config.dtd** — Document type definition for the XML config files.
- **Perlbot.pm** — Core class defining the bot's functionality.
- **Channel.pm** — Manages channel-specific operations and logging.
- **Config.pm** — Handles loading and saving of the bot’s configuration.
- **Logs.pm** — Manages log file creation and writing.
- **Plugin.pm** — Base class for plugins, providing hooks for various events.
- **User.pm** — Manages user data and permissions.
- **Utils.pm** — Utility functions used throughout the codebase.
- **Info.pm** — Provides information about the plugin.
- **Logger.pm** — Handles channel logging.
- **Notes.pm** — Stores and retrieves notes for users.
- **Opper.pm** — Automatically op valid ops as they join channels.
- **Protection.pm** — Protects ops by limiting deops.
- **Redir.pm** — Manages message redirection between channels.
- **AdminControl.pm** — Allows admins to control some bot features.
- **Authentication.pm** — Provides authentication services for users.
- **CTCPResponder.pm** — Responds to CTCP queries like ping.
- **ConnectionManagement.pm** — Helps manage the bot's server connection.
- **Help.pm** — Provides help commands and documentation.
- **IRCCommands.pm** — Allows admins to control the bot’s actions.
- **PluginControl.pm** — Manages loading, unloading, and reloading of plugins.
- **UserAdmin.pm** — Administers user data via IRC.