POE::Component::IRC::PUsernContributedPOE::Component::IRC::Plugin::PlugMan(3p)



NAME
       POE::Component::IRC::Plugin::PlugMan - A PoCo-IRC plugin that provides
       plugin management services.

SYNOPSIS
        use strict;
        use warnings;
        use POE qw(Component::IRC::State);
        use POE::Component::IRC::Plugin::PlugMan;

        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

SEE ALSO
       POE::Component::IRC::State

       POE::Component::IRC::Plugin



perl v5.12.2                      2010POE::Component::IRC::Plugin::PlugMan(3p)
