# Eggdrop 1.0c Pre-Bot

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

## Description
Eggdrop is a robust IRC bot that provides comprehensive channel protection, user management, and automation features. It runs unattended and can handle various tasks such as managing channel modes, kicking/banning users, and responding to commands.

## Key Features
- **Channel Protection**: Manages bans and ignores.
- **User Management**: Tracks user records with flags and access levels.
- **Command Handling**: Processes commands via `.dcc` connections.
- **Mode Changes**: Queues and flushes mode changes.
- **Flood Detection**: Detects and prevents flooding.
- **TCL Scripting**: Extensive support for TCL scripts to extend functionality.

## File Analysis
- **chan.c** — Handles channel manipulation, status reporting, user kickban operations, and idle kicking.
- **chan.h** — Defines structures and constants used in `chan.c`.
- **chanprog.c** — Manages server list updates, revenge punishments, timers, and TCL script initialization.
- **chanset.c** — Manages low-level channel and chanset manipulation.
- **cmds.c** — Handles commands from users via `.dcc` connections.
- **cmdt.h** — Defines command types for built-in commands.
- **dcc.c** — Manages activity on DCC sockets, including disconnects.
- **dccutil.c** — Provides functions to send formatted text over various connections and manages DCC timeouts.
- **eggdrop.h** — Contains compile-time settings and defines features like TCL support.
- **english.h** — Defines strings used in the bot's output.
- **filedb.c** — Manages filesystem database files and handles remote requests for files.
- **fileq.c** — Handles adding, removing, listing, sending, and canceling queued files.
- **files.c** — Manages file system commands.
- **files.h** — Defines structures used in `files.c`.
- **gotdcc.c** — Processes incoming CTCP DCC requests, manages flood checking, and boots users from DCC chat.
- **hash.c** — Handles non-TCL procedure lookups for msg/dcc/file commands and TCL binding of internal procedures to these commands.
- **hash.h** — Default bindings loaded into the TCL hash-tables.
- **main.c** — Manages nickname changes, flood detection, signal handling, telnet code translation, command line arguments, server connection, and interpreting server responses.
- **match.c** — Implements wildcard matching functions for pattern recognition.
- **mem.c** — Handles memory allocation and deallocation.
- **misc.c** — Provides utility functions like string operations, logging, queueing output, resync buffers, help system, MOTD display, and note system.
- **mode.c** — Manages channel modes and the bot's reaction to them.
- **msgcmds.c** — Handles commands entered via `/MSG`.
- **msgnotice.c** — Processes messages and notices from users or channels, including simple CTCP requests and replies.
- **net.c** — Handles all raw network I/O.
- **o_proc.c** — Manages process handling for the bot, including accepting DCC connections, telnet links to other bots, executing system shell commands, etc.
- **proto.h** — Prototypes for functions used outside their own modules.
- **tandcmd.c** — Handles commands that come across the botnet and userfile transfer/update commands from sharebots.
- **tandem.c** — Keeps track of connected bots in the chain, dumping lists, channel name associations, rejecting bots, linking/unlinking/relaying to other bots, pinging bots periodically, and checking leaf status.
- **tcl.c** — Manages TCL command handling, initialization, and variable getting/setting.
- **tclegg.h** — Defines types of commands for TCL bindings.
- **tclhash.c** — Handles binding and unbinding, checking and triggering bindings, and listing current bindings.
- **userrec.c** — Manages user records with functions to find and change them.
- **users.c** — Manages bans, ignores, adding/removing users, listing users, reading the user file.
- **users.h** — Defines structures used in `users.c`.
- **dcc.save** — Script for saving the entire user list to disk.
- **compat.tcl** — Implements compatibility with old versions of eggdrop for commands like +op and +friend.
- **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 ' and sends it to local users only.
- **ntalk.irc** — Script for talking to an eggdrop bot in dcc chat.
- **ques3.tcl** — Creates HTML files showing people currently on a channel, their user@hosts, who's an op, and who's idle.
- **samples.tcl** — Provides examples of extending eggdrop with TCL scripts.
- **toolkit.tcl** — Contains useful Tcl procs for script packages.
- **README** — General information about Eggdrop.
- **FEATURES** — List of features provided by Eggdrop.
- **Makefile** — Build system configuration.
- **Makefile.in** — Template Makefile used during build process.
- **UPDATES** — Notes on updates and changes in Eggdrop 1.0c.
- **botchk** — Script for checking if the bot is running and restarting it if necessary.
- **config.h.in** — Configuration header template.
- **configure** — GNU configure script to generate Makefiles.
- **eggdrop.doc** — Documentation about Eggdrop.
- **eggstat** — TCL script for dumping statistics on userfile.
- **lamestbot** — Sample configuration file for setting up a bot.
- **motd** — Message of the day file.
- **nets** — List of botnets using Eggdrop.