Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

poe::component::irc::cookbook::translator(3pm) [debian 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)

Check Out this Related Man Page

POE::Component::IRC::Cookbook::Resolver(3pm)		User Contributed Perl Documentation	      POE::Component::IRC::Cookbook::Resolver(3pm)

NAME
POE::Component::IRC::Cookbook::Resolver - A bot that can resolve DNS records SYNOPSIS
This bot uses POE::Component::Client::DNS to DNS records for channel members. DESCRIPTION
#!/usr/bin/env perl use strict; use warnings; use IRC::Utils qw(parse_user); use POE; use POE::Component::Client::DNS; use POE::Component::IRC::State; use POE::Component::IRC::Plugin::AutoJoin; use POE::Component::IRC::Plugin::BotCommand; POE::Session->create( package_states => [ main => [ qw(_start irc_botcmd_resolve dns_response) ] ], ); $poe_kernel->run(); sub _start { my $heap = $_[HEAP]; my $irc = POE::Component::IRC::State->spawn( Nick => 'resolver_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 => { resolve => 'Usage: resolve <host>' } )); $heap->{dns} = POE::Component::Client::DNS->spawn(); $irc->yield(register => 'botcmd_resolve'); $irc->yield('connect'); return; } sub irc_botcmd_resolve { my $dns = $_[HEAP]->{dns}; my $nick = parse_user( $_[ARG0] ); my ($channel, $host) = @_[ARG1, ARG2]; my $res = $dns->resolve( event => 'dns_response', host => $host, context => { channel => $channel, nick => $nick, }, ); $poe_kernel->yield(dns_response => $res) if $res; return; } sub dns_response { my $irc = $_[HEAP]->{irc}; my $res = $_[ARG0]; my @answers = $res->{response} ? map { $_->rdatastr } $res->{response}->answer() : (); $irc->yield( 'privmsg', $res->{context}->{channel}, $res->{context}->{nick} . (@answers ? ": @answers" : ': no answers for "' . $res->{host} . '"') ); return; } AUTHOR
Hinrik Oern Sigur`sson, hinrik.sig@gmail.com perl v5.14.2 2011-12-07 POE::Component::IRC::Cookbook::Resolver(3pm)
Man Page