]> jfr.im git - erebus.git/summary
 
descriptionErebus: modular IRC bot
ownerJohn Runyon
last changeThu, 28 Mar 2024 04:08:10 +0000 (22:08 -0600)
readme

Modular Python3 IRC bot

Getting started

Install croncheck.sh in your crontab, if desired.
* * * * * /path/to/erebus/croncheck.sh
To suppress croncheck.sh from restarting the bot without removing from crontab, touch dontstart

Output will be placed in logfile, which is rotated to oldlogs/. (I strongly recommend rm oldlogs/* as a weekly crontab entry. @weekly find /path/to/erebus/oldlogs/ -mtime +7 '!' -name .keep -delete)

The bot targets Python 3 only. It has some time ago switched to being primarily tested on Python 3. Python 2 support is presumed to have slowly eroded due to a lack of testing. It probably won't work.

Some modules require additional supporting materials, which can be found in modules/contrib/.

Module API

The module API has largely remained backwards-compatible and likely will remain so into the future. However, it is still currently unstable, primarily because it's only tested with the included modules. If you find a change was introduced which breaks something you relied on, please raise a bug.

There is currently no documentation as to... well, anything. A good starter template for a new module is modules/eval.py. modules/control.py uses a significant subset of the API features available. modules/foo.py is intended as a demonstration module, and documents some of the major features.

Buffering

The bot includes message buffering, with two different message queues (plus a "fast" message which sends immediately). This is to help prevent the bot from being flooded off the network by malicious users.

Unfortunately this does mean that the bot can be overwhelmed and take quite a while to respond. As an admin, you can use the !QCLEAR command to clear the queues. If you control the IRC server, you can exempt the bot from flooding checks and then set [erebus] nofakelag = 1 in the bot.config. This will turn off message buffering completely.

Using the bot

Commands can be triggered by:

Online Help

A command listing, with most (but not all) of the standard modules, is available at https://jfr.im/help/.

So long as you don't prohibit loading of the help module with [autoloads] help = 0, command info will be available with !HELP <command>

However, due to the message buffering mentioned above, there is no command listing available over IRC unless nofakelag is enabled. In order to generate a command listing, you must do the following:

  1. Set [help] path in the config file, if needed, to a path which exists and is available on the web. f.e. [help] path = /home/jrunyon/public_html/help/%(#)d.txt. Several values are available, for use with !GENHELP; they are the same as the prefix characters @#+- (see !HELP GENHELP). This determines the path to which !GENHELP will save output files.
  2. Set [help] url in the config file to a path where help can be found, f.e. [help] url = https://jfr.im/help/%d.txt. %d (or %s) will be replaced with the user's level. This determines the URL which is provided to users when they !SHOWCOMMANDS
  3. Run !GENHELP whenever you change which modules (or commands) are available, or else just set [help] autogen = 1.

(With nofakelag = 1, !SHOWCOMMANDS will spam the user with the whole list of commands.)

Support

If you have any questions, issues, fixes, etc. message DimeCadmium on irc.1459.io

shortlog
2024-03-28  John Runyonupdate comments main
2024-03-28  John Runyonrip reddark, rip good reddit
2024-03-28  John Runyonadd error checking on mysql DataErrors
2024-03-23  John Runyonuse new bind_bot, make sure the bot-on-channel sends...
2024-03-23  John Runyonadd user.bind_bot method
2024-03-23  John Runyoneval - make !SYSTEM report stderr too
2024-03-23  John Runyonuse surrogateescape instead of backslashreplace so...
2024-03-23  John Runyoneval - add !SYSTEM
2024-03-14  John Runyonrejoin uses the bot assigned to the channel
2024-03-14  John Runyonhandle 437 numeric nick reservations
2024-03-13  John Runyoncontrol - use new flags feature
2024-03-13  John Runyonadd flags parsing to modlib
2024-03-11  John Runyonadd oidentd support
2024-03-10  John Runyonsockets - use channel's bot if on channel
2024-03-03  John Runyonupdate README with new irc
2024-03-03  John Runyonurls - fix big exception if AIA encounters an SSL error
...
heads
4 weeks ago main
forks
erebus/wiki.git The former GitHub Wiki of... John Runyon 12 months ago