# Eggdrop 1.2.0 Botnet Core

**Category:** Eggdrop_Bot
**Original Author:** cmwagner@sodre.net (toolbox), Someone claim this [unknown] (toolkit), David Sesno (moretools)

## Description
Eggdrop 1.2.0 is a full IRC bot designed for automated channel management, including user interaction, channel protection, and network communication. It includes various modules and scripts to enhance its functionality.

## Key Features
- **Channel Management:** Auto-op, auto-deop, kick/ban users based on conditions.
- **User Interaction:** Responds to commands and triggers actions like sending messages or changing modes.
- **Network Communication:** Manages connections with other bots in a botnet for redundancy and load balancing.
- **Flood Protection:** Detects and mitigates flood attacks from specific users.
- **File Transfer:** Supports XDCC file sharing.

## File Analysis
- **action.fix.tcl** — Filters and modifies ACTION messages.
- **alltools.tcl** — Includes various tools like user management, flag creation, and more.
- **console.tcl** — Saves and restores console settings when users join/leave.
- **dike.tcl** — Detects and mitigates flood attacks from specific users.
- **getops-1.8.tcl** — Manages bot operations in case of bans or lack of connectivity.
- **local.tcl** — Sends local messages based on party-line user input.
- **ques3.tcl** — Generates HTML files showing channel activity periodically.
- **samples.tcl** — Provides examples for extending Eggdrop with TCL commands.
- **toolbox.tcl** — Contains utility procedures like string manipulation functions.
- **toolkit.tcl** — Offers additional Tcl procedures for managing users and channels.
- **unserv.tcl** — Removes servers from the internal server list.
- **userinfo1.0.tcl** — Enhances whois output with user-defined fields.
- **wire.tcl** — Manages secondary encrypted communications on a botnet.

- **botcmd.c** — Handles commands that come across the botnet and update sharebots.
- **botnet.c** — Tracks connected bots, manages channel names, and handles pings/rejections.
- **chan.c** — Manages channels, user kicks/bans, and idle timeouts.
- **chan.h** — Common header for channel manipulation functions.
- **chanprog.c** — Handles low-level channel and chanset manipulation.
- **chanset.c** — Manages expired channel stuff and channel pointers to the userrec cache.
- **cmds.c** — Handles commands from a user via DCC, including no-IRC commands.
- **cmdsirc.c** — Handles IRC commands from users via DCC.
- **cmdt.h** — Contains command types for built-in commands.
- **dcc.c** — Manages activity and disconnects on DCC sockets.
- **dccutil.c** — Sends formatted text to various connections, manages timeouts.
- **eggdrop.h** — Compile-time settings for the bot.
- **gotdcc.c** — Processes incoming CTCP DCC requests and outgoing dcc files.
- **main.c** — Handles nick changes, flood detection, command line arguments, server connection, and interpreting responses.
- **main.h** — Includes most other include files.
- **match.c** — Performs wildcard matching for patterns.
- **mem.c** — Manages memory allocation and deallocation.
- **misc.c** — Handles string operations, logging, queueing output, and help system.
- **mode.c** — Queues and flushes mode changes made by the bot.
- **modules.c** — Supports code modules in Eggdrop.
- **modules.h** — Structures for module support.
- **msgcmds.c** — Handles all commands entered via /MSG.
- **msgnotice.c** — Manages messages and notices from users or channels, simple CTCP requests and replies.
- **net.c** — Handles raw network I/O.
- **notes.c** — Reads and sends notes, kills old notes, changes destinations.
- **patch.h** — Placeholder for patches.
- **proto.h** — Prototypes for functions used outside their own modules.
- **tandem.h** — Tracks tandem-bots in the chain and channel associations.
- **tcl.c** — Handles Tcl commands added to Eggdrop.
- **tclchan.c** — Tcl stubs for channel-oriented commands.
- **tcldcc.c** — Tcl stubs for DCC commands.
- **tclegg.h** — Stuff used by tcl.c & tclhash.c.
- **tclhash.c** — Handles bindings and procedure lookups.
- **tclhash.h** — Definitions for the hash table.
- **tclmisc.c** — Tcl stubs for file system commands and other functions.
- **tcluser.c** — Tcl stubs for user-record-oriented commands.
- **userrec.c** — Functions to find and change user records, change and check user flags.
- **users.c** — Handles bans, ignores, auto-linking bots, sending/receiving a userfile from another bot.
- **users.h** — Structures and definitions used by users.c & userrec.c.
- **english.h** — English language messages.
- **slang.h** — Slang terms for error messages.
- **module.h** — Support for code modules in Eggdrop.
- **modvals.h** — Fixed hooks for module registration.
- **filedb.c** — Handles low-level filesystem database manipulation and remote file requests.
- **files.c** — Handles all the file system commands.
- **files.h** — Structures and definitions for file handling.
- **filesys.c** — Manages file database files, reaction to remote file requests.