# Eggdrop 1.8.0rc3

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

## Description
Eggdrop is a versatile IRC bot designed to manage channels by automating various tasks such as user management, channel protection, and flood control.

## Key Features
- **Botnet Support**: Manages linked bots in a network.
- **Channel Management**: Joins, part, and manages channels.
- **User Management**: Handles bans, invites, and ops.
- **Flood Control**: Protects against flooding attacks.
- **Scripting**: Supports Tcl scripting for custom functionality.

## File Analysis
- **action.fix.tcl** — Fixes mIRC dcc chat /me's and telnet session /me's.
- **alltools.tcl** — Includes various tools like toolbox, toolkit, and moretools.
- **compat.tcl** — Maps old Tcl commands to new ones for backward compatibility.
- **cmd_resolve.tcl** — Adds '.resolve' and '.dns' commands for looking up hostnames or IP addresses without blocking the bot.
- **getops.tcl** — Manages getting and giving ops between bots in a network.
- **klined.tcl** — Handles k-lines by removing servers from the bot's list when detected.
- **notes2.tcl** — Manages notes for users, providing indexing and logging functionality.
- **ques5.tcl** — Generates HTML pages with URLs and nicknames, converting them to HTML before insertion.
- **quotepass.tcl** — Handles sending 'PASS <numbers>' commands required by some servers.
- **quotepong.tcl** — Sends 'QUOTE PONG' commands when needed for EFnet servers.
- **sentinel.tcl** — Provides flood protection and integrated BitchX CTCP simulation.
- **userinfo.tcl** — Manages user information, providing whois-like functionality.

- **bg.c** — Handles background process management while keeping threads happy.
- **bg.h** — Header file for background process handling.
- **botcmd.c** — Handles commands that come across the botnet and userfile transfer from sharebots.
- **botmsg.c** — Formats messages to be sent on the botnet, sending different messages to different versioned bots.
- **botnet.c** — Manages tracking of connected bots in the chain, dumping lists, channel name associations, rejecting bots, linking, relaying, and pinging.
- **chan.h** — Common header file for channel-related functions.
- **chanprog.c** — Handles rmspace(), maintaining server list, revenge punishment, timers, utimers, initializing scripts.
- **cmds.c** — Handles commands from a user via dcc, including no-irc commands.
- **cmdt.h** — Header file for built-in commands.
- **dcc.c** — Handles activity and disconnects on dcc sockets.
- **dccutil.c** — Manages sending formatted text to various connections, '.who', '.whom', and '.dccstat' code.
- **dns.c** — Handles DNS resolve calls and events, provides Tcl commands for DNS lookups.
- **eggdrop.h** — Compile-time settings header file.
- **flags.c** — Handles flag matching and conversion functions.
- **flags.h** — Header file for flags handling.
- **language.c** — Handles language support code.
- **main.c** — Core event handling, signal handling, command line arguments, context and assert debugging.
- **match.c** — Wildcard matching functions, hostmask matching, cidr matching.
- **mem.c** — Memory allocation and deallocation, tracking memory usage.
- **misc.c** — Handles various utilities like split(), maskhost(), logging, queueing output, help system, motd display.
- **misc_file.c** — Handles file operations like copyfile() and movefile().
- **modules.c** — Supports modules in Eggdrop.
- **net.c** — Handles all raw network i/o.
- **patch.h** — Header file for adding patches to Eggdrop's version string.
- **proto.h** — Prototypes for functions used outside their own module.
- **rfc1459.c** — Implements RFC 1459 protocol handling.
- **stat.h** — File attributes header file.
- **tcl.c** — Handles Tcl commands, initialization, variable setting/getting.
- **tclegg.h** — Header file for tcl.c and tclhash.c.
- **tclhash.c** — Handles bindings, listing current bindings, adding/removing new binding tables.
- **tls.c** — TLS support functions.
- **userent.c** — User-entry handling with a more versatile structure.
- **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 userfiles from other bots.
- **users.h** — Structures and definitions used by users.c and userrec.c.