X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=ndawn.pl;h=eecf5ee2c0d231bd8ec0d506cb1854735fd68c72;hb=4c40fd39668614135ae9370092b5d17355bad15c;hp=e1b08a59eb21e5b930557c38882174da8064fa06;hpb=e8c94cdebefdc428ea92fde6db63f18d3e8399b2;p=NDIRC.git diff --git a/ndawn.pl b/ndawn.pl index e1b08a5..eecf5ee 100755 --- a/ndawn.pl +++ b/ndawn.pl @@ -24,18 +24,9 @@ use warnings; 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 ND::DB; -use ND::Include; -use NDIRC::Dispatcher; -use NDIRC::Context; -use NDIRC::Command; -use NDIRC::Misc; use NDIRC::CommonStates; +use NDIRC::Eos; my $nickname = 'ndbot'; my $ircname = 'ND test bot'; @@ -51,118 +42,17 @@ my $irc = POE::Component::IRC::Qnet::State->spawn( $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, -)); - -my $DBH = DB(); -my $TICK = $DBH->selectrow_array('SELECT tick()'); - $ND::scanchan = '#testarmer'; $ND::defchan = '#testarlite'; $ND::memchan = '#testarmer'; POE::Session->create( package_states => [ - 'NDIRC::CommonStates' => [ qw(_default _start irc_001 sig_DIE signal_handler irc_disconnected irc_invite) ], - main => [ qw(irc_public irc_msg refresh sig_usr2 irc_join) ], + 'NDIRC::CommonStates' => [ qw(_default _start irc_001 sig_DIE sig_usr1 sig_usr2 + signal_handler irc_disconnected irc_invite) ], + 'NDIRC::Eos' => [ qw(irc_public irc_msg refresh irc_join) ], ], - heap => { irc => $irc}, + heap => { irc => $irc }, ); $poe_kernel->run(); - - -sub sig_usr2 { - my $heap = $_[HEAP]; - - my $disp = new NDIRC::Dispatcher; - - $disp->load(qw/Basic SMS Channel Def Intel Members PA Quotes Usermgm/); - - open CHANNELS, 'channels'; - while (){ - print; - my ($chan, @types) = split /\s+/; - say "$chan - @types"; - $disp->add_channel($chan,\@types); - } - close CHANNELS; - - $heap->{disp} = $disp; -} - - -sub irc_public { - my ($sender, $heap, $who, $where, $msg) = @_[SENDER, HEAP, ARG0 .. ARG2]; - my ($nick,$username,$address) = ( split /[!@]/, $who ); - my $channel = $where->[0]; - - my $irc = $sender->get_heap(); - - #$irc->yield(privmsg => $channel, "Authed? " . $irc->is_nick_authed($nick)); - - if ($msg =~ /^(\S+): (.+)$/ && $heap->{disp}->has_command('anon',$channel)){ - my $_ = $1; - my $text = $2; - unless ($irc->is_channel_member($channel,$1) || /(Constructing|Researching)/){ - $msg = ".anon $_ $text"; - } - - } - if (parseCommand($msg,$irc,$nick,$address,$channel,$heap->{disp},DB())){ - #Command parsed and run successfully - } -} - - -sub irc_msg { - my ($sender, $heap, $who, $where, $msg) = @_[SENDER, HEAP, ARG0 .. ARG2]; - my ($nick,$username,$address) = ( split /[!@]/, $who ); - my $irc = $sender->get_heap(); - - if (parseCommand($msg,$irc,$nick,$address,'pm',$heap->{disp},DB())){ - #Command parsed and run successfully - } -} - -sub irc_join { - my ($sender, $heap, $who, $channel) = @_[SENDER, HEAP, ARG0 .. ARG1]; - my ($nick,$username,$address) = ( split /[!@]/, $who ); - my $irc = $sender->get_heap(); - - if($heap->{disp}->has_command('voice',$channel)){ - my $dbh = DB(); - my $flags = $dbh->prepare_cached(q{ -SELECT DISTINCT flag -FROM users u - JOIN groupmembers g USING (uid) - JOIN channel_group_flags gf USING (gid) -WHERE u.hostmask = $1 AND channel = $2 AND flag IN ('o','v'); - }); - $flags->execute($address, $channel); - my $mode = ''; - my @who; - while (my ($flag) = $flags->fetchrow()){ - $mode .= $flag; - push @who, $nick; - } - say "$mode - @who"; - $irc->yield(mode => $channel, $mode, @who) if $mode; - } -} - -sub refresh { - my ($kernel,$heap) = @_[KERNEL,HEAP]; - print 'Time: ' . time() . ' Lag: ' . $heap->{connector}->lag() . "\n"; - $kernel->delay( refresh => 60 ); - return; -}