Basic constructor for a plugin.
Judges whether an event may be triggered, based on the event itself and the annotated required Permissions of the handler in question. Wrapper function that merely calls kameloso.plugins.common.allowImpl. The point behind it is to make something that can be overridden and still allow it to call the original logic (below).
Compile a list of our a plugin's oneliner commands.
Forwards to IRCPluginImpl.commandsImpl.
Collects all IRCEventHandler.Command command words and IRCEventHandler.Regex regex expressions that this plugin offers at compile time, then at runtime returns them alongside their descriptions and their visibility, as an associative array of IRCPlugin.CommandMetadatas keyed by command name strings.
Loads configuration for this plugin from disk.
Writes plugin resources to disk, creating them if they don't exist.
Returns the name of the plugin. (Technically it's the name of the module.)
Proxies a bus message to the plugin, to let it handle it (or not).
Forwards the supplied IRCEvent to IRCPluginImpl.onEventImpl.
Pass on the supplied IRCEvent to module-level functions annotated with an IRCEventHandler, registered with the matching IRCEvent.Types.
Lets a plugin modify an IRCEvent while it's begin constructed, before it's finalised and passed on to be handled.
Prints the plugin's Settings-annotated settings struct.
Self-test function.
Gathers the configuration text the plugin wants to contribute to the configuration file.
Change a plugin's Settings-annotated settings struct member by their string name.
Tick function. Called once every main loop iteration.
Flag denoting that IRCPluginImpl has been mixed in.
Namespace for the alias sequences of all event handler functions in this module, as well as the one of all IRCEventHandler annotations in the module.
Enables some debug output.
Name of the current module. Should never be specified and always be left to its __MODULE__ default value. Here be dragons.
final class MyPlugin : IRCPlugin { MyPluginSettings myPluginSettings; // type should be annotated @Settings at declaration // ...implementation... mixin IRCPluginImpl; }
Mixin that fully implements an IRCPlugin.
Uses compile-time introspection to call module-level functions to extend behaviour.
With UFCS, transparently emulates all such as being member methods of the mixing-in class.