# Eggdrop Bot

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer (Unknown)

## Description
Eggdrop is a highly customizable IRC bot written in C that provides comprehensive channel protection, user management, and automation features.

## Key Features
- **Channel Protection**: Manages bans, ignores, and op levels.
- **User Management**: Tracks and stores user records with flags and access levels.
- **Automated Actions**: Handles JOIN, PART, KICK, and OP commands based on user actions.
- **File Services**: Supports file serving (fserve) and XDCC services.
- **TCL Scripting**: Extensive use of TCL for command binding and execution.

## File Analysis
- **chan.c** — Handles channel manipulation and status updates.
- **chan.h** — Defines structures and constants used in channel handling.
- **chanprog.c** — Manages server connections, revenge punishments, timers, and Tcl script loading.
- **chanset.c** — Manages channel sets and user cache pointers.
- **cmds.c** — Handles commands from users via DCC.
- **cmdt.h** — Defines command types and access levels.
- **dcc.c** — Manages DCC connections and file transfers.
- **dccutil.c** — Provides utilities for DCC operations, including timeout checking.
- **eggdrop.h** — Contains compile-time settings and defines.
- **english.h** — Language-specific strings used in the bot.
- **filedb.c** — Handles filesystem database manipulation and remote requests.
- **fileq.c** — Manages file queueing and sending.
- **files.c** — Implements file system commands.
- **files.h** — Defines structures for file database handling.
- **gotdcc.c** — Processes incoming DCC CTCP messages and outgoing files.
- **hash.c** — Handles procedure lookups and binding.
- **hash.h** — Default bindings for TCL hash tables.
- **main.c** — Manages bot initialization, signal handling, and server connection.
- **match.c** — Implements wildcard matching functions.
- **mem.c** — Manages memory allocation and tracking.
- **misc.c** — Handles miscellaneous utilities like string operations and logging.
- **mode.c** — Manages channel modes and their changes.
- **msgcmds.c** — Processes commands entered via /MSG.
- **msgnotice.c** — Handles messages and notices from users or channels, including CTCP requests and replies.
- **net.c** — Network functions for bots, including DCC and telnet handling.
- **proc.c** — Manages process handling like DCC connections and shell command execution.
- **proto.h** — Prototypes for various functions used outside their own modules.
- **tandcmd.c** — Handles commands that come across the botnet and userfile transfer commands from sharebots.
- **tandem.c** — Tracks tandem bots in the chain, channel associations, and pinging.
- **tcl.c** — Manages TCL bindings for commands and variable handling.
- **tclegg.h** — Defines command types and access levels for TCL scripts.
- **tclhash.c** — Handles binding and triggering of various TCL bindings.
- **thread.c** — Linux threading support (not used).
- **userrec.c** — Manages user records, including bans and ignores.
- **users.c** — Implements functions to test and enforce bans and ignores, add/remove users, and list them.
- **dcc.save** — Script for saving the entire user list to disk.
- **compat.tcl** — Compatibility script for old '+friend' commands.
- **console.tcl** — Saves and restores console mode when a user leaves or returns.
- **gainops1.tcl** — Sends and handles requests for ops from other tandem bots on the same channel.
- **local.tcl** — Intercepts text starting with ' from party-line users and sends it to local users only.
- **ques3.tcl** — Creates an HTML file showing people currently on a channel, their user@hosts, who's an op, and who's idle.
- **samples.tcl** — Examples of extending Eggdrop with TCL scripts.
- **README** — General information about the bot.
- **FEATURES** — List of features provided by the bot.
- **Makefile** — Build instructions for the project.
- **Makefile.in** — Template for generating Makefiles.
- **UPDATES** — Log of changes and updates to the bot.
- **botchk** — Script to check if the bot is running and restart it if necessary.
- **config.h.in** — Template configuration header file.
- **configure** — GNU configure script for building the project.
- **eggdrop.doc** — Documentation about Eggdrop.
- **eggstat** — Utility to dump statistics on user records.
- **lamestbot** — Sample configuration file for setting up a bot.
- **motd** — Message of the day file.
- **nets** — List of botnets using Eggdrop.