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 )