# Eggdrop 1.1.4 Bot

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

## Description
Eggdrop 1.1.4 is a full-featured IRC bot that handles channel management, user interaction, and network operations through Tcl scripts.

## Key Features
- **Channel Management**: Handles joining, parting, kicking, and oping users.
- **User Interaction**: Processes commands from users via `/msg` or DCC connections.
- **Network Operations**: Manages flood detection and prevention.
- **File Transfer**: Supports file transfers using XDCC services.
- **Botnet Support**: Tracks connected bots within a network.

## File Analysis
- **botcmd.c** — Handles commands that come across the botnet and userfile transfer from sharebots.
- **botnet.c** — Manages tracking of connected bots, channel name associations, and pinging the bots.
- **chan.c** — Manages almost everything related to channels, including status updates and idle kicking.
- **chan.h** — Common header for `chan.c` and `mode.c`.
- **chanprog.c** — Handles server list maintenance, timers, and initialization of Tcl scripts.
- **chanset.c** — Low-level channel and chanset manipulation.
- **cmds.c** — Processes 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** — Handles sending formatted text to various connections and timeout checking.
- **eggdrop.h** — Compile-time settings for the bot.
- **english.h** — Contains strings used in error messages and file operations.
- **files.h** — Defines structures for file database management.
- **gotdcc.c** — Processes incoming CTCP DCC requests and outgoing DCC files.
- **hash.c** — Handles non-Tcl and Tcl procedure lookups for commands.
- **main.c** — Manages nickname changes, flood detection, signal handling, and server connection.
- **match.c** — Implements wildcard matching functions.
- **mem.c** — Manages memory allocation and deallocation.
- **misc.c** — Handles various utility functions like logging and queueing output.
- **mode.c** — Queues and flushes mode changes made by the bot.
- **modules.c** — Supports code modules in Eggdrop.
- **msgcmds.c** — Handles commands entered via `/MSG`.
- **msgnotice.c** — Manages messages and notices from users or channels, including simple CTCP requests.
- **net.c** — Handles all raw network I/O.
- **notes.c** — Reads and sends notes, kills old notes, and changes destinations.
- **proto.h** — Prototypes for functions used outside their own modules.
- **tandem.h** — Tracks tandem-bots in the chain.
- **tcl.c** — Handles Tcl commands added to Eggdrop.
- **tclchan.c** — Handles channel-oriented Tcl commands.
- **tcldcc.c** — Handles DCC-related Tcl commands.
- **tclegg.h** — Used by `tcl.c` and `tclhash.c`.
- **tclhash.c** — Manages bindings, unbindings, and triggering of various bindings.
- **tclmisc.c** — Handles file system commands and other miscellaneous Tcl functions.
- **tcluser.c** — Handles user-record-oriented Tcl commands.
- **userrec.c** — Adds, deletes, and changes user records.
- **users.c** — Tests and enforces bans and ignores, adds and removes bans/ignores, lists users, and reads the user file.
- **users.h** — Structures and definitions used by `users.c` and `userrec.c`.
- **assoc.c** — Manages channel name-number associations for the assoc module.
- **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 types used in the Blowfish implementation.
- **dccfiles.c** — Manages activity on DCC sockets, including disconnects.
- **filedb.c** — Handles low-level manipulation of filesystem database files.
- **fileq.c** — Adds, removes, lists, sends, and cancels queued files.
- **files.c** — Handles all file system commands.
- **filesys.c** — Manages file queue operations.
- **module.h** — Defines macros for module support.
- **modvals.h** — Defines constants used in module values.
- **tclfiles.c** — Tcl stubs for file system commands.