use feature ':5.10';
use POE::Session;
+use POE::Component::IRC::Plugin::Logger;
+use POE::Component::IRC::Plugin::BotTraffic;
+use POE::Component::IRC::Plugin::Connector;
+use POE::Component::IRC::Plugin::DCC;
+
use NDIRC::Dispatcher;
# We registered for all events, this will produce some debug info.
$kernel->sig( USR2 => 'sig_usr2' );
$kernel->sig( INT => 'signal_handler' );
+ $irc->plugin_add( 'BotTraffic', POE::Component::IRC::Plugin::BotTraffic->new() );
+ $irc->plugin_add( 'DCC', POE::Component::IRC::Plugin::DCC->new() );
+ $irc->plugin_add('Logger', POE::Component::IRC::Plugin::Logger->new(
+ Path => 'irclogs',
+ DCC => 0,
+ Private => 1,
+ Public => 1,
+ Sort_by_date => 1,
+ Strip_color => 1,
+ Strip_formatting => 1,
+ ));
+
$heap->{connector} = POE::Component::IRC::Plugin::Connector->new();
$irc->plugin_add( 'Connector' => $heap->{connector} );
return;
}
+sub sig_usr1 {
+ my $kernel = $_[KERNEL];
+ $kernel->yield( 'refresh' );
+}
+
sub sig_usr2 {
my $heap = $_[HEAP];
my @commands = split /\W+/, do { local $/; <COMMANDS> };
close COMMANDS;
+ say "Loading commands from: @commands";
my $disp = new NDIRC::Dispatcher;
$disp->load(@commands);
open CHANNELS, 'channels';
while (<CHANNELS>){
- print;
my ($chan, @types) = split /\s+/;
say "$chan - @types";
$disp->add_channel($chan,\@types);
my ($kernel, $signal_name, $heap) = @_[KERNEL, ARG0, HEAP];
print "First session caught SIG$signal_name\n";
- $heap->{irc}->yield(privmsg => '#testarlite', "SIGNAL $signal_name!");
-
given($signal_name){
when ('INT') {
+ exit unless $heap->{irc}->connected;
$heap->{irc}->yield(quit => 'Bye!');
$kernel->sig_handled();
}
use feature ':5.10';
use POE qw(Component::IRC::Qnet::State);
-use POE::Component::IRC::Plugin::Logger;
-use POE::Component::IRC::Plugin::BotTraffic;
-use POE::Component::IRC::Plugin::Connector;
-use POE::Component::IRC::Plugin::DCC;
use NDIRC::CommonStates;
use NDIRC::Delling;
$irc->service_bots(QBOT => 'P@cservice.netgamers.org');
-$irc->plugin_add( 'BotTraffic', POE::Component::IRC::Plugin::BotTraffic->new() );
-$irc->plugin_add( 'DCC', POE::Component::IRC::Plugin::DCC->new() );
-$irc->plugin_add('Logger', POE::Component::IRC::Plugin::Logger->new(
- Path => 'irclogs',
- DCC => 0,
- Private => 1,
- Public => 1,
- Sort_by_date => 1,
- Strip_color => 1,
- Strip_formatting => 1,
-));
-
$ND::scanchan = '#testarmer';
$ND::defchan = '#testarlite';
$ND::memchan = '#testarmer';
POE::Session->create(
package_states => [
- 'NDIRC::CommonStates' => [ qw(_default _start irc_001 sig_DIE sig_usr2 signal_handler irc_disconnected irc_invite) ],
+ 'NDIRC::CommonStates' => [ qw(_default _start irc_001 sig_DIE sig_usr1 sig_usr2
+ signal_handler irc_disconnected irc_invite) ],
'NDIRC::Delling' => [ qw(irc_public irc_msg refresh irc_join) ],
],
heap => { irc => $irc},