Net-Gadu

 view release on metacpan or  search on metacpan

contrib/irssi_gg.pl  view on Meta::CPAN

    } else { 
	Irssi::printformat(MSGLEVEL_NOTICES,'gginfo',$uin." jest zalogowany");
    }
}

Irssi::command_bind('list','cmd_list','gg');
sub cmd_list {
	foreach my $n (keys %nicks) {
    	    my $res = $gg->search_uin($n,1);
	    if (@{$res}->[0]->{active} == 1) {
			Irssi::printformat(MSGLEVEL_NOTICES,'gginfo',$nicks{$n}." $n zalogowany");
		} else {
			Irssi::printformat(MSGLEVEL_NOTICES,'gginfo',$nicks{$n}." $n nie zalogowany");
		}
	}
}

Irssi::command_bind('active','cmd_active','gg');
sub cmd_active {
	foreach my $n (keys %nicks) {
	    my $res = $gg->search_uin($n,1);
	    if (@{$res}->[0]->{active} == 1) {
		Irssi::printformat(MSGLEVEL_NOTICES,'gginfo',$nicks{$n}." $n zalogowany");
		}
	}   
}

Irssi::command_bind('ggmsg','cmd_ggmsg','gg');
sub cmd_ggmsg {
    my ($data,$ser,$witem) = @_;
    if (!check_session()) { return; }
    $server = $ser;
    my $add = "";
    my @d = split(/ /,$data);
    my $uin = $d[0];
    my $msg = substr($data,length($uin)+1);
    my $nick = $uin;
    
    if ($uin =~ m/[0-9]/) { # podany UIN
	if (exists($nicks{$uin})) { $nick = $nicks{$uin} };
    } else { # podany NICK
	if (scalar( grep(/$nick/,%nicks) ) > 0 ) {
	    foreach my $n (keys %nicks) { if ($nicks{$n} =~ m/$nick/) { $uin = $n; $add = " ($uin)";last; } }
	} else {
	    print_err("$nick nie jest na liscie znanych mi osob sprawdz plik ~/.gg/userlist");
	    return;
	}
    }

    Irssi::printformat(MSGLEVEL_MSGS,'ggmsg',"->",$nick.$add,$msg);
#    if (!check_session()) { return; }
    $gg->send_message_chat($uin,$msg);
}


Irssi::command_bind('away','cmd_ggaway','gg');
sub cmd_ggaway {
    my ($data) = @_;
    if (!check_session()) { return; }
    if (($data eq "")) {    $gg->set_available(); }
    if (($data ne "")) {    $gg->set_busy(); }
}

Irssi::command_bind('help','cmd_help','gg');
sub cmd_help {
    my ($data) = @_;
    
    if ($data =~ /gadu\-gadu/i) {
	Irssi::printformat(MSGLEVEL_NOTICES,'gghelp',"Eksperymentalny modul obslugujacy gadu-gadu (www.gadu-gadu.pl) dla irssi (www.irssi.org)");
	Irssi::printformat(MSGLEVEL_NOTICES,'gghelp',"Korzysta z modulu Net::Gadu (http://krzak.linux.net.pl/perl/perlgadu.html)");
	Irssi::printformat(MSGLEVEL_NOTICES,'gghelp',"Autor : Marcin Krzyzanowski <krzak\@hakore.com>\n");
	Irssi::printformat(MSGLEVEL_NOTICES,'gghelp',"/connect gadu-gadu - loguje do serwera gadu-gadu, UIN pobiera z HOME/.gg/config");
	Irssi::printformat(MSGLEVEL_NOTICES,'gghelp',"/away              - ustawia stan na dostepny lub zajety");
	Irssi::printformat(MSGLEVEL_NOTICES,'gghelp',"/finduin UIN       - sprawdza czy UIN jest zalogowany do serwera gadu-gadu");
	Irssi::printformat(MSGLEVEL_NOTICES,'gghelp',"/ggmsg UIN MSG     - wysyla MSG do UIN (UIN moze byc liczba lub wpisem z listy w ~/.gg/userlist np. /ggmsg Felek czesc)");
	Irssi::printformat(MSGLEVEL_NOTICES,'gghelp',"/quit              - wylogowuje rowniez z gadu-gadu");
	Irssi::printformat(MSGLEVEL_NOTICES,'gghelp',"/help gadu-gadu    - pomoc");
	Irssi::signal_stop();
    }
    
}

Irssi::command_bind('connect','cmd_connect','gg');
sub cmd_connect {
    my ($data,$pass) = @_;

    if ($data =~ /gadu\-gadu/i) {
	$gg->login($uin,$password); 
	$eventloop_tag = Irssi::timeout_add(1000,\&eventloop,$gg);
	Irssi::signal_stop();
	}
}


Irssi::command_bind('quit','cmd_quit','gg');
sub cmd_quit {
    if (check_session()) { $gg->logoff(); }
}

Irssi::signal_add('complete word',\&complete_word);
sub complete_word {
    my ($complist,$window,$word,$linestart,$want_space) = @_;
    if ($linestart =~ /ggmsg/) {
	foreach my $n (keys %nicks) { 
	    if ($nicks{$n} =~ m/^$word/i) { 
		push(@{$complist},$nicks{$n}); 
		}
	    }
	}
    if ($linestart =~ /connect/) {
	if ($word =~ m/g/) { push(@{$complist},"gadu-gadu"); }
    }

    if ($linestart =~ /help/) {
	if ($word =~ m/g/) { push(@{$complist},"gadu-gadu"); }
    }
}



( run in 1.951 second using v1.01-cache-2.11-cpan-a49fcb8fa48 )