# Eggdrop 1.6.7 Core Bot Software

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer (and many contributors)

## Description
Eggdrop is a versatile IRC bot designed to automate tasks, manage channels, and provide services on IRC networks. It supports various features such as channel management, user interaction, and network-wide operations.

## Key Features
- **Channel Management**: Automated joining, parting, and managing of channels.
- **User Interaction**: Handling of JOIN, PART, KICK, and MODE commands.
- **Network Operations**: Botnet functionality for distributed bot networks.
- **File Services**: Provides file transfers using FSERVE and XDCC services.
- **Scripting**: Extensive use of Tcl scripting for customizing behavior.

## File Analysis
- **acconfig.h** — Template configuration header used during build process.
- **mod.irc** — Configuration module to enable basic IRC support.
- **action.fix.tcl** — Fixes for handling DCC CTCP and Telnet /me commands.
- **alltools.tcl** — Collection of various utility procedures and functions.
- **cmd_resolve.tcl** — Command to resolve hostnames or IP addresses without blocking.
- **compat.tcl** — Compatibility layer for older Tcl scripts.
- **getops.tcl** — Script for requesting and giving ops to other bots in a botnet.
- **klined.tcl** — Handles K-lines by removing servers from the bot's list when detected.
- **notes2.tcl** — Note-taking system with indexing and indexing removal features.
- **ques5.tcl** — Web file retrieval script, now obsolete.
- **sentinel.tcl** — Flood protection and BitchX CTCP simulation for strong channel protection.
- **userinfo.tcl** — User information retrieval and display system.
- **bg.c** — Background process handling to keep threads happy.
- **bg.h** — Header file for background process functions.
- **botcmd.c** — Handles commands from the botnet, userfile transfer, and update commands.
- **botmsg.c** — Formats messages sent on the botnet and sends different messages based on versioned bots.
- **botnet.c** — Manages connected bots, channel name associations, and pinging/relinking operations.
- **chan.h** — Common header for channel-related functions.
- **chanprog.c** — Handles server list maintenance, revenge punishment, timers, and initialization of Tcl scripts.
- **cmds.c** — Handles commands from users via DCC connections.
- **cmdt.h** — Header file for built-in command definitions.
- **dcc.c** — Manages activity on DCC sockets.
- **dccutil.c** — Provides functions to send formatted text over various types of connections and handles timeouts.
- **dns.c** — Handles DNS resolve calls, events, and Tcl commands related to DNS lookups.
- **eggdrop.h** — Compile-time settings for Eggdrop.
- **flags.c** — Functions for flag matching and conversion.
- **flags.h** — Header file for flag functions.
- **language.c** — Language support code.
- **main.c** — Core event handling, signal handling, command line arguments, context debugging.
- **match.c** — Wildcard matching functions.
- **mem.c** — Memory allocation and deallocation management.
- **misc.c** — Handles logging, queueing output, help system, motd display, and %var substitution.
- **misc_file.c** — File copy and move operations.
- **modules.c** — Support for loading modules in Eggdrop.
- **net.c** — Raw network input/output handling.
- **patch.h** — Header file for adding patches to the version string.
- **proto.h** — Prototypes for functions used outside their own module.
- **rfc1459.c** — IRC protocol implementation based on RFC 1459.
- **stat.h** — File attribute handling.
- **tandem.h** — Header file for tandem functionality.
- **tcl.c** — Handles Tcl commands added to Eggdrop, Tcl initialization, and variable setting/getting.
- **tcldcc.c** — Tcl stubs for DCC commands.
- **tclegg.h** — Header file used by tcl.c and tclhash.c.
- **tclhash.c** — Handles bindings, checking, triggering, adding/removing binding tables, and procedure lookups.
- **tclhash.h** — Header file for tclhash.c.
- **tclmisc.c** — Tcl stubs for file system commands and other miscellaneous functions.
- **tcluser.c** — Tcl stubs for user-record-oriented commands.
- **userent.c** — User entry handling, new style with more versatility.
- **userrec.c** — Functions to find and change user records, change and check user flags.
- **users.c** — Handles testing and enforcing ignores, adding/removing ignores, listing ignores, auto-linking bots, sending/receiving a userfile from another bot, listing users, reading the user file.
- **users.h** — Structures and definitions used by users.c and userrec.c.
- **compat.h** — Header for compatibility functions.
- **gnu_strftime.c** — GNU C Library function for strftime.
- **inet_aton.c** — Provides inet_aton() if necessary.