]>
iEval git - poe-component-irc-plugin-seen.git/blob - Seen.pm
243a24cfad59fa32b466943d7effe9d8bd194755
1 package POE
:: Component
:: IRC
:: Plugin
:: Seen
;
11 use IRC
:: Utils qw
/lc_irc parse_user/ ;
12 use POE
:: Component
:: IRC
:: Plugin qw
/PCI_EAT_NONE PCI_EAT_PLUGIN/ ;
14 ##################################################
20 $self ->{ dbobj
} = tie
my %db , DB_File
=> $self ->{ filename
};
26 my ( $self , $nick , $event ) = @_ ;
28 $self ->{ db
}->{ $nick } = " $time $event " ;
34 my ( $self , $irc , $nick , $to , $from ) = @_ ;
35 if ( exists $self ->{ db
}->{ $nick }) {
36 $irc -> yield ( privmsg
=> $to => "I last saw $nick $self ->{db}->{ $nick }" )
38 $irc -> yield ( privmsg
=> $to => "I haven't seen $nick " )
44 my ( $self , $irc ) = @_ ;
45 $irc -> plugin_register ( $self , SERVER
=> qw
/ctcp_action join part public msg/ );
49 sub PCI_unregister
{ 1 }
52 my ( $self , $irc , $rfullname , $rchannels , $rmessage ) = @_ ;
53 my $nick = parse_user
$ $rfullname ;
55 log_event
$self , $nick => "on $ $rchannels ->[0] doing: * $ $rmessage "
59 my ( $self , $irc , $rfullname , $rchannels , $rmessage ) = @_ ;
60 my $nick = parse_user
$ $rfullname ;
61 my $mynick = $irc -> nick_name ;
63 seen
$self , $irc , $1 , $ $rchannels ->[ 0 ], $nick if $ $rmessage =~ /^(?:$mynick [,:])?\s*seen\s+([^ ]+)/x ;
64 log_event
$self , $nick => "on $ $rchannels ->[0] saying $ $rmessage "
68 my ( $self , $irc , $rfullname , $rchannel ) = @_ ;
69 my $nick = parse_user
$ $rfullname ;
71 log_event
$self , $nick => "joining $ $rchannel "
75 my ( $self , $irc , $rfullname , $rchannel , $rmessage ) = @_ ;
76 my $nick = parse_user
$ $rfullname ;
77 my $msg = $ $rmessage ?
" with message '$ $rmessage '" : '' ;
79 log_event
$self , $nick => "parting $ $rchannel $msg "
83 my ( $self , $irc , $rfullname , $rtargets , $rmessage ) = @_ ;
84 my $nick = parse_user
$ $rfullname ;
86 seen
$self , $irc , $ $rmessage , $ $rtargets ->[ 0 ], $nick if $ $rmessage =~ /^seen\s+([^ ]+)/
94 POE::Component::IRC::Plugin::Seen - PoCo-IRC plugin that remembers seeing people
98 use POE::Component::IRC::Plugin::Seen;
100 my $irc = POE::Component::IRC->spawn;
101 $irc->plugin_add(Seen => POE::Component::IRC::Plugin::Seen->new(filename => 'mycache.db'));
105 POE::Component::IRC::Plugin::Seen is a PoCo-IRC plugin that remembers what each person around it did last.
107 When somebody sends him a private message of the form 'seen NICKNAME' or somebody says 'botnick: seen NICKNAME' in a channel with the bot, the plugin answers with the last action NICKNAME did.
113 =item B<new>([I<filename> => value])
115 Creates a new plugin object suitable for L<POE::Component::IRC>'s C<plugin_add> method.
117 Takes one optional argument, C<filename>, the name of the file to store the plugin's state in. If C<undef> or not given, it keeps the state in memory.
123 L<POE::Component::IRC::Plugin>
127 Marius Gavrilescu C<< <marius@ieval.ro> >>
129 =head1 COPYRIGHT AND LICENSE
131 Copyright (C) 2013 by Marius Gavrilescu
133 This library is free software; you can redistribute it and/or modify
134 it under the same terms as Perl itself, either Perl version 5.14.2 or,
135 at your option, any later version of Perl 5 you may have available.
This page took 0.049338 seconds and 3 git commands to generate.