-
Notifications
You must be signed in to change notification settings - Fork 7
How to create a plugin
First, make sure you have got your [Ludolph bot installed and configured](How to install and configure Ludolph)
XMPP Extensions can be built into Ludolph core.
-
In the
ludolph/plugins
directory create a new file with the name of your plugin, e.g.sample.py
-
Inside that directory create a class with the same name as your file; it has to be a child of the
LudolphPlugin
classfrom ludolph.plugins.plugin import LudolphPlugin class Sample(LudolphPlugin): __version__ = __version__ ...
-
Each function with the
@command
decorator will be a Ludolph command -
Add a new section (it can be empty) named after your plugin file into the Ludolph configuration file; e.g.
[sample]
-
After reloading Ludolph you can use your plugin (check the log file in case of problems)
Other extensions can be created as 3rd party plugins. Creating a 3rd party plugin is almost the same as creating a core plugin. One minor difference is that when registering with Ludolph configuration file use the whole python path for the section name (like a python import); e.g. [thirdparty.plugin.sample]
We have prepared a ludolph-skeleton repository that contains the hello_world plugin. Skeleton has a structure of a pip installable application (for hello_world installation see the repository README file). It contains a plugin with three sample commands, each using a different decorators for sample usage.
Project name = ludolph_<project>
: where ludolph-<project>
is github and pypi package name
Path to plugin = ludolph_<project>.<plugin>
: where plugin
is created from plugin class name, lowercased and using underscores instead of spaces
Ludolph has a version command in its base set of commands. You can add version support to your plugin, by adding __version__
attribute into your instance of LudolphPlugin
object.
from ludolph.plugins.plugin import LudolphPlugin
from sample_plugin import __version__
class SamplePlugin(LudolphPlugin):
"""
Ludolph jabber bot sample plugin.
"""
__version__ = __version__