Go to file
Valentin Lorentz d9b1d1f49d Socket: make setTimeout catch errors.
setTimeout may be called as a supybot.drivers.poll callback,
which may by the access to supybot.drivers.poll() in _select;
so a crash in setTimeout will propage up to _run(), which would
cause a random driver to be killed because another one failed
and that's bad.

For example:

INFO 2020-05-27T18:40:18 supybot Received SIGHUP, reloading configuration.
ERROR 2020-05-27T18:40:19 supybot Uncaught exception in in drivers.run:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/supybot/drivers/__init__.py", line 104, in run
    driver.run()
  File "/usr/lib/python3/dist-packages/supybot/drivers/Socket.py", line 194, in run
    self._select()
  File "/usr/lib/python3/dist-packages/supybot/drivers/Socket.py", line 167, in _select
    [], [], conf.supybot.drivers.poll())
  File "/usr/lib/python3/dist-packages/supybot/registry.py", line 422, in __call__
    self.set(_cache[self._name])
  File "/usr/lib/python3/dist-packages/supybot/registry.py", line 476, in set
    self.setValue(float(s))
  File "/usr/lib/python3/dist-packages/supybot/registry.py", line 495, in setValue
    super(PositiveFloat, self).setValue(v)
  File "/usr/lib/python3/dist-packages/supybot/registry.py", line 482, in setValue
    super(Float, self).setValue(float(v))
  File "/usr/lib/python3/dist-packages/supybot/registry.py", line 385, in setValue
    callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/supybot/drivers/Socket.py", line 305, in setTimeout
    self.conn.settimeout(conf.supybot.drivers.poll())
OSError: [Errno 9] Bad file descriptor
ERROR 2020-05-27T18:40:19 supybot Exception id: 0x86ecf
INFO 2020-05-27T18:40:21 supybot Removing driver SocketDriver(Irc object for irchaven).
2020-05-29 19:50:28 +02:00
locales Fix msgfmt warnings. 2020-03-26 22:10:28 +01:00
man remove docs/ && move manpages to man/ 2014-12-08 09:52:42 +02:00
plugins Google: Fix false positives on embedded thumbnails (eg. Youtube results). 2020-05-28 19:07:08 +02:00
sandbox Remove fix_basestring. 2015-08-10 20:24:11 +02:00
scripts supybot-wizard: Fix crash when adding or removing owner capability. 2020-05-21 00:17:50 +02:00
src Socket: make setTimeout catch errors. 2020-05-29 19:50:28 +02:00
test irclib: Fix hang in cap nego when echo-message is available but not labeled-response. 2020-05-18 20:50:14 +02:00
.gitattributes Remove test from .gitattributes 2015-03-04 00:32:40 -05:00
.gitignore Revert changes to the structure of sdist packages. 2019-02-23 00:12:06 +01:00
.mailmap .mailmap: update my email 2020-05-15 11:28:09 -07:00
.travis.yml .travis.yml: fix indent 2020-01-25 00:12:31 +01:00
ChangeLog Use gender-neutral pronouns everywhere 2014-07-13 17:23:11 +02:00
CONTRIBUTING.md Fix broken links in CONTRIBUTING.md. 2019-01-02 14:32:22 +01:00
LICENSE.md License: Fix formatting again. (GH-862) 2014-09-22 05:27:09 +00:00
Makefile Add a symlink supybot pointing to src/ + move locales/ to src/ 2019-01-02 14:29:32 +01:00
MANIFEST.in Explicitly include test/ in release tarballs. Closes GH-1384. 2019-10-28 18:17:13 +01:00
README.md README: mention py3.8 support. 2020-05-18 23:52:40 +02:00
RELNOTES supybot-botchk: Directly execute supybot instead of running it in sh 2013-08-23 21:42:01 -04:00
requirements.txt Add a 'limnoria.plugins entrypoint, to discover plugins installed via pip/setuptools. 2020-05-08 22:02:05 +02:00
setup.py Add python 3.8 classifier. 2020-05-05 19:54:51 +02:00
supybot Add a symlink supybot pointing to src/ + move locales/ to src/ 2019-01-02 14:29:32 +01:00

Supybot is a robust (it doesnt crash), user friendly (its easy to configure) and programmer friendly (plugins are extremely easy to write) Python IRC bot. 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, as well as more than 50 builtin plugins providing around 400 actual commands.

Limnoria is the project which continues development of Supybot since 2010.

Build status

Master branch: Build Status (master branch)

Testing branch: Build Status (testing branch)

Limnoria supports CPython 3.4, 3.5, 3.6, 3.7, 3.8, 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 #supybot and #limnoria on freenode or #supybot at OFTC (we have a Limnoria there relaying, so either network works) and ask questions. Well 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 #supybot-fr on freenode.