# Eggdrop 1.0g Bot

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer

## Description
Eggdrop is a full-featured IRC bot written in C, designed to protect channels from takeovers and manage users with various access levels.

## Key Features
- **Channel Protection**: Permanent ban lists can be stored.
- **User Management**: User records are saved on disk and alterable via DCC chat.
- **Access Levels**: Customizable flags for different user types.
- **Party Line**: A shared communication channel among bots.
- **Botnet Support**: Linked to other bots in a chain.
- **File System**: Manages files and shares them with other bots.

## File Analysis
- **bf_tab.h** — Contains Blowfish encryption constants and tables.
- **blowfish.c** — Implements the Blowfish encryption algorithm used for password protection.
- **chan.c** — Handles channel manipulation, user bans, and op management.
- **chan.h** — Defines structures and macros related to channels.
- **chanprog.c** — Manages low-level channel settings and Tcl script loading.
- **chanset.c** — Manages channel sets and checks for expired channel information.
- **cmds.c** — Handles commands from users via DCC connections.
- **cmdt.h** — Defines command types and access levels.
- **dcc.c** — Manages activity on DCC sockets, including disconnects.
- **dccutil.c** — Provides utilities for sending formatted text over various connections.
- **eggdrop.h** — Contains compile-time settings and defines for the bot.
- **english.h** — Defines strings used in error messages and prompts.
- **filedb.c** — Manages filesystem database files and reactions to remote file requests.
- **fileq.c** — Handles adding, removing, listing, and sending queued files.
- **files.c** — Implements all file system commands.
- **gotdcc.c** — Processes incoming CTCP DCC requests and outgoing dcc files.
- **hash.c** — Manages procedure lookups for msg/dcc/file commands.
- **main.c** — Handles nickname changes, flood detection, signal handling, and interpreting server responses.
- **match.c** — Provides wildcard matching functions used in various parts of the bot.
- **mem.c** — Manages memory allocation and tracking.
- **misc.c** — Contains utility functions like string operations and logging.
- **mode.c** — Handles channel mode changes and reactions to them.
- **msgcmds.c** — Manages commands entered via /MSG.
- **msgnotice.c** — Processes messages and notices from users or channels, including simple CTCP requests.
- **net.c** — Handles all raw network I/O.
- **proto.h** — Contains function prototypes used outside their own modules.
- **tandcmd.c** — Manages commands that come across the botnet and userfile transfers.
- **tandem.c** — Tracks bots in a chain, channel associations, and party-line members.
- **tcl.c** — Handles Tcl command bindings and variable manipulation.
- **tclegg.h** — Defines types of commands for Tcl bindings.
- **tclhash.c** — Manages binding and triggering of various Tcl bindings.
- **userrec.c** — Manages user records, including bans and ignores.
- **users.c** — Implements functions to test and enforce bans and ignores, add/remove users, and read the user file.
- **dcc.save** — Script for saving the entire user list to disk.
- **compat.tcl** — Scripts to implement old '+friend' commands for compatibility with older versions.
- **console.tcl** — Saves and restores a user's console mode when they leave or return.
- **gainops1.tcl** — Sends and handles requests for ops from other tandem bots on the same channel.
- **local.tcl** — Intercepts text starting with ' and sends it to local users only.
- **ntalk.irc** — Script to talk to an eggdrop bot in dcc chat.
- **ques3.tcl** — Creates HTML files showing people currently on a channel.
- **samples.tcl** — Examples of extending eggdrop with Tcl.
- **toolbox.tcl** — Useful procedures for use in Tcl scripts.
- **toolkit.tcl** — Additional Tcl utilities.
- **README** — Instructions for compiling and using the bot.
- **CONTENTS** — List of files and their purposes.
- **FEATURES** — Description of features provided by eggdrop.
- **Makefile** — Build instructions.
- **Makefile.in** — Template Makefile used during configuration.
- **UPDATES** — List of changes in recent versions.
- **botchk** — Script to check if the bot is running and restart it if necessary.
- **compiling.FAQ** — Guide for compiling eggdrop on various systems.