# Eggdrop 1.0p Bot

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer

## Description
Eggdrop is a robust IRC bot written in C that provides comprehensive channel protection, user record management, and automation features such as op management, flood detection, and file sharing.

## Key Features
- **Channel Protection**: Manages bans and ignores for users and channels.
- **User Management**: Tracks and manages user records with access flags and passwords.
- **Automated Operations**: Handles ops, kicks, and joins based on channel modes and user actions.
- **File Sharing**: Supports file transfers via DCC.
- **Flood Detection**: Monitors and blocks flood attempts from users or channels.
- **Tcl Scripting**: Extends functionality through Tcl scripts.

## File Analysis
- **bf_tab.h** — Contains Blowfish encryption tables used for password protection.
- **blowfish.c** — Implements the Blowfish encryption algorithm for password handling.
- **botcmd.c** — Handles commands from users and sharebots, including file transfers.
- **botnet.c** — Manages the botnet structure and communication between bots.
- **chan.c** — Manages channel operations such as bans, kicks, and modes.
- **chan.h** — Defines structures for channels and user records.
- **chanprog.c** — Handles low-level channel programming tasks including timers and settings.
- **chanset.c** — Manages channel sets and pointers to user records.
- **cmds.c** — Processes commands from users via DCC connections.
- **cmdt.h** — Defines command structures for Tcl scripting.
- **dcc.c** — Manages DCC (Direct Client-to-Client) file transfers.
- **dccutil.c** — Provides utilities for handling DCC connections and formatted text output.
- **eggdrop.h** — Contains compile-time settings and defines for the bot.
- **english.h** — Defines strings used in various parts of the code, such as error messages.
- **filedb.c** — Manages filesystem database files and handles remote file requests.
- **fileq.c** — Handles adding and removing files from the queue and listing queued files.
- **files.c** — Manages all file system commands.
- **files.h** — Defines structures for file database entries.
- **gotdcc.c** — Processes incoming CTCP DCC (chat, send) requests and outgoing dcc files.
- **hash.c** — Handles procedure lookups for msg/dcc/file commands using Tcl bindings.
- **main.c** — Manages the main loop, flood detection, and signal handling.
- **match.c** — Implements wildcard matching functions.
- **mem.c** — Manages memory allocation and deallocation.
- **misc.c** — Contains miscellaneous utility functions such as string operations and logging.
- **mode.c** — Handles queueing and flushing of mode changes made by the bot.
- **msgcmds.c** — Processes commands entered via /MSG.
- **msgnotice.c** — Manages messages and notices from users or channels, including simple CTCP requests and replies.
- **net.c** — Handles all raw network I/O operations.
- **notes.c** — Manages reading and sending of notes.
- **proto.h** — Contains function prototypes for various modules.
- **tandem.h** — Defines structures for tracking tandem bots in the chain.
- **tcl.c** — Implements Tcl bindings for commands added to the bot.
- **tclchan.c** — Handles channel-oriented Tcl commands.
- **tcldcc.c** — Manages DCC-related Tcl commands.
- **tclegg.h** — Defines command types used by Tcl scripts.
- **tclhash.c** — Handles binding and triggering of various bindings in Tcl.
- **tclmisc.c** — Implements miscellaneous Tcl commands, including file system operations.
- **tcluser.c** — Manages user record-oriented Tcl commands.
- **userrec.c** — Contains functions for finding and changing user records.
- **users.c** — Manages testing and enforcing bans and ignores, adding and removing users, and listing them.
- **users.h** — Defines structures and constants used by the `users` module.
- **dcc.save** — A script to save the bot's user list when exiting.
- **compat.tcl** — Implements compatibility with old versions of eggdrop for commands like +friend.
- **console.tcl** — Manages console modes for users.
- **dike.tcl** — Detects floodnets and blocks them.
- **gainops1.tcl** — Sends and handles requests for ops from other tandem bots on the same channel.
- **local.tcl** — Intercepts text starting with ' and sends it to local users only.
- **ntalk.irc** — A script for talking to an eggdrop bot in dcc chat.
- **ques3.tcl** — Creates HTML files showing people currently on a channel.
- **samples.tcl** — Provides examples of extending the bot with Tcl scripts.
- **toolbox.tcl** — Contains useful procedures for use in Tcl scripts.
- **toolkit.tcl** — Provides additional Tcl procedures for script packages.
- **wire.tcl** — Manages secondary encrypted communications on a botnet.
- **README** — General information about Eggdrop, including version and usage instructions.
- **COPYING** — The GNU General Public License.
- **FEATURES** — A list of features provided by Eggdrop.
- **Makefile** — Instructions for compiling the code.