---
name: "POE::Component::IRC::Plugin::PlugMan"
section: "3pm"
platform: "linux"
package: "libpoe-component-irc-perl"
version: "6.93+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/POE::Component::IRC::Plugin::PlugMan"
---

# POE::Component::IRC::Plugin::PlugMan(3pm)

A PoCo-IRC plugin that provides plugin management services.

## 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
