# Eggdrop 0.9p Pre-6 Bot

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer (Unknown)

## Description
Eggdrop is a standalone IRC bot written in C, designed to protect channels and manage user access through a comprehensive configuration system. It supports various commands for channel management, user permissions, and file transfers.

## Key Features
- **Channel Protection**: Implements bans, op management, and automated responses.
- **User Management**: Allows setting of user flags, passwords, and hostmasks.
- **File Transfer Handling**: Supports DCC (Direct Client-to-Client) file transfers.
- **Command Binding**: Extends functionality through TCL scripts with commands like `.msg`, `.dcc`, and `.party`.
- **Automated Actions**: Can automatically op users on join based on configuration.

## File Analysis
- **chan.c** — Contains functions for managing the current channel, including mode changes and user operations.
- **chan.h** — Header file defining structures used in `chan.c` for channel management.
- **chanprog.c** — Handles startup programming for channels, including ban management.
- **cmds.c** — Manages message commands from users, such as `.msg`, `.dcc`, and `.party`.
- **dcc.c** — Implements DCC functionality, handling file transfers between bots and users.
- **dccutil.c** — Utility functions related to DCC connections, including timeout checks and memory management.
- **edit.c** — Built-in editor for the bot, though it is deprecated in favor of external editors.
- **eggdrop.h** — Contains compile-time settings and defines used throughout the bot.
- **fileq.c** — Manages file queues, allowing bots to handle multiple DCC transfers simultaneously.
- **files.c** — Implements file subsystems, including directory handling for DCC files.
- **gotdcc.c** — Processes incoming CTCP DCC requests and manages flood protection.
- **hash.c** — Handles command binding and execution using TCL scripts.
- **hash.h** — Header defining command access levels and bindings.
- **main.c** — Main server communication and startup logic for the bot.
- **match.c** — Implements wildcard matching functions used in channel bans and other operations.
- **mem.c** — Manages memory usage, providing debugging information if enabled.
- **misc.c** — Handles miscellaneous tasks such as logging and helpbot management.
- **mode.c** — Manages channel modes and user permissions.
- **msgcmds.c** — Processes message commands from users, including `.help` and `.info`.
- **msgnotice.c** — Manages message notices and CTCP replies.
- **net.c** — Network functions for handling connections to other bots and servers.
- **proc.c** — Process handling for various bot tasks such as DCC and shell command execution.
- **proto.h** — Header defining common prototypes used throughout the codebase.
- **tandcmd.c** — Functions related to tandem bot support, allowing multiple bots to share information.
- **tcl.c** — TCL integration, enabling dynamic command binding and execution.
- **tclhash.c** — Implements command binding using TCL scripts.
- **userrec.c** — Manages user records, including hostmasks and access flags.
- **users.c** — User data manipulation functions.
- **users.h** — Header defining structures for user management.
- **dcc.save** — Script to save the bot's user list to disk.
- **README** — Basic documentation on what Eggdrop is and how it operates.
- **FEATURES** — List of features supported by Eggdrop.
- **Makefile.in** — Makefile template used during compilation.
- **UPDATES** — Log of changes made in pre-release versions.
- **botchk** — Script to check if the bot process is running and restart it if necessary.
- **botkick** — TCL script example for adding commands to the bot.
- **botnet.doc** — Documentation on setting up a botnet with multiple Eggdrop bots.
- **compat** — Compatibility scripts for old command bindings.
- **config.h.in** — Template configuration header file.
- **configure** — Autoconf script used during compilation setup.
- **egg.config.dist** — Default configuration template for the bot.
- **eggstat** — TCL script to display statistics about user records.
- **lamestbot** — Sample configuration file for Eggdrop bots compiled with Tcl support.
- **lush.h.in** — Template header for TCL integration.
- **motd** — Message of the day file, customizable by the bot operator.
- **nets** — List of known Eggdrop botnets and their configurations.
- **putegg** — Script to copy vital files into another directory.
- **samples** — Examples of extending Eggdrop with TCL scripts.
- **tcl-commands.doc** — Documentation on additional commands added to TCL by Eggdrop.
- **tricks** — Tips and tricks for using Eggdrop effectively.
- **weed** — TCL script to clean up user records.