Plugins: Developer Overview#
Plugin glossary#
- Action command#
An action command is a Named rule that reacts to a name in a message sent with the
ACTION
CTCP command.- Command#
A command is a Named rule that reacts to a Command prefix and a name.
- Command prefix#
The command prefix is a regular expression joined to a Command’s name as its prefix. It is defined by configuration using
core.prefix
.- Entry point plugin#
A plugin that is an installed Python package and exposed through the
sopel.plugins
entry point group.- Find rule#
A find rule is a Generic rule that triggers for every time the regex matches a part of the message.
- Folder plugin#
A plugin composed of a directory that contains a
__init__.py
file. It is not considered as a proper Python package unless its parent directory is insys.path
. As they can create problems, they are not recommended, and either Single file plugin or Entry point plugin should be used instead.- Generic rule#
A generic rule matches any message using a regular expression. It doesn’t use any specific format, unlike a Named rule. It can match the whole message (Match rule), or any part of it (Search rule), or it may trigger for every match in the message (Find rule).
- Match rule#
A match rule is a Generic rule that triggers when the regex matches the whole message.
- Named rule#
A named rule is a rule that uses a regular expression with a specific format: with a name, and usually with a prefix, or a set of specific conditions. See Command, Action command, and Nick command. A named rule always matches the message from its start, and it accepts any number of arguments:
[nick] <prefix><name> [<arg1> <arg2> <...> <argN>]
A named rule can have aliases, i.e. alternative names used to trigger the rule.
- Namespace package plugin#
A plugin that is a Python namespace package, i.e. a package within a specific namespace (
sopel_modules.<name>
, wheresopel_modules
is the namespace, and<name>
is the plugin’s name). This is the old way to distribute plugins and is not recommended; Entry point plugin should be used instead.- Nick command#
A nick command (or nickname command) is a Named rule that reacts to a name prefixed by the bot’s nickname in a message.
- Plugin callable#
A plugin callable is a Python callable, that handles a specific message from the IRC server matching a Rule. See also the Plugin Anatomy: callables section for the plugin callable signature.
- Plugin job#
A plugin job is a Python callable, that executes periodically on a schedule. See also the Plugin Anatomy: jobs section for the plugin job signature.
- Rate limiting#
How often a rule can be triggered on a per-user basis, in a channel, or across the IRC network.
- Rule#
A rule defines how to match a specific message from the IRC server, usually with a regular expression. It also defines how to react to these messages. For that it can execute a callable.
- Rule system#
The rule system is how Sopel manages and handles rules.
- Search rule#
A search rule is a Generic rule that triggers when the regex matches any part of the message.
- Single file plugin#
A Sopel plugin composed of a single Python file. Can be loaded by Sopel even when it’s not available from
sys.path
.- Sopel plugin#
A Sopel plugin is a plugin made for Sopel. It contains rules, it has a setup/shutdown cycle, and it can extend the bot’s configuration with its own
section
.It is of one of the possible plugin types, preferably a Single file plugin, or an Entry point plugin. The other two types are Folder plugin and Namespace package plugin.
- Sopelunker#
A person who does Sopelunking.
- Sopelunking#
Action performed by a Sopelunker.
- URL callback#
A URL callback is a rule that triggers for every URL in a message.