# Eggdrop 1.3.12 Bot

**Category:** Eggdrop_Bot
**Original Author:** Unknown

## Description
Eggdrop 1.3.12 is a standalone IRC bot designed for automated channel management, with features such as userlevel control, command triggers, and various automation scripts.

## Key Features
- **Command Triggers**: Implements commands like `.me`, `/me`, `newflag`, `putmsg`, `putnotc`, `putchan`, `putact`.
- **User-Level Control**: Manages different levels of access for users.
- **Channel Automation**: Handles channel operations such as joining, parting, kicking, and op management.
- **File Transfer Services**: Supports file serving and XDCC services.
- **CTCP Handling**: Implements CTCP commands like `FINGER`, `TIME`.
- **TCL Scripting**: Utilizes TCL for scripting various bot functionalities.

## File Analysis
- **action.fix.tcl** — Handles `/me` command actions.
- **alltools.tcl** — Includes a collection of tools and commands, authored by multiple contributors.
- **compat.tcl** — Provides compatibility functions to map old TCL functions to new ones.
- **getops-2.0.1.tcl** — A script for gaining operational status on channels.
- **klined.tcl** — Manages k-lines by automatically removing servers from the bot's list when detected.
- **ques4.tcl** — Creates HTML files listing channel members and their information periodically.
- **userinfo1.0.tcl** — Enhances `whois` output with additional user fields.
- **botcmd.c** — Handles commands that come across the botnet userfile transfer and update commands from sharebots.
- **botmsg.c** — Formats messages to be sent on the botnet, allowing different versions of bots to receive varied messages.
- **botnet.c** — Manages the botnet chain, including keeping track of connected bots and channel name associations.
- **chan.h** — Defines structures for channels and their members.
- **chanprog.c** — Handles server list maintenance, revenge punishment, timers, and tcl script loading.
- **cmds.c** — Implements commands from a user via DCC socket.
- **cmdt.h** — Contains definitions for built-in commands.
- **dcc.c** — Manages activity and disconnects on DCC sockets.
- **dccutil.c** — Handles formatted text sending to various connections, `.who`, `.whom`, and `.dccstat` code.
- **eggdrop.h** — Compilation settings for the bot.
- **flags.c** — Implements flag matching and conversion functions.
- **flags.h** — Defines flags and their usage.
- **lang.h** — Contains language support definitions.
- **language.c** — Provides language support for the bot.
- **main.c** — Handles changing nicknames, flood detection, signal handling, command line arguments, etc.
- **match.c** — Implements wildcard matching functions.
- **mem.c** — Manages memory allocation and deallocation.
- **misc.c** — Handles various miscellaneous tasks like split() maskhost(), copyfile(), movefile(), fixfrom().
- **modules.c** — Supports code modules in the bot.
- **net.c** — Handles all raw network I/O.
- **patch.h** — Placeholder for patches, allowing modular updates.
- **proto.h** — Contains function prototypes used outside their own module.
- **tandem.h** — Manages tandem-bot connections and party-line members.
- **tcl.c** — Implements Tcl stubs for commands and variable handling.
- **tcldcc.c** — Handles Tcl stubs for DCC commands.
- **tclegg.h** — Contains definitions used by tcl.c & tclhash.c.
- **tclhash.c** — Manages bindings and procedures for msg/dcc/file commands.
- **tclmisc.c** — Implements Tcl stubs for file system commands and other miscellaneous tasks.
- **tcluser.c** — Handles user-record-oriented commands in Tcl.
- **userent.c** — Manages user entry handling, new-style user records.
- **userrec.c** — Implements functions to find and change user records.
- **users.c** — Handles testing and enforcing ignores, adding/removing ignores, listing ignores, auto-linking bots, sending/receiving a userfile from a bot.
- **users.h** — Contains structures and definitions used by users.c & userrec.c.
- **module.h** — Includes all necessary include files for module work.
- **ctcp.c** — Implements CTCP handling.
- **ctcp.h** — Defines CTCP commands and their usage.
- **assoc.c** — Manages channel associations.
- **bf_tab.h** — Blowfish P-box and S-box tables.
- **blowfish.c** — Handles encryption and decryption of passwords using the Blowfish algorithm.
- **channels.c** — Supports channels within the bot, including command handling and TCL script integration.
- **channels.h** — Contains definitions for channel-related functions.