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 make new features for.
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. There's also an easy tutorial you can follow along with, to help you learn.
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 modules
- SSL 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 modules: Wikipedia, Reddit, Bugzilla, unit conversion, and more
- Support for remembering timezone, weather location, and other information for users
- Persistent user and channel settings database using SQLite
- Ability to easily run as a daemon
- Safe asynchronous inter-module communication
- And much, much more
Project History
Sean Palmer was the original creator of the bot, which he called phenny.
Michael Yanovich 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. 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 Embolalia, Tyrope, and elad in #sopel on Freenode.
- Is there somewhere I can go to find modules other people have written for Sopel?
- You can install modules from PyPI, and there's a template you can work from to easily upload your own there.
- 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?
- Probably, but there's not much reason to. We only provide support for one version of Sopel at a time, and it already supports running multiple instances side-by-side. If you really need to containerize dependencies, virtualenv is a lot easier.
- Does Sopel work on Google App Engine?
- Probably not. App Engine doesn't currently do sqlite, which Sopel requires for its database.
- 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-independant 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 module 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 modules.
- Why is Sopel saying
...
? - Sopel is built to avoid being spammy as much as possible, so it keeps track of the last few things its 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 its 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.