Plugin Loader#

Utility functions to manage plugin callables from a Python module.

Important

Its usage and documentation is for Sopel core development and advanced developers. It is subject to rapid changes between versions without much (or any) warning.

Do not build your plugin based on what is here, you do not need to.

sopel.loader.clean_callable(func, config)#

Clean the callable. (compile regexes, fix docs, set defaults)

Parameters:
  • func (callable) – the callable to clean

  • config (sopel.config.Config) – Sopel’s settings

This function will set all the default attributes expected for a Sopel callable, i.e. properties related to threading, docs, examples, rate limiting, commands, rules, and other features.

sopel.loader.clean_module(module, config)#

Clean a module and return its command, rule, job, etc. callables.

Parameters:
Returns:

a tuple with triggerable, job, shutdown, and url functions

Return type:

tuple

This function will parse the module looking for callables:

  • shutdown actions

  • triggerables (commands, rules, etc.)

  • jobs

  • URL callbacks

This function will set all the default attributes expected for a Sopel callable, i.e. properties related to threading, docs, examples, rate limiting, commands, rules, and other features.

sopel.loader.is_limitable(obj)#

Check if obj needs to carry attributes related to limits.

Parameters:

obj – any function to check

Returns:

True if obj must have limit-related attributes

Limitable callables aren’t necessarily triggerable directly, but they all must pass through Sopel’s rate-limiting machinery during dispatching. Therefore, they must have the attributes checked by that machinery.

sopel.loader.is_triggerable(obj)#

Check if obj can handle the bot’s triggers.

Parameters:

obj – any function to check

Returns:

True if obj can handle the bot’s triggers

A triggerable is a callable that will be used by the bot to handle a particular trigger (i.e. an IRC message): it can be a regex rule, an event, a CTCP command, a command, a nickname command, or an action command. However, it must not be a job or a URL callback.

See also

Many of the decorators defined in sopel.plugin make the decorated function a triggerable object.

sopel.loader.is_url_callback(obj)#

Check if obj can handle a URL callback.

Parameters:

obj – any function to check

Returns:

True if obj can handle a URL callback

A URL callback handler is a callable that will be used by the bot to handle a particular URL in an IRC message.

See also

Both sopel.plugin.url() sopel.plugin.url_lazy() make the decorated function a URL callback handler.