# Eggdrop 1.3.21 Bot

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

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

## Key Features
- **Channel Management**: Auto-op, auto-deop, and other channel-related commands.
- **User Interaction**: Commands for joining channels, parting channels, signing in/out, kicking users, and more.
- **File Serving**: Capabilities to serve files via DCC (Direct Client-to-Client).
- **Scripting**: Extensive use of Tcl scripting for defining bot behavior.

## File Analysis
- **action.fix.tcl** — Handles formatting of actions in IRC messages.
- **alltools.tcl** — Includes various utility commands and scripts.
- **compat.tcl** — Provides backward compatibility with older Eggdrop versions.
- **getops-2.0.1.tcl** — Script for gaining operator status on channels.
- **klined.tcl** — Manages klines by automatically removing servers from the bot's list when detected.
- **notes2.tcl** — Allows users to save and view notes in shared bots.
- **ques4.tcl** — Generates HTML files showing channel activity.
- **userinfo1.0.tcl** — Collects user information for whois queries.
- **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.
- **botnet.c** — Manages the botnet, including tracking connected bots and channel name associations.
- **chan.h** — Defines structures for managing channels.
- **chanprog.c** — Handles various functions related to channel programming.
- **cmds.c** — Implements non-IRC commands via DCC connections.
- **cmdt.h** — Contains definitions for built-in commands.
- **dcc.c** — Manages activity and disconnections on DCC sockets.
- **dccutil.c** — Provides utilities for sending formatted text over various types of connections.
- **eggdrop.h** — Compile-time settings for the bot.
- **flags.c** — Handles flag matching and conversion functions.
- **flags.h** — Defines flags used in the bot.
- **lang.h** — Contains language support definitions.
- **language.c** — Implements language support code.
- **main.c** — Manages nickname changes, flood detection, signal handling, command line arguments, etc.
- **mem.c** — Handles memory allocation and deallocation.
- **misc.c** — Provides miscellaneous functions like split(), maskhost(), copyfile(), movefile(), fixfrom().
- **modules.c** — Supports code modules in Eggdrop.
- **modules.h** — Defines structures for code modules.
- **net.c** — Handles all raw network I/O.
- **patch.h** — Placeholder for patches and modifications.
- **proto.h** — Contains function prototypes used outside their own module.
- **tandem.h** — Manages tandem bots in the chain.
- **tcl.c** — Handles commands added to Tcl, Tcl initialization, and variable handling.
- **tcldcc.c** — Provides Tcl stubs for DCC commands.
- **tclegg.h** — Contains types of commands used by Tcl.
- **tclhash.c** — Manages bindings and procedures for msg/dcc/file commands.
- **tclmisc.c** — Handles file system commands and other non-Tcl functions.
- **tcluser.c** — Implements user-record-oriented commands in Tcl.
- **userent.c** — Handles user entry handling, new-style more versatile.
- **userrec.c** — Manages user records, flags, and changes.
- **users.c** — Handles testing and enforcing ignores, adding/removing ignores, listing ignores, auto-linking bots, sending/receiving a userfile from a bot, etc.
- **users.h** — Structures and definitions used by users.c & userrec.c.
- **assoc.c** — Manages channel associations for the assoc module.
- **bf_tab.h** — Blowfish P-box and S-box tables.
- **blowfish.c** — Handles encryption and decryption of passwords using Blowfish algorithm.
- **channels.c** — Supports channels within the bot.
- **channels.h** — Defines functions and structures related to channel management.
- **cmdschan.c** — Implements commands from a user via DCC that cause server interaction.
- **tclchan.c** — Provides Tcl stubs for channel-related commands.
- **userchan.c** — Manages user records in channels.