4.6 Modulation System Setup
The module setup is another core aspect of the project. Each application installed under the Communication Systems section comes with its own modulation system. Due to modularity, all routines and functions within an InspIRCd environment can be managed and controlled, or even developed and extended according to individual requirements. Therefore, this documentation entry is limited to Eggdrop; descriptions for all other standard module groups can be accessed via a link to the manufacturer, see Section 3.4 in the Table of Contents. The Eggdrop bot is written in the C programming language and provides interfaces for C modules and TCL scripts, greatly expanding the bot’s functionality. The standard modulation can be divided into the following categories.
- Statistics
- User and Channel Management
- User and Channel Tracking
- Information Storage and Search
- Channel Member Greetings
- File Serving and Distribution
- IRC Services (ChanServ, NickServ)
- Filters and Channel Bans
- Botnet Management
- Online Games
The Eggdrop bot also has a botnet, allowing multiple instances to connect, exchange data, and act in coordination. The botnet supports a "Party Line" accessible via DCC and terminal applications. Users can communicate on different channels within the botnet in a mini-IRC. Custom modules can be included at the end of a configuration file. Many modules also allow integration of entire projects and databases, or management of forums, enabling applications and programming languages, e.g., Java, to be used on another development level. The table below illustrates how the modulation system is structured.
| # Base Modules | All modules listed in this table are provided by the manufacturer as part of the standard installation. |
| alltools.tcl | Base module, part of Eggdrop standard, provides basic functionality distribution. |
| action.fix.tcl | Base module, part of Eggdrop standard, optimizes the integrated DCC chat communication protocol. |
| dccwhois.tcl | Base module, provides a protocol to query information about Internet domains and IP addresses and their owners from a distributed database system. |
| userinfo.tcl | Base module, part of Eggdrop standard, supports functions of dccwhois.tcl. |
| loadhelp userinfo.help | Base module, part of Eggdrop standard, provides a small help file or user guide. |
| # Support Modules | All modules listed in this table are developed and offered by the manufacturer and users. |
| libtclsqlite3.so | Database module, supports SQLite databases. |
| bgexec1.8.tcl | System module, starts process pipelines in the background and retrieves output via configurable callback. |
| egghttp.tcl | Network module, needed to fetch information from web servers. |
| expr_parse.tcl | Application module, allows reading triggers from a channel and sending them to other functions or modules. |
| fsck.tcl | Application module, provides text processing tools for other modules. |
| http.tcl | Network module, needed to fetch information from web servers. |
| inidb.tcl | Database module, creates a PostgreSQL database cluster. |
| sha1.tcl | Security module, verifies files and indicates whether they are error-free. |
| tls.tcl | Network module, provides an encryption protocol for secure data transmission over the Internet. |
| # User Modules | All modules listed in this table are developed and offered by users. Advertisement modules and language modules are also programmed by me; other modules may be modified and bugs fixed. |
| adbible.tcl | Advertisement module for promoting theological content in the channel. |
| adradio.tcl | Advertisement module for promoting radio stations in the channel. |
| adsermons.tcl | Advertisement module for promoting theological news in the channel. |
| alice.tcl | Language module, allows using an AI in the chat. |
| allprotection.tcl | Security module, protects the channel through precise inputs. |
| audiokjv.tcl | Advertisement module for promoting theological audiobooks in the channel. |
| bmotion.tcl | Language module, allows using an AI in the chat. Consists of a base module and hundreds of submodules. |
| botnet.tcl | Network module, required to link multiple bots or control them simultaneously. |
| countdown.tcl | Entertainment module, starts/stops a Scrabble puzzle and math task run. |
| darksky.tcl | Information module, provides weather information via an API in the channel. |
| diatheke.tcl | Information module, provides theological literature in the channel. |
| dispatch.tcl | Communication module, supports the exchange of user information. |
| entertainment.tcl | Language module, allows the use of an AI in chat. |
| geonames.tcl | Information module, retrieves location data and forwards it to other modules (e.g., weather module). |
| identify.tcl | Authentication module, automatically registers the bot with internal server services (see Atheme). |
| imdb.tcl | Information module, reads movie title information from a database and displays it in the channel. |
| love.tcl | Entertainment module, displays ASCII art in the channel. |
| megahal.tcl | Language module, allows the use of an AI in the chat. |
| message.tcl | Information module, outputs text under predefined triggers in the channel. |
| nick.tcl | Information module, displays the current participant list of a channel on a website. |
| notice.tcl | Information module, script for freely providing information, includes a user guide for the channel. |
| quran.tcl | Information module, provides theological literature in the channel. |
| readfile.tcl | Information module, reads text files directly from the local storage and displays them in the channel. |
| rss-synd.tcl | Information module, shows changes on news sites and optionally displays them in the channel (see web feeds). |
| say.tcl | Application module, allows the bot to chat in the channel or perform actions. |
| seen.tcl | Information module, stores the last connection status of a user. |
| superscript.tcl | Control module, allows the bot to be controlled directly from the channel and execute commands. |
| tell.tcl | Communication module, supports the exchange of user information. |
| translator.tcl | Information module, performs translation of foreign languages in the channel via the Yandex API. |
| trivia.tcl | Entertainment module, allows starting/stopping a trivia game in the channel. |
| urltitle.tcl | Information module, reads title information of a URL and displays it in the channel. |
| walkthrough.tcl | Information module, provides theology-based literature in the channel. |
| wolframagaz.tcl | Information module, Wolfram Alpha API, a semantic search engine for retrieving and presenting information in the channel. |
| xAutoKnown.tcl | Database module, registers participants at set intervals in the channel database. |
| Configurations | Configurations can additionally reference other modules that should be included. |
| adminserv.conf | References a service module, includes ChanServ and NickServ modules. |
Next Generation Bots
The modulation setup of Python bots is roughly similar. However, using Python simplifies many things. For example, Eggdrop modules consisting of master and slave units are already included during the installation of Limnoria. Next-generation bots can be deployed more efficiently and even save up to 90% of system resources. However, configuration options are not always as extensive and precise as with older models or programming languages.
Example, User Guide notice.tcl:
Download Module