# Eggdrop 1.0m Bot

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer (Unknown)

## Description
Eggdrop is a full-featured IRC bot written in C, designed to protect channels from takeovers and manage user access levels. It includes extensive command handling, user record management, and channel protection features.

## Key Features
- **Channel Protection**: Manages bans, ignores, and channel modes.
- **User Management**: Tracks user flags, passwords, and hostmasks.
- **Command Handling**: Processes commands from users via DCC chat.
- **Automated Actions**: Performs actions like kicking, banning, and oping users based on configured rules.
- **File Services**: Supports file transfers using XDCC services.

## File Analysis
- **bf_tab.h** — Contains Blowfish encryption tables used for password hashing.
- **blowfish.c** — Implements the Blowfish encryption algorithm for passwords.
- **botcmd.c** — Handles commands received via DCC chat, including userfile updates and sharebot interactions.
- **botnet.c** — Manages the botnet structure, tracking connected bots and their status.
- **chan.c** — Manages channel operations such as bans, kicks, and mode changes.
- **chanprog.c** — Handles low-level channel programming tasks like setting modes and managing timers.
- **chanset.c** — Manages channel sets and associated data structures.
- **cmds.c** — Processes commands received over DCC connections.
- **cmdt.h** — Defines command types used in the bot.
- **dcc.c** — Handles DCC (Direct Client-to-Client) file transfers, including disconnects and activity monitoring.
- **dccutil.c** — Provides utilities for sending formatted text to various connections, handling timeouts, and managing dcc structures.
- **eggdrop.h** — Contains compile-time settings and defines used throughout the bot.
- **english.h** — Defines strings used in error messages and file listings.
- **filedb.c** — Manages filesystem database files and handles remote requests for files.
- **fileq.c** — Manages the file queue, adding and removing queued files, listing them, and sending the next file to a user.
- **files.c** — Handles all file system commands.
- **gotdcc.c** — Processes incoming CTCP DCC (chat/send) requests and outgoing dcc files.
- **hash.c** — Manages procedure lookups for msg/dcc/file commands using Tcl bindings.
- **hash.h** — Default bindings to load into the Tcl hash-tables.
- **main.c** — Handles nickname changes, flood detection, signal handling, and interpreting server responses.
- **match.c** — Implements wildcard matching functions used in pattern recognition.
- **mem.c** — Manages memory allocation and tracking of memory usage.
- **misc.c** — Contains miscellaneous utility functions like string operations and logging.
- **mode.c** — Queues and flushes mode changes, handles channel mode changes, and manages wanted channel modes.
- **msgcmds.c** — Handles 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.
- **notes.c** — Reads and sends notes to users.
- **proto.h** — Contains function prototypes for various modules.
- **tandem.h** — Manages tandem bot connections and channel associations.
- **tcl.c** — Handles Tcl commands added by the bot, including initialization and variable handling.
- **tclchan.c** — Implements Tcl stubs for channel-oriented commands.
- **tcldcc.c** — Implements Tcl stubs for DCC commands.
- **tclegg.h** — Defines types of commands used in Tcl bindings.
- **tclhash.c** — Manages command bindings and triggers.
- **tclmisc.c** — Implements Tcl stubs for file system commands and other miscellaneous tasks.
- **tcluser.c** — Implements Tcl stubs for user record-oriented commands.
- **userrec.c** — Manages user records, including adding, deleting, and changing user information.
- **users.c** — Handles testing and enforcing bans and ignores, managing user files, and listing users.
- **dcc.save** — Script to save the entire user list when exiting.
- **compat.tcl** — Implements compatibility with old '+friend' commands for backward compatibility.
- **console.tcl** — Saves and restores a user's console mode on exit.
- **dike.tcl** — Detects floodnets by analyzing recent messages.
- **gainops1.tcl** — Sends and handles requests for ops to other tandem bots on the same channel.
- **local.tcl** — Localizes text sent from party-line users.
- **ntalk.irc** — Allows talking to an eggdrop bot in DCC chat.
- **ques3.tcl** — Creates HTML files showing current channel status.
- **samples.tcl** — Provides examples of extending the bot with Tcl scripts.
- **toolbox.tcl** — Contains useful procedures for use in Tcl scripts.
- **toolkit.tcl** — Offers additional Tcl procedures for script packages.
- **wire.tcl** — Implements secure communications on a botnet.
- **README** — General information about Eggdrop 1.0m.
- **CONTENTS** — Table of contents for documentation and configuration files.
- **FEATURES** — Describes the features of Eggdrop 1.0m.
- **Makefile** — Build instructions for compiling Eggdrop.
- **Makefile.in** — Configuration file used by Makefile.