Sopel is, by and large, compatible with Phenny and Jenni. It is a goal of the project that modules/plugins written for those bots will work with Sopel, with a minimal amount of effort. Plugins originally written for Willie (before the rename to Sopel) should work, too.
Note that the arguments to Sopel callables are conventionally referred to as
trigger. These are functionally the same as the
input passed to phenny callables, and either naming convention will work.
Prior to the release of Sopel v4.1.0 (called Willie at the time), the following compatibility issues were known:
These are likely to affect many or all plugins and deployments.
- Sopel uses unicode more frequently and consistently than Phenny.
triggerobjects entering your callables will be unicode, and messages sent with
msg, etc. must also be unicode objects.
- Configuration files are incompatible. A tool exists to assist in converting them to Sopel’s newer, more versatile format.
- Imports of
toolsmust be changed to
from sopel import web, tools).
These only affect a small number of plugins, and/or will fail gracefully
seenare replaced by Sopel’s memory system. Plugins using them will likely still work, but may not interoperate with newer plugins as expected.
phenny.statswill be an empty dict, which will negatively impact any plugin which uses it. This is likely limited to the
.statscommand in Phenny’s
- Imports of
icaoare broken, as
icao.pyis not included in Sopel. This likely only breaks phenny’s weather plugin, the functionality of which is replaced and improved in the third-party PyPI package sopel-modules.weather.
- Imports of
ircare broken. There is not necessarily a simple solution, but the only plugin this is likely to affect is
reload, the functionality of which is replaced and improved in Sopel.
- Callables that used the deprecated function signature from phenny (e.g.
def f_time(self, origin, match, args):rather than
def f_time(phenny, input):) are not supported. This will not affect the vast majority of plugins. Those that are affected can likely be made to work (though not necessarily meet current style guidelines) by removing the
argsarguments, adding a
triggerargument, and making the following replacements:
|Replace this:||With this:|
There may be other issues, but they are not known at this time.
TODO: The following members of the
Jenni class are used in jenni, and may or may not be present or have analogs in Willie. More research is needed:
rfn, rdb, reminders, bot, doc, data, variables, notice