# Eggdrop 1.0h Bot

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer (robey@netcom.com)

## Description
Eggdrop is a versatile IRC bot designed to protect channels, manage users, and automate various channel-related tasks. It runs unattended and supports features like user bans/ignores, access control, and channel protection.

## Key Features
- **User Management:** Manages user records with passwords, hostmasks, and flags.
- **Channel Protection:** Protects channels from takeovers using ban lists and op management.
- **DCC File Services:** Handles DCC file transfers and XDCC services.
- **Automated Actions:** Automatically responds to channel events like joins, parts, and kicks.
- **Tcl Scripting:** Extensible via Tcl scripts for additional functionality.

## File Analysis
- **bf_tab.h** — Blowfish P-box and S-box tables used for encryption.
- **blowfish.c** — Implements the Blowfish encryption algorithm.
- **blowfish.h** — Header file defining constants and macros for Blowfish.
- **chan.c** — Handles channel operations, user bans, and op management.
- **chan.h** — Defines structures and constants related to channels.
- **chanprog.c** — Manages channel programs and timers.
- **chanset.c** — Manages chansets and channel pointers.
- **cmds.c** — Processes commands from users via DCC connections.
- **cmdt.h** — Header file for command definitions.
- **dcc.c** — Handles DCC socket activity and disconnects.
- **dccutil.c** — Provides utilities for sending formatted text over various connections.
- **eggdrop.h** — Compile-time settings and configuration options.
- **english.h** — Contains string constants used in the bot.
- **filedb.c** — Manages filesystem database files and reactions to remote file requests.
- **fileq.c** — Handles adding, removing, listing, and sending queued files.
- **files.c** — Manages all file system commands.
- **files.h** — Header file for file management structures.
- **gotdcc.c** — Processes incoming CTCP DCC requests and outgoing dcc files.
- **hash.c** — Handles procedure lookups and Tcl bindings.
- **hash.h** — Default bindings for Tcl hash tables.
- **main.c** — Main entry point, handling nick changes, flood detection, and server responses.
- **match.c** — Implements wildcard matching functions.
- **mem.c** — Manages memory allocation and tracking.
- **misc.c** — Handles various utility functions like string operations and logging.
- **mode.c** — Manages channel modes and their reactions.
- **msgcmds.c** — Processes commands entered via /MSG.
- **msgnotice.c** — Handles messages and notices from users or channels.
- **net.c** — Manages raw network I/O.
- **notes.c** — Reads and sends notes to users.
- **proto.h** — Prototypes for functions used outside their own modules.
- **tandcmd.c** — Handles commands that come across the botnet and userfile transfer.
- **tandem.c** — Tracks tandem bots in the chain and channel associations.
- **tcl.c** — Manages Tcl initialization, variable handling, and command bindings.
- **tclchan.c** — Tcl stubs for channel-oriented commands.
- **tcldcc.c** — Tcl stubs for DCC commands.
- **tclegg.h** — Header file for Tcl extensions.
- **tclhash.c** — Handles binding and triggering of various Tcl bindings.
- **tclmisc.c** — Tcl stubs for file system commands and other miscellaneous functions.
- **tcluser.c** — Tcl stubs for user record-oriented commands.
- **userrec.c** — Manages user records, including bans and ignores.
- **users.c** — Handles adding, removing, listing bans and ignores, and sending/receiving a userfile from another bot.
- **dcc.save** — Script to save the entire user list when exiting.
- **compat.tcl** — Compatibility script for old '+friend' commands.
- **console.tcl** — Saves and restores console mode on exit.
- **gainops1.tcl** — Sends and handles requests for ops between tandem bots.
- **local.tcl** — Intercepts text from party-line users and sends it to local users only.
- **ntalk.irc** — Script to talk to an eggdrop bot in dcc chat.
- **ques3.tcl** — Creates HTML files showing channel information periodically.
- **samples.tcl** — Examples of extending the bot with Tcl scripts.
- **toolbox.tcl** — Useful procedures for use in Tcl scripts.
- **toolkit.tcl** — Additional Tcl utilities.
- **README** — Instructions on compiling and using eggdrop.
- **CONTENTS** — Table of contents for documentation.
- **FEATURES** — List of features provided by the bot.
- **Makefile** — Build instructions.
- **Makefile.in** — Configuration file for Make.
- **UPDATES** — List of changes in recent versions.
- **botchk** — Script to check if the bot is running and restart it if necessary.