#!/usr/bin/perl -w use strict; #use warnings; use Data::Dumper; use Net::Google; BEGIN { unless (exists $::{"Irssi::"}) { require Pod::Usage; Pod::Usage::pod2usage(-verbose => 2); } } #use SOAP::Lite; use Text::ParseWords; use vars qw($VERSION %IRSSI); use constant LOCAL_GOOGLE_KEY => "LZg/OcRQFHKpmARryqzGZTirUiRXk+78"; use Irssi qw( command_bind settings_get_bool settings_add_bool settings_get_str settings_add_str signal_add ); $VERSION = '0.01'; %IRSSI = ( authors => 'Justin Lee', contact => 'kool.name@gmail.com', name => 'googlebot', description => 'Google script... Just for fun', license => 'GPL', ); # Start of man page =head1 DESCRIPTION This simple script sux, but hey, I wrote it! lol. Anyway, it's a google bot just like the title says, it'll change over time. Right now this script is only trying to work, it will take a C<< !google >>, but I went and broke the only working part. =head2 Methods =over 5 =item C<< !google >> Used to respond to a private message and channel message, still will if someone fixes it. ;) =back =head1 AUTHOR Dean - L =cut # Start of script settings_add_str($IRSSI{'name'}, 'google_active_channels', ''); my %google_active_channels; load_globals(); signal_add('setup changed', 'load_globals'); signal_add('event privmsg', 'irc_privmsg'); sub load_globals { map { $google_active_channels{uc($_)} = 1 } quotewords(',', 0, settings_get_str('google_active_channels')); } sub find_target { my ($to, $from) = @_; if($to =~ /^#/){ return $to; # from a channel } return $from; # from a private message } sub doGoogleQuery { my ($query) = @_; my $google = Net::Google->new(key=>LOCAL_GOOGLE_KEY); my $search = $google->search(); $search->query($query); $search->lr(qw(en fr)); $search->starts_at(5); $search->max_results(15); return $search; } sub sayGoogleResults { my ($server, $target, $to, $from, $address, $results) = @_; # $server->command("msg $target You queried: $result->{'searchQuery'}"); #~~WRONG~~ $server->command("msg $target There were $results->{'estimatedTotalResultsCount'} results."); } sub irc_privmsg { my ($server, $data, $from, $address) = @_; my ($to, $message) = split(/\s+:/, $data, 2); my ($me, $target) = ($server->{'nick'}, find_target($to, $from)); # Check if it was for the channel we joined... if(uc($to) eq uc($me) or $google_active_channels{uc($to)}){ if($message =~ /^\s*!google\s(\S+)/i){ # $result will be set to 0 or 1 my $result = sayGoogleResults( $server, $target, $to, $from, $address, doGoogleQuery($1) ); # must doGoogleQuery to get final var } } return 1; }