NAME
POE::Component::IRC::Plugin::AutoJoin - A PoCo-IRC plugin which keeps you on your favorite channels
SYNOPSIS
my
$nickname
=
'Chatter'
;
my
$server
=
'irc.blahblahblah.irc'
;
my
%channels
= (
'#Blah'
=>
''
,
'#Secret'
=>
'secret_password'
,
'#Foo'
=>
''
,
);
POE::Session->create(
package_states
=> [
main
=> [
qw(_start irc_join)
],
],
);
$poe_kernel
->run();
sub
_start {
my
$irc
= POE::Component::IRC::State->spawn(
Nick
=>
$nickname
,
Server
=>
$server
,
) or
die
"Oh noooo! $!"
;
$irc
->plugin_add(
'AutoJoin'
, POE::Component::IRC::Plugin::AutoJoin->new(
Channels
=> \
%channels
));
$irc
->yield(
register
=>
qw(join)
;
$irc
->yield(
connect
=> { } );
}
sub
irc_join {
my
$chan
=
@_
[ARG1];
$irc
->yield(
privmsg
=>
$chan
=>
"hi $channel!"
);
}
DESCRIPTION
POE::Component::IRC::Plugin::AutoJoin is a POE::Component::IRC plugin. If you get disconnected, the plugin will join all the channels you were on the next time it gets connected to the IRC server. It can also rejoin a channel if the IRC component gets kicked from it. It keeps track of channel keys so it will be able to rejoin keyed channels in case of reconnects/kicks.
If a POE::Component::IRC::Plugin::NickServID plugin has been added to the IRC component, then AutoJoin will wait for a reply from NickServ before joining channels on connect.
This plugin requires the IRC component to be POE::Component::IRC::State or a subclass thereof.
METHODS
new
Takes the following optional arguments:
'Channels', either an array reference of channel names, or a hash reference keyed on channel name, containing the password for each channel. By default it uses the channels the component is already on if you are using POE::Component::IRC::State.
'RejoinOnKick', set this to 1 if you want the plugin to try to rejoin a channel (once) if you get kicked from it. Default is 0.
'Rejoin_delay', the time, in seconds, to wait before rejoining a channel after being kicked (if 'RejoinOnKick' is on). Default is 5.
'Retry_when_banned', if you can't join a channel due to a ban, set this to the number of seconds to wait between retries. Default is 0 (disabled).
'NickServ_delay', how long (in seconds) to wait for a reply from NickServ before joining channels. Default is 5.
Returns a plugin object suitable for feeding to POE::Component::IRC's plugin_add
method.
AUTHOR
Hinrik Örn Sigurðsson, hinrik.sig@gmail.com