# Eggdrop 1.1.5 Bot

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

## Description
Eggdrop 1.1.5 is a standalone IRC bot designed to automate various tasks on an IRC network, including channel management, user interaction, and file distribution.

## Key Features
- **Channel Management**: Handles channel operations such as joining, parting, kicking, and setting modes.
- **User Interaction**: Manages user bans, ignores, and op levels.
- **File Distribution**: Supports DCC (Direct Client-to-Client) file transfers.
- **Command Handling**: Processes commands from users via `/msg` or CTCP.
- **TCL Scripting**: Extensive use of TCL for scripting various functionalities.

## File Analysis
- **botcmd.c** — Handles commands that come across the botnet userfile transfer and update commands from sharebots.
- **botnet.c** — Manages tracking bots connected to the chain, channel name associations on the party line, and pinging bots periodically.
- **chan.c** — Handles almost everything related to channel manipulation, including `who` responses, kicks, bans, and idle kicking.
- **chan.h** — Contains common definitions for channel operations.
- **chanprog.c** — Manages low-level channel and chanset manipulation, maintaining server lists, and initializing Tcl scripts.
- **chanset.c** — Handles low-level channel and chanset manipulation, including channel pointers to the userrec cache and checking expired channel stuff.
- **cmds.c** — Processes commands from users via DCC sockets.
- **cmdt.h** — Defines command types for built-in commands.
- **dcc.c** — Manages activity on a DCC socket, disconnects, and other related operations.
- **dccutil.c** — Handles sending formatted text to varying types of connections, `.who`, `.whom`, and `.dccstat` code.
- **eggdrop.h** — Contains compile-time settings for the bot.
- **english.h** — Provides localization strings.
- **files.h** — Defines structures for file database management.
- **gotdcc.c** — Processes incoming CTCP DCC requests, outgoing DCC files, and flood checking.
- **hash.c** — Manages procedure lookups for msg/DCC/file commands.
- **hash.h** — Default bindings to load into the Tcl hash-tables.
- **main.c** — Handles changing nicknames, flood detection, signal handling, command line arguments, connecting to a server, and interpreting server responses.
- **match.c** — Implements wildcard matching functions.
- **mem.c** — Manages memory allocation and deallocation.
- **misc.c** — Handles various utility functions such as string operations, logging, queueing output, resync buffers for sharebots, help system, and MOTD display.
- **mode.c** — Queues and flushes mode changes made by the bot, handles channel mode changes, and sets/get current wanted channel modes.
- **modules.c** — Supports code modules in Eggdrop.
- **modules.h** — Defines structures and functions for supporting code modules.
- **msgcmds.c** — Handles all 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, kills old notes, and changes destinations.
- **proto.h** — Contains function prototypes used outside their own modules.
- **tandem.h** — Keeps track of tandem-bots in the chain and channel associations.
- **tcl.c** — Handles Tcl commands added to Eggdrop.
- **tclchan.c** — Manages Tcl stubs for channel-oriented commands.
- **tclegg.h** — Used by tcl.c & tclhash.c, defines command types.
- **tclhash.c** — Manages bind and unbind operations, checking and triggering bindings, and listing current bindings.
- **tclmisc.c** — Handles Tcl stubs for file system commands and other miscellaneous functions.
- **tcluser.c** — Manages Tcl stubs for user-record-oriented commands.
- **userrec.c** — Contains functions to find and change user records, change and check user flags.
- **users.c** — Tests and enforces bans and ignores, adds/removes bans/ignores, lists bans/ignores, auto-links bots, sends/receives a userfile from a bot, and reads the user file.
- **users.h** — Structures and definitions used by users.c & userrec.c.
- **assoc.c** — Manages channel name-number associations for module work.
- **bf_tab.h** — Blowfish P-box and S-box tables.
- **blowfish.c** — Handles encryption and decryption of passwords using the Blowfish algorithm.
- **blowfish.h** — Defines constants and unions used in the Blowfish implementation.
- **dccfiles.c** — Manages activity on DCC sockets, disconnects, and other related operations.
- **filedb.c** — Low-level manipulation of filesystem database files and reactions to remote requests for files.
- **files.c** — Handles all file system commands.
- **filesys.c** — Manages file system commands in a modular context.
- **filesys.h** — Defines functions for managing the filesystem database.
- **tclfiles.c** — Tcl stubs for file system commands, used to support modules.
- **transfer.c** — Handles file transfers and related operations.
- **action.fix.tcl** — Implements actions based on received text.
- **alltools.tcl** — Includes various tools such as `newflag`, `userstore`, etc.
- **console.tcl** — Saves and restores user console modes upon leaving or returning to the bot.
- **dike.tcl** — Detects floodnets by analyzing message patterns.
- **getops-1.8.tcl** — Implements GetOps-like functionality for managing bans and un-bans.
- **local.tcl** — Localizes text messages from party-line users.
- **ques3.tcl** — Generates HTML files showing channel activity.
- **samples.tcl** — Provides examples of extending Eggdrop with TCL.