poe::component::irc::plugin::bottraffic(3pm) [debian man page]
POE::Component::IRC::Plugin::BotTraffic(3pm) User Contributed Perl Documentation POE::Component::IRC::Plugin::BotTraffic(3pm)NAME
POE::Component::IRC::Plugin::BotTraffic - A PoCo-IRC plugin that generates events when you send messages
SYNOPSIS
use POE::Component::IRC::Plugin::BotTraffic;
$irc->plugin_add( 'BotTraffic', POE::Component::IRC::Plugin::BotTraffic->new() );
sub irc_bot_public {
my ($kernel, $heap) = @_[KERNEL, HEAP];
my $channel = $_[ARG0]->[0];
my $what = $_[ARG1];
print "I said '$what' on channel $channel
";
return;
}
DESCRIPTION
POE::Component::IRC::Plugin::BotTraffic is a POE::Component::IRC plugin. It watches for when your bot sends PRIVMSGs and NOTICEs to the
server and generates the appropriate events.
These events are useful for logging what your bot says.
METHODS
"new"
No arguments required. Returns a plugin object suitable for feeding to POE::Component::IRC's "plugin_add" method.
OUTPUT EVENTS
These are the events generated by the plugin. Both events have "ARG0" set to an arrayref of recipients and "ARG1" the text that was sent.
"irc_bot_public"
"ARG0" will be an arrayref of recipients. "ARG1" will be the text sent.
"irc_bot_msg"
"ARG0" will be an arrayref of recipients. "ARG1" will be the text sent.
"irc_bot_action"
"ARG0" will be an arrayref of recipients. "ARG1" will be the text sent.
"irc_bot_notice"
"ARG0" will be an arrayref of recipients. "ARG1" will be the text sent.
AUTHOR
Chris 'BinGOs' Williams [chris@bingosnet.co.uk]
SEE ALSO
POE::Component::IRC
perl v5.14.2 2011-12-07 POE::Component::IRC::Plugin::BotTraffic(3pm)
Check Out this Related Man Page
POE::Component::IRC::Cookbook::Translator(3pm) User Contributed Perl Documentation POE::Component::IRC::Cookbook::Translator(3pm)NAME
POE::Component::IRC::Cookbook::Translator - A bot that can translate text
SYNOPSIS
This bot uses POE::Component::Lingua::Translate to translate text for channel members. It makes use of the "BotCommand" plugin to handle
the translate command.
DESCRIPTION
#!/usr/bin/env perl
use strict;
use warnings;
use Encode qw(decode);
use Encode::Guess;
use IRC::Utils qw(decode_irc parse_user);
use POE;
use POE::Component::IRC::State;
use POE::Component::IRC::Plugin::AutoJoin;
use POE::Component::IRC::Plugin::BotCommand;
use POE::Component::Lingua::Translate;
POE::Session->create(
package_states => [
main => [ qw(_start irc_botcmd_trans translated) ]
],
heap => {
translators => { },
}
);
$poe_kernel->run();
sub _start {
my $heap = $_[HEAP];
my $irc = POE::Component::IRC::State->spawn(
Nick => 'translator_bot',
Server => 'irc.freenode.net',
);
$heap->{irc} = $irc;
$irc->plugin_add('AutoJoin', POE::Component::IRC::Plugin::AutoJoin->new(
Channels => [ '#test_channel1', '#test_channel2' ]
));
$irc->plugin_add('BotCommand', POE::Component::IRC::Plugin::BotCommand->new(
Commands => {
trans => 'Usage: trans <from>,<to> <text>'
}
));
$irc->yield(register => 'botcmd_trans');
$irc->yield('connect');
return;
}
sub irc_botcmd_trans {
my $heap = $_[HEAP];
my $irc = $heap->{irc};
my $nick = parse_user( $_[ARG0] );
my $channel = $_[ARG1];
my ($from, $to, $text) = split /,|s+/, $_[ARG2], 3;
if (!exists $heap->{translators}->{$from . $to}) {
eval {
$heap->{translators}->{$from . $to} = POE::Component::Lingua::Translate->new(
alias => $from . $to,
back_end => 'Babelfish',
src => $from,
dest => $to,
);
};
if ($@) {
$irc->yield(privmsg => $channel, "$nick: There was an error: $@");
return;
}
}
$poe_kernel->post($from . $to => translate =>
decode_irc($text),
{
channel => $channel,
nick => $nick,
}
);
return;
}
sub translated {
my $irc = $_[HEAP]->{irc};
my ($text, $context, $error) = @_[ARG0, ARG1, ARG2];
if ($error) {
$irc->yield(
'privmsg',
$context->{channel},
$context->{nick} . ": There was an error: $error",
);
return;
}
$irc->yield(
'privmsg',
$context->{channel},
$context->{nick} . ': ' . $text,
);
return;
}
AUTHOR
Hinrik Oern Sigur`sson, hinrik.sig@gmail.com
perl v5.14.2 2011-12-07 POE::Component::IRC::Cookbook::Translator(3pm)