NAME
POE::Component::IRC::Plugin::PlugMan - A PoCo-IRC plugin that provides plugin management services.
SYNOPSIS
use
strict;
use
warnings;
my
$botowner
=
'somebody!*@somehost.com'
;
my
$irc
= POE::Component::IRC::State->spawn();
POE::Session->create(
package_states
=> [
main
=> [
qw(_start irc_plugin_add)
],
],
);
sub
_start {
$irc
->yield(
register
=>
'all'
);
$irc
->plugin_add(
'PlugMan'
=> POE::Component::IRC::Plugin::PlugMan->new(
botowner
=>
$botowner
) );
return
;
}
sub
irc_plugin_add {
my
(
$desc
,
$plugin
) =
@_
[ARG0, ARG1];
if
(
$desc
eq
'PlugMan'
) {
$plugin
->load(
'Connector'
,
'POE::Component::IRC::Plugin::Connector'
);
}
return
;
}
DESCRIPTION
POE::Component::IRC::Plugin::PlugMan is a POE::Component::IRC plugin management plugin. It provides support for 'on-the-fly' loading, reloading and unloading of plugin modules, via object methods that you can incorporate into your own code and a handy IRC interface.
METHODS
new
Takes two optional arguments:
'botowner', an IRC mask to match against for people issuing commands via the IRC interface;
'auth_sub', a sub reference which will be called to determine if a user may issue commands via the IRC interface. Overrides 'botowner'. It will be called with three arguments: the IRC component object, the nick!user@host and the channel name as arguments. It should return a true value if the user is authorized, a false one otherwise.
'debug', set to a true value to see when stuff goes wrong;
Not setting 'botowner' or 'auth_sub' effectively disables the IRC interface.
If 'botowner' is specified the plugin checks that it is being loaded into a POE::Component::IRC::State or sub-class and will fail to load otherwise.
Returns a plugin object suitable for feeding to POE::Component::IRC's plugin_add
method.
load
Loads a managed plugin.
Takes two mandatory arguments, a plugin descriptor and a plugin package name. Any other arguments are used as options to the loaded plugin constructor.
$plugin
->load(
'Connector'
,
'POE::Component::IRC::Plugin::Connector'
, delay, 120 );
Returns true or false depending on whether the load was successfully or not.
unload
Unloads a managed plugin.
Takes one mandatory argument, a plugin descriptor.
$plugin
->unload(
'Connector'
);
Returns true or false depending on whether the unload was successfully or not.
reload
Unloads and loads a managed plugin, with applicable plugin options.
Takes one mandatory argument, a plugin descriptor.
$plugin
->reload(
'Connector'
);
loaded
Takes no arguments.
$plugin
->loaded();
Returns a list of descriptors of managed plugins.
INPUT
An IRC interface is enabled by specifying a "botowner" mask to new
. Commands may be either invoked via a PRIVMSG directly to your bot or in a channel by prefixing the command with the nickname of your bot. One caveat, the parsing of the irc command is very rudimentary (it merely splits the line on spaces).
plugin_add
Takes the same arguments as load
.
plugin_del
Takes the same arguments as unload
.
plugin_reload
Takes the same arguments as reload
.
plugin_loaded
Returns a list of descriptors of managed plugins.
plugin_list
Returns a list of descriptors of *all* plugins loaded into the current PoCo-IRC component.
AUTHOR
Chris 'BinGOs' Williams