Fork me on GitHub


The Python IRC Bot


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. There’s also an easy tutorial you can follow, to help you get started.

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.


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.

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 Freenode.
Is there somewhere I can go to find modules other people have written for Sopel?
You can install modules from PyPI, or use your favorite search engine to find modules on GitHub, etc. There's also a template you can work from to publish your own modules 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?
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 probably a lot easier—but there is an Officially Unofficial™ Docker container available.
Does Sopel work on Google App Engine?
Probably not. App Engine doesn't currently support 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-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 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 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.
Why does Sopel spit out a bunch of warnings when I have the iPython module loaded?
This is because by default, iPython re-enables the deprecation warnings which python ignores most of the time. To suppress these warnings, put this file in ~/.ipython/profile_default/startup/