# Eggdrop 1.6.18 Core Bot Software

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer (and many contributors)

## Description
Eggdrop is a versatile IRC bot designed for automated channel management, including joining channels, managing users, and automating various tasks on the IRC network.

## Key Features
- **Automated Channel Management**: Joins specified channels, manages user access levels, and performs actions based on triggers.
- **User-Level System**: Supports different user levels with varying permissions.
- **Text/Join/Kick Automation**: Automatically responds to channel events such as joins, parts, kicks, and messages.
- **OP Management**: Manages operator status for the bot in various channels.
- **File Transfer Services (fserve/XDCC)**: Provides file transfer services within the IRC network.

## File Analysis
- **bg.c —** Handles background process management while keeping threads happy.
- **bg.h —** Header file for background process management.
- **botcmd.c —** Manages commands that come across the botnet and userfile transfers.
- **botmsg.c —** Formats messages sent on the botnet and handles different message types based on versioned bots.
- **botnet.c —** Tracks connected bots, channel name associations, and pinging mechanisms.
- **chan.h —** Common header file for channel-related operations.
- **chanprog.c —** Manages server lists, revenge punishment, timers, and tcl script loading.
- **cmd_resolve.tcl —** Adds commands to resolve hostnames or IP addresses without blocking the bot.
- **compat.h —** Header file for compatibility functions.
- **compat.tcl —** Maps old Tcl functions to new ones for ease of updating scripts.
- **dns.c —** Handles DNS resolution and provides Tcl commands for it.
- **eggdrop.h —** Compile-time settings for Eggdrop.
- **getops.tcl —** Script used for requesting and giving ops to other bots in a botnet.
- **klined.tcl —** Automatically removes k-lined servers from the bot's server list.
- **match.c —** Implements wildcard matching functions.
- **misc.c —** Handles various utility functions like logging, queueing output, and help system.
- **modules.c —** Supports loading of modules in Eggdrop.
- **net.c —** Manages all raw network I/O operations.
- **patch.h —** Header file for adding patches to the version string.
- **proto.h —** Prototypes for functions used outside their own module.
- **rfc1459.c —** Implements IRC protocol handling based on RFC 1459.
- **stat.h —** File attribute management.
- **tcl.c —** Handles Tcl commands and initialization.
- **tclegg.h —** Header file for tcl-related functions.