# Eggdrop 1.0d Bot

**Category:** Eggdrop_Bot
**Original Author:** Unknown

## Description
Eggdrop is an advanced 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 enforces access flags for users.
- **Automated Actions**: Handles JOIN, PART, KICK, and OP commands based on configurations.
- **File Services**: Supports file transfers via DCC.
- **Tcl Scripting**: Extensive use of Tcl scripts for command binding and automation.

## File Analysis
- **chan.c** — Handles channel manipulation and status updates.
- **chan.h** — Defines data structures used in channel management.
- **chanprog.c** — Manages server list, revenge punishment, and timers.
- **chanset.c** — Manages low-level channel settings and user associations.
- **cmds.c** — Processes commands from users via DCC.
- **cmdt.h** — Defines command structures for Tcl scripts.
- **dcc.c** — Handles DCC socket activity and disconnects.
- **dccutil.c** — Provides functions to send formatted text over various connections.
- **eggdrop.h** — Contains compile-time settings and defines.
- **english.h** — Stores strings used in the bot's output.
- **filedb.c** — Manages filesystem database files and remote requests.
- **fileq.c** — Handles file queue operations, adding/removing files.
- **files.c** — Manages all file system commands.
- **gotdcc.c** — Processes incoming CTCP DCC requests.
- **hash.c** — Handles procedure lookups for msg/dcc/file commands.
- **main.c** — Manages nickname changes, flood detection, and server responses.
- **match.c** — Provides wildcard matching functions.
- **mem.c** — Manages memory allocation and deallocation.
- **misc.c** — Contains miscellaneous utility functions.
- **mode.c** — Handles channel mode changes and reactions.
- **msgcmds.c** — Processes commands entered via /MSG.
- **msgnotice.c** — Handles messages and notices from users or channels.
- **net.c** — Manages all raw network I/O.
- **proto.h** — Contains function prototypes for various modules.
- **tandcmd.c** — Manages commands that come across the botnet.
- **tandem.c** — Tracks bots in a chain and handles channel associations.
- **tcl.c** — Handles Tcl command bindings and variable handling.
- **tclegg.h** — Defines types of commands for Tcl scripts.
- **tclhash.c** — Manages binding and triggering of various Tcl commands.
- **userrec.c** — Manages user records, including bans and ignores.
- **users.c** — Manages testing and enforcing bans and ignores.