Introduction
Sopel is a simple, easy-to-use, open-source IRC utility bot, written in Python. It’s designed to be easy to use, easy to run, and easy to extend.
Sopel comes with a ton of ready-made features for you to use. It can leave notes for people, give you reminders, and much more.
Sopel also comes with a fully-documented and easy-to-use API, so you can write your own features. See the developer guide to plugins for help getting started on writing your own Sopel plugins.
Developing for Sopel is a great way to familiarize yourself with Python. It’s easy to start, but there’s no limit to the cool things you can do with it.
Sopel is available on the Python Package Index, and in a tarball.
Features
- Fully documented API for writing new plugins
- SSL/TLS connection support
- IRCv3 support, with SASL authentication
- Can authenticate admins with services on networks which support it
- Easy quickstart wizard
- Dynamic topic support using topic masks
- Numerous plugins: Wikipedia, Reddit, Bugzilla, unit conversion, and more
- Persistent user and channel settings/preferences database using SQLite
- Ability to easily run as a daemon
- Safe asynchronous inter-plugin communication
- And much, much more
Project History
Sean Palmer was the original creator of the bot, which he called phenny.
yano improved it, and changed the name to jenni.
Embolalia improved it even more, with a lot of help from Dimitri Molenaars and Elad Alfassa, and renamed it to Willie, and later Sopel.
dgw took over the project from Embolalia but didn’t change the name (Yet™). This is the current and most advanced version of the bot.
A number of other people have helped out along the way, and they can be seen in the CREDITS file in Sopel’s source code.
Frequently Asked Questions
- Where can I report a problem with Sopel?
- You can file a ticket in our GitHub issue tracker, or join the developers in #sopel on Libera Chat.
- Is there somewhere I can go to find plugins other people have written for Sopel?
- You can install plugins from PyPI, or use your favorite search engine to find plugins on GitHub, etc. There's also a template you can work from to publish your own plugins on PyPI.
- Will phenny/jenni modules work with Sopel?
- Probably. There are a small number of features in the older versions which are implemented differently in Sopel. The vast majority of modules should work without problems, though.
- Can I use Sopel with Docker?
- Yes, there is an Officially Unofficial™ Docker image available. Sopel's development team is not involved in its maintenance, and there is no Unofficially Official™ support to go with it; your mileage may vary if you need to ask for help.
- Can I use Sopel with Ansible?
- One of our users created an Officially Unofficial™ Ansible role to deploy Sopel. It supports running multiple instances in parallel. As with the Docker image, availability of technical support may vary.
- Does Sopel work on Google App Engine?
- A few scattered tutorials for using SQLAlchemy on App Engine appear to exist, but we haven't formally tested anything. If you want to run Sopel on App Engine, and you find a way that works, we'd love to have instructions here!
- Does Sopel run on OSX? Windows? PyPy? Jython?
- Probably, probably, probably, probably. Sopel itself is pure Python, and an effort is made to be as platform-independent as possible. That said, most of the development is done on Linux, so some platform-specific bugs may be missed. If you do run into a bug, be sure to report it, because otherwise we won't know about it.
- How do I make Sopel give me ops when I enter a channel?
- You should use your network's services to do this. If you're on a network like EFnet which doesn't have services, you can write a plugin to make Sopel do it. Sopel will never be as good at it as network services, though, so we don't include that functionality in our default set of plugins.
- Why is Sopel saying
...
? - Sopel is built to avoid being spammy as much as possible, so it keeps track
of the last few things it's said. If too many of those last few things are the
same, it says
...
a few times instead of repeating itself (and then stops trying to say that thing entirely, until it's said some other things). Usually, this happens because someone is spamming the same command over and over, or something is just broken. It doesn't keep the bot from saying anything else, and it can say the same thing as often as you want, as long as it says some other stuff, too.