# Eggdrop 1.6.20rc2

**Category:** Eggdrop_Bot
**Original Author:** Eggheads Development Team (Unknown)

## Description
Eggdrop is a versatile IRC bot designed to automate tasks, manage channels, and handle user interactions on IRC networks.

## Key Features
- **bind/putserv**: Handles commands for joining, parting, kicking, and operating users.
- **ircd**: Interacts with the IRC server.
- **autoop**: Automatically opers the bot when it connects to a channel.
- **fileserve**: Manages file transfers via DCC (Direct Client Connection).
- **xdcc**: Supports XDCC services for distributing files.

## File Analysis
- **mod.irc** — Loads the IRC module, essential for bot interaction on IRC.
- **bg.c** — Handles background process management and thread synchronization.
- **botcmd.c** — Manages commands that come across the botnet.
- **botmsg.c** — Formats messages to be sent on the botnet and sends different messages to different versioned bots.
- **botnet.c** — Tracks connected bots, manages channel name associations, and pings bots periodically.
- **chan.h** — Common header for channel-related functions.
- **chanprog.c** — Manages server lists, revenge punishments, timers, and tcl scripts.
- **cmds.c** — Handles commands from users via DCC (Direct Client Connection).
- **cmdt.h** — Contains definitions for built-in commands.
- **dcc.c** — Manages activity on a DCC socket.
- **dccutil.c** — Provides functions to send formatted text and manage timeouts for DCC connections.
- **dns.c** — Handles DNS resolve calls and provides code used by the bot if the DNS module is not loaded.
- **eggdrop.h** — Contains compile-time settings for Eggdrop.
- **flags.c** — Handles flag matching and conversion functions.
- **flags.h** — Header file for flags definitions.
- **language.c** — Manages language support.
- **main.c** — Core event handling, signal handling, command line arguments, context, and assert debugging.
- **match.c** — Implements wildcard matching functions.
- **mem.c** — Handles memory allocation and deallocation.
- **misc.c** — Logs things, queues output for the bot, resyncs buffers for sharebots, manages help system, and displays MOTD with %var substitution.
- **misc_file.c** — Copies and moves files, checks file readability.
- **modules.c** — Supports modules in Eggdrop.
- **net.c** — Manages all raw network I/O.
- **patch.h** — Header for adding patches to Eggdrop's version string.
- **proto.h** — Prototypes for every function used outside its own module.
- **rfc1459.c** — Implements RFC 1459 protocol handling.
- **stat.h** — File attribute management.
- **tcl.c** — Handles Tcl commands and initialization.
- **tclegg.h** — Used by tcl.c and tclhash.c for internal procedures.
- **tclhash.c** — Manages bindings, triggers, and command lookups.
- **tclmisc.c** — Provides Tcl stubs for non-Tcl commands.
- **tcluser.c** — Handles user-record-oriented Tcl commands.
- **userent.c** — Manages user entries in a new style.
- **userrec.c** — Changes and checks user (and channel-specific) flags.
- **users.c** — Tests, enforces ignores, adds/removes ignores, lists ignores, auto-links bots, sends/receives userfiles, and manages users.