# Eggdrop 1.0o Bot Software

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

## Description
Eggdrop is a comprehensive IRC bot designed to protect channels, manage users, and automate various tasks such as channel protection, user record management, and file serving.

## Key Features
- **Channel Protection**: Permanent ban list storage with comments.
- **User Record Management**: User passwords, hostmasks, access flags.
- **Automatic Learning**: Users can /MSG the bot to gain access.
- **Command Automation**: Automates commands like JOIN, KICK, and OP based on user level.
- **File Serving**: Supports file transfers via DCC.
- **IRC Network Interaction**: Handles server responses and channel modes.

## File Analysis
- **bf_tab.h** — Blowfish P-box and S-box tables for encryption.
- **blowfish.c** — Implements the Blowfish encryption algorithm used in password handling.
- **botcmd.c** — Handles commands from users via DCC.
- **botnet.c** — Manages botnet connections, channel associations, and pings.
- **chan.c** — Manages channels, user kicks, bans, and modes.
- **chan.h** — Defines structures for channel management.
- **chanprog.c** — Handles server list maintenance, timers, and Tcl script initialization.
- **chanset.c** — Manages low-level channel and chanset operations.
- **cmds.c** — Handles commands from users via DCC.
- **cmdt.h** — Defines command structures for built-in commands.
- **dcc.c** — Manages DCC connections, including disconnects.
- **dccutil.c** — Provides utilities for sending formatted text over various connections.
- **eggdrop.h** — Contains compile-time settings and defines.
- **english.h** — Defines strings used in the bot's output.
- **filedb.c** — Handles low-level filesystem database operations.
- **fileq.c** — Manages file queueing, listing, sending, and cancellation.
- **files.c** — Handles all file system commands.
- **files.h** — Defines structures for file database management.
- **gotdcc.c** — Processes incoming CTCP DCC requests and outgoing dcc files.
- **hash.c** — Handles non-Tcl procedure lookups and Tcl bindings.
- **hash.h** — Default bindings to load into the Tcl hash-tables.
- **main.c** — Manages nickname changes, flood detection, signal handling, and command line arguments.
- **match.c** — Implements wildcard matching functions.
- **mem.c** — Handles memory allocation and deallocation.
- **misc.c** — Contains various utility functions like stristr(), split(), maskhost().
- **mode.c** — Manages channel mode changes and bot reactions to them.
- **msgcmds.c** — Handles all commands entered via /MSG.
- **msgnotice.c** — Processes msgs, notices from users or channels, and simple CTCP requests.
- **net.c** — Handles raw network I/O.
- **notes.c** — Manages reading and sending notes.
- **proto.h** — Contains function prototypes for various modules.
- **tandem.h** — Defines structures for tracking tandem bots in the chain.
- **tcl.c** — Handles Tcl commands, initialization, and variable handling.
- **tclchan.c** — Handles channel-oriented Tcl commands.
- **tclegg.h** — Defines command types used by tcl.c and tclhash.c.
- **tclhash.c** — Manages bindings and triggers for various commands.
- **tclmisc.c** — Handles file system commands and other miscellaneous Tcl functions.
- **tcluser.c** — Manages user record-oriented Tcl commands.
- **userrec.c** — Contains functions to find and change user records.
- **users.c** — Manages bans, ignores, auto-linking bots, and userfile handling.
- **users.h** — Defines structures used by users.c and userrec.c.
- **dcc.save** — Script for saving the bot's entire user list.
- **compat.tcl** — Implements compatibility with old '+friend' commands.
- **console.tcl** — Saves and restores a user's console mode when they leave or return.
- **dike.tcl** — Detects floodnets.
- **gainops1.tcl** — Sends and handles requests for ops to other tandem bots on the same channel.
- **local.tcl** — Intercepts text from party-line users and sends it locally.
- **ntalk.irc** — Script for talking to an eggdrop bot in dcc chat.
- **ques3.tcl** — Creates an HTML file showing people currently on a channel.
- **samples.tcl** — Examples of extending the bot with Tcl scripts.
- **toolbox.tcl** — Useful procedures for use in tcl scripts.
- **toolkit.tcl** — Provides useful Tcl procs for script packages.
- **wire.tcl** — Secondary encrypted communications on a botnet.
- **README** — General information about Eggdrop.
- **CONTENTS** — Table of contents for documentation.
- **COPYING** — User license, the GNU GPL.