Eggdrop 1.10.1rc2 documentation

# Eggdrop, an open source IRC bot

Eggdrop is a free, open source software program built to assist in managing an IRC channel. It is the world’s oldest actively-maintained IRC bot and was designed to be easily used and expanded on via it’s ability to run Tcl scripts. Eggdrop can join IRC channels and perorm automated tasks such as protecting the channel from abuse, assisting users obtain their op/voice status, provide information and greetings, host games, etc.

## Some things you can do with Eggdrop

Eggdrop has a large number of features, such as:

- Channel Management

- Running Tcl Scripts

- Integration of the most current IRCv3 capabilities

- The ability to link multiple Eggdrops together and share userfiles

- TLS Support

- IPv6 Support

- Twitch Support

- … and much much more!

## How to get Eggdrop

The Eggdrop project source code is hosted at https://github.com/eggheads/eggdrop. You can clone it via git, or alternatively a copy of the current stable snapshot is located at https://geteggdrop.com. Additional information can be found on the official Eggdrop webpage at https://www.eggheads.org. For more information, see Installing Eggdrop

## How to install Eggdrop

### Installation Pre-requisites

Eggdrop requires Tcl (and its development header files) to be present on the system it is compiled on. It is also strongly encouraged to install openssl (and its development header files) to enable TLS-protected network communication.

### Installation

A guide to quickly installing Eggdrop can be found here.

## Where to find more help

The Eggheads development team can be found lurking on #eggdrop on the Libera network (irc.libera.chat).

Installing Eggdrop

- README
  - Notice
  - What is Eggdrop?
  - How to Get Eggdrop
  - System Pre-Requisites
  - Minimum Requirements
  - Quick Startup
  - Upgrading
  - Command Line
  - Auto-starting Eggdrop
  - Documentation
  - Obtaining Help
- Installing Eggdrop
  - Quick Startup
  - Cygwin Requirements (Windows)
  - Modules
- Upgrading Eggdrop
  - How to Upgrade
  - Must-read changes for Eggdrop v1.10

Using Eggdrop

- Eggdrop Features
- Eggdrop Core Settings
  - Executable Path
  - Basic Settings
  - Log Files
  - Console Settings
  - File and Directory Settings
  - Botnet/Dcc/Telnet Settings
  - Advanced Settings
  - SSL Settings
  - Modules
  - Scripts
- The Party Line
- Eggdrop Autoscripts
  - Autoscripts usage
  - Autoscripts File Structure
  - Development hints
  - Tcl Commands
- Users and Flags
- Bans, Invites, and Exempts
- Botnet Sharing and Linking
  - What is a botnet?
  - Terms
  - Example bottrees
  - Bot Flags
  - Adding and linking bots
  - Using botflags
  - Making bots share user records
  - Using certificates to authenticate Eggdrops
- IPv6 support
  - About
  - Installation
  - Usage
  - CTCP CHAT/CHAT4/CHAT6
  - Settings
- TLS support
  - About
  - Installation
  - Usage
  - Keys, certificates and authentication
  - SSL/TLS Settings
- IRCv3 support
  - About
  - Usage
  - Supported CAP capabilities
  - Errata
- Account tracking in Eggdrop
  - Required Server Capabilities
  - Enabling Eggdrop Account Tracking
  - Checking Account-tracking Status
  - Determining if a Server Supports Account Capabilities
  - Best-Effort Account Tracking
  - Using Accounts with Tcl Scripts
- Encryption/Hashing
  - Background
  - Usage
  - Tcl Interface
- Using the Python Module
  - System Requirements
  - Loading Python
  - Reloading Python Scripts
  - Multithreading and async
  - Eggdrop Python Commands
  - Writing an Eggdrop Python script
- Twitch
  - Disclaimer
  - Registering with Twitch
  - Editing the config file
  - Twitch web UI functions
  - Twitch IRC limitations
- Advanced Tips
  - Renaming commands
  - Keeping Logs
  - Self-logging
  - Modifying Default Strings
  - Modularizing Your Config File
  - Variables in Your Config
- Textfile Substitutions
- Eggdrop Tcl Commands
  - Output Commands
  - User Record Manipulation Commands
  - Channel Commands
  - DCC Commands
  - Notes Module
  - Assoc Module
  - Compress Module
  - Filesys Module
  - PBKDF2 Module
  - Miscellaneous Commands
  - Global Variables
  - Binds
  - Control Procedures
  - TCP Connections
  - Match Characters
- Eggdrop Twitch Tcl Commands
  - Commands
  - Binds
- Patching Eggdrop
  - Submitting a patch via GitHub

Tutorials

- Setting Up Eggdrop
  - Prerequisites
  - The super-short version
  - Getting the source
  - Installation
  - Configuration
  - Starting the Eggdrop
- Common First Steps
  - Log on to the partyline
  - Common first steps
  - Automatically restarting an Eggdrop
  - Authenticating with NickServ
  - Setting up SASL authentication
- Enabling TLS Security on Eggdrop
  - Pre-requisites
  - Connecting to a TLS-enabled IRC server
  - Protecting Botnet Communications
  - Additional Information
- Sharing Userfiles
  - How to share userfiles- the super-short version
  - Explaining the Linking/Sharing Process
- Writing an Eggdrop Tcl Script
- Writing a Basic Eggdrop Module
  - Module Header
  - Required Code
  - Adding a Partyline Command
  - Adding a Tcl Command
  - Adding a Tcl Bind

Eggdrop Modules

- Eggdrop Module Information
  - What are modules?
  - How to install a module
  - Can I compile Eggdrop without dynamic modules? (Static compile)
- Modules included with Eggdrop
  - Assoc Module
  - Blowfish Module
  - Channels Module
  - Compress Module
  - Console Module
  - CTCP Module
  - DNS Module
  - Filesys Module
  - Ident Module
  - IRC Module
  - Notes Module
  - PBKDF2 Module
  - Python Module
  - Seen Module
  - Server Module
  - Share Module
  - Transfer Module
  - Twitch Module
  - Woobie Module
  - Uptime Module
- How to Write an Eggdrop Module
  - Module requirements
  - What to do with a module?
- Eggdrop Bind Internals
  - General Workflow To Create a New Bind
  - Adding a New Bind Type to the Bind Table
  - Adding Bind Functionality
  - Using the Bind in Tcl
  - Triggering any Bind
  - C Binding
  - C Handler
  - Summary

About Eggdrop

- About Eggdrop
- Boring legal stuff