Bot-targa
view release on metacpan or search on metacpan
bin/bottarga view on Meta::CPAN
foreach my $k (@replies) {
my @tuple = split('\|', $k);
if ($msg =~ /\b$tuple[0]\b/i) {
return $tuple[1];
}
}
}
sub said {
my ($self, $message) = @_;
if($message->{channel} eq 'msg') {
if ($message->{body} =~ /^!say (.+)/) {
foreach my $chan (keys $self->{IRCOBJ}->{STATE}->{Chans}) {
$self->type(channel => $chan, body => $1);
}
}
return undef;
}
foreach my $k (@kickwords) {
my @tuple = split('\|', $k);
if ($message->{body} =~ /$tuple[0]/i) {
$self->{IRCOBJ}->yield(kick => $message->{channel} => $message->{who} => $tuple[1]);
return undef;
}
}
# messages to me
if (defined $message->{address} && $message->{address} eq $self->{nick}) {
if ($message->{body} =~ /^(offendi|insulta) (.*)$/) {
if($1 eq $self->{nick}) {
$self->type(channel => $message->{channel}, body => 'dottore, chiami un dottore!');
} elsif (defined $self->{IRCOBJ}->{STATE}->{Chans}->{uc($message->{channel})}->{Nicks}->{uc($1)}) {
$self->type(channel => $message->{channel}, who => $1, address => $1, body => $offese[rand @offese]);
} else {
$self->type(channel => $message->{channel}, who => $message->{who}, address => $message->{who}, body => 'non si parla male degli assenti, escluse le ex');
}
} elsif ($message->{body} eq 'pranzo' || $message->{body} eq 'mangio') {
if(!grep(/$message->{who}/, @pranzonauti)) {
push @pranzonauti, $message->{who};
}
$self->type(channel => $message->{channel}, body => 'ok');
} elsif ($message->{body} eq 'salto') {
if(@pranzonauti) {
my $i = 0;
$i++ until $pranzonauti[$i] eq $message->{who};
splice(@pranzonauti, $i, 1);
}
$self->type(channel => $message->{channel}, body => 'finocchio');
} elsif ($message->{body} eq 'chi mangia?' || $message->{body} eq 'chi pranza?') {
if(@pranzonauti) {
$self->type(channel => $message->{channel}, body => join(', ', @pranzonauti));
$self->type(channel => $message->{channel}, body => "per un totale di ".@pranzonauti." pranzonauti");
} else {
$self->type(channel => $message->{channel}, body => 'niente manciare, niente pere, per i prossimi 20 ciorni');
}
} elsif ($message->{body} =~ /^(.*)\?$/) {
if($sborropippo) {
$self->type(channel => $message->{channel}, who => $message->{who}, address => $message->{who}, body => 'le seghe');
} else {
my $ua = LWP::UserAgent->new;
$ua->agent('Bottarga');
my $req = HTTP::Request->new(GET => "https://www.googleapis.com/customsearch/v1?key=$key&cx=$cx&hl=it&num=1&q=$1");
my $res = $ua->request($req);
if ($res->is_success) {
my $json = decode_json($res->content);
if (defined $json->{items}[0]->{link}) {
$self->type(channel => $message->{channel}, who => $message->{who}, address => $message->{who}, body => $json->{items}[0]->{link});
} else {
$self->type(channel => $message->{channel}, who => $message->{who}, address => $message->{who}, body => 'boh');
}
}
}
} else {
$self->type(channel => $message->{channel}, who => $message->{who}, address => $message->{who}, body => $pongs[rand @pongs]);
}
} elsif ($message->{body} =~ /^karma (.+)/) {
$self->type(channel => $message->{channel}, body => "$1 ha karma ".getKarma(lc($1)));
} elsif ($message->{body} =~ /(.+)\+\+$/) {
if (defined $self->{IRCOBJ}->{STATE}->{Chans}->{uc($message->{channel})}->{Nicks}->{uc($1)}) {
if ($1 eq $message->{who}) {
my $msg = $autokarmas[rand @autokarmas];
$self->type(channel => $message->{channel}, who => $message->{who}, address => $message->{who}, body => $msg);
} else {
incKarma(lc($1));
}
} else {
$self->type(channel => $message->{channel}, who => $message->{who}, address => $message->{who}, body => "non vedo $1 nella lista degli invitati");
}
} elsif (findreply($message->{body})) {
$self->type(channel => $message->{channel}, body => findreply($message->{body}));
} elsif ($message->{body} =~ /[wl]an/i) {
my @reti = ('LAN', 'WAN');
$self->type(channel => $message->{channel}, body => 'da '.$reti[rand @reti].' a '.$reti[rand @reti]);
} elsif (defined $message->{body} && $message->{body} =~ /\b$self->{nick}\b/i) {
$self->type(channel => $message->{channel}, who => $message->{who}, address => $message->{who}, body => $pongs[rand @pongs]);
} elsif ($message->{body} eq '!karmas') {
$self->type(channel => $message->{channel}, body => 'Karma list:');
foreach my $k ($conf->Parameters(KARMA)) {
$self->type(channel => $message->{channel}, body => "$k:".$conf->val(KARMA, $k));
}
$self->type(channel => $message->{channel}, body => 'ChuckNorris:'.$karmachuck[rand @karmachuck]);
} elsif ($message->{body} =~ /!sborropippo (.*)/) {
if($1 eq 'off') {
$sborropippo = 0;
} elsif($1 eq 'on') {
$sborropippo = 1;
}
}
$self->schedule_tick(IDLEYAWN);
return undef;
}
sub chanjoin {
my ($self, $message) = @_;
if ($message->{who} eq OPPED) {
$self->{IRCOBJ}->yield(mode => $message->{channel} => '+o' => $message->{who});
} elsif ($message->{who} eq $self->{nick}) {
my $hello = $hellos[rand @hellos];
$self->type(channel => $message->{channel}, body => $hello);
} else {
my $greet = $greets[rand @greets];
$greet =~ s/\$nick/$message->{who}/g;
( run in 1.606 second using v1.01-cache-2.11-cpan-39bf76dae61 )