0f1011081e
When a driver's run() method crashes, supybot.drivers.run() marks it as dead and sets its 'irc' attribute to None. This would be fine for "normal" independent drivers (like Socket used to be), because this driver would never be called again. But now that we use select(), some other thread may hold a reference to this driver in a select() call frame, and call the dead driver's '_read()' method when there is data to be read from the socket. There is already a safeguard in '_read()' in the case the socket could be read from, but this safeguard was missing from _handleSocketError. This caused the "live" driver's select() to crash, which propagagated to its run(), which caused the driver to be marked as dead, etc. Eventually, all drivers could die, and we end up with the dreadful "Schedule is the only remaining driver, why do we continue to live?" in an infinite loop. |
||
---|---|---|
locales | ||
man | ||
plugins | ||
sandbox | ||
scripts | ||
src | ||
test | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
ChangeLog | ||
CONTRIBUTING.md | ||
LICENSE.md | ||
Makefile | ||
MANIFEST.in | ||
pyproject.toml | ||
README.md | ||
RELNOTES | ||
requirements.txt | ||
setup.py | ||
supybot |
Limnoria is a multipurpose Python IRC bot, designed for flexibility and robustness, while being easy to install, set up, and maintain.
It aims to be an adequate replacement for most existing IRC bots. It includes a very flexible and powerful ACL system for controlling access to commands, an equality powerful configuration system to customize your bot, as well as more than 60 builtin plugins providing around 400 actual commands.
There are also dozens of third-party plugins written by dozens of independent developers, and it is very easy to write your own with only basic knowledge of Python.
It is the successor of Supybot since 2010 and provides many new features, but keeps full compatibility with existing configurations and plugins.
Build status
Limnoria supports CPython 3.4 to 3.9, CPython nightly, and Pypy 3.
Support
Documentation
If this is your first install, there is an install guide. You will probably be pointed to it if you ask on IRC how to install Limnoria. TL;DR version:
sudo apt-get install python3 python3-pip python3-wheel
pip3 install --user limnoria
# You might need to add $HOME/.local/bin to your PATH
supybot-wizard
There is extensive documentation at docs.limnoria.net and at Gribble wiki. We took the time to write it; you should take the time to read it.
IRC channels
In English
If you have any trouble, feel free to swing by #limnoria on Libera.Chat and ask questions. We’ll be happy to help wherever we can. And by all means, if you find anything hard to understand or think you know of a better way to do something, please post it on the issue tracker so we can improve the bot!
In Other languages
Only in French at the moment, located at #limnoria-fr on Libera.Chat.