123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- use Irssi;
- use vars qw($VERSION %IRSSI);
- use POSIX qw(strftime);
- use LWP::UserAgent;
- $VERSION = "1.2.4";
- %IRSSI = (
- author => 'pleia2',
- contact => 'lyz@princessleia.com ',
- name => 'TC-14',
- description => 'Protocol Droid, dedicated to Lautre.roots',
- license => 'GNU GPL v2 or later',
- url => 'http://www.lautre.net/',
- );
- open ( CLOCKE, "<.irssi/randyes" ) or die "can't open randyes:$!\n";
- chomp( @randyes = <CLOCKE> );
- close CLOCKE;
- open ( CLOCKIE, "<.irssi/clockbot" ) or die "can't open clockbot:$!\n";
- chomp( @clockbot = <CLOCKIE> );
- close CLOCKIE;
- open ( CLOCKOK, "<.irssi/randok" ) or die "can't open clockbot:$!\n";
- chomp( @clockok = <CLOCKOK> );
- close CLOCKOK;
- open ( CLOCKPO, "<.irssi/quotes" ) or die "can't open clockbot:$!\n";
- chomp( @clockpo = <CLOCKPO> );
- close CLOCKPO;
- srand (time ^ $$ ^ unpack "%L*", `ps axww | gzip -f`);
- my $changefile="/home/tc-14/var/changelog";
- my $debug=0;
- my $bingo=0;
- my $last='';
- my $warn='';
- my @dad=("asr", "asr`", "asr_", "asr\\", "asr`_");
- my $timeout=30;
- my $warndate=time()-$timeout;
- Irssi::settings_add_str($IRSSI{name},
- 'tc_chans', '#flood #starwars');
- Irssi::settings_add_str($IRSSI{name},
- 'tc_admins', 'asr coin plop');
- Irssi::settings_add_str($IRSSI{name},
- 'tc_logfile', '/home/tc-14/var/chan.log');
- my @chan=split m/ /, Irssi::settings_get_str("tc_chans");
- my @admin_chan=split m/ /, Irssi::settings_get_str("tc_admins");
- my $logfile=Irssi::settings_get_str("tc_logfile");
- sub in_array {
- my ($arr,$search_for) = @_;
- return grep {$search_for eq $_} @$arr;
- }
- sub event_join {
- my ($server, $data, $nick, $host) = @_;
- my ($target) = $data =~ /^:(.*)/;
- my $admin=0;
- if (in_array(@chan,$target) || in_array(@admin_chan,$target))
- {
- return;
- }
- foreach $father (@dad) {
- if ($father eq $nick) {
- $admin=1;
- }
- }
- foreach $father (@dad ) {
- if ($nick =~ /^$father$/i) {
-
- my @messages=(
- "MSG $target Toi, $nick, je te connais, je t'ai deja vu quelque part...",
- "MSG $target Toi, $nick, je te connais, je t'ai deja vu quelque part...",
- "MSG $target Bonjour, Maître $nick",
- "action $target s'incline.",
- "action $target . o O ( Roh, v'la l'aut'guignol... )"
- );
- my $message=$messages[rand @messages];
- }
- print (">> $message -");
- $server->command ( $message );
- undef @messages;
- }
- }
- sub event_privmsg {
- my ($server, $data, $nick, $mask) =@_;
- my ($target, $text) = $data =~ /^(\S*)\s:(.*)/;
-
- sub send_server($$$$) {
- my ($action,$cible,$pseudo,$msg)=@_;
- $server->command ( "msg $target SWarn C:$cible X:$action A:$admin D:$warndate L:$last W:$warn N:$pseudo T:$msg" ) unless ($debug == 0);
- if (in_array(@chan,$target) || in_array(@admin_chan,$pseudo))
- {
- return;
- } else {
- if (($warndate + $timeout) < time()) {
- $warn='';
- $last='';
- }
- if (!($warn eq $pseudo)) {
- if ($last eq $pseudo) {
- $server->command ( "msg $cible $pseudo: Chut.");
- $warn=$nick;
- } else {
- $server->command ( "$action $cible $msg" );
- $last=$nick;
- }
- } else {
- $server->command ( "msg $cible $pseudo bloque pour $timeout" ) unless $debug=0;
- }
- $warndate=time();
- }
- }
- my $admin=0;
- if (in_array(@chan,$target) || in_array(@admin_chan,$target))
- {
- return;
- }
- foreach $father (@dad) {
- if ($father eq $nick) {
- $admin=1;
- }
- }
- my $locdate=time()-$warndate;
- if ( $text =~ /^!status/i ) {
- if ($admin == 1) {
- my $locdate=time()-$warndate;
- $server->command ( "msg $target S1 A:$admin D:$warndate L:$last W:$warn N:$nick WD:$locdate/$timeout");
- $server->command ( "msg $target S2 V:$VERSION D:$debug T:$text B:$bingo" );
- foreach $K (keys %bingovar) {
- $server->command ( "msg $target SB $K:$bingovar{$K}" );
- }
- }
- return 1;
- }
- if (($warn ne $nick) || ($locdate) > time()) {
- if ( $text =~ /^tc-14:/i ) {
- $clocky="J'cause pas aux cons, ca les instruit.";
- send_server("msg", $target, $nick, "$clocky");
- }
- elsif ( $text =~ /^tc-14/i ) {
- $clocky = $clockok[rand @clockok];
- send_server("msg", $target, $nick, "$nick: $clocky");
- }
- elsif ( $text =~ /^!password( .+)?/ ) {
- my $password ="";
- $length = $1;
- if ($1 eq '') { $length = 10; }
- elsif ($1 >60) { $length = 60; }
- elsif ($1 < 5 ) { $length = 5; }
- my $possible = 'abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
- while (length($password) < $length) {
- $password .= substr($possible, (int(rand(length($possible)))), 1);
- }
- send_server("msg", $target, $nick, "$password");
- }
- elsif ( $text =~ /n *a *(i|!) *n/i ) {
- if ( ! ($target =~ /spip/ ) ) {
- $server->command ( "msg $target C'est trois petits nains qui vont à la mine." );
- $server->command ( "msg $target Le troisième prend la pelle." );
- $server->command ( "msg $target Le second prend la pioche." );
- $server->command ( "msg $target Et le premier ? Qu'est-ce qu'il prend ?" );
-
- }
- }
- elsif ( $text =~ /..o...a.s/i ) {
- if ( ! ($target =~ /spip/ ) ) {
- if (int(rand(10)) > 6) {
- send_server("msg", $target, $nick, "Good luck, mister Gorky");
-
-
- }
- }
- }
- elsif ( $text =~ /a........o.....g/i ) {
- $clocky = $clockok[rand @clockok];
- send_server("msg", $target, $nick, $clockok);
- }
- elsif ( $text =~ /poule|coq[^u]|porc |cochon |boeuf|taureau|t-rex|tyrannosaure|..?l..?phant|canard|lapin|mouche|caribou|vache /i ) {
- $clocky = "\\_o<";
- send_server("msg", $target, $nick, $clocky);
- }
- elsif ((1==2) && ( $text =~ /(^|[ \t-()])(fuck|foutre|cul|merde|salaud|salop.*|putain|shit)([ .,?!]|$)/i ) ) {
- $clocky = "se bouche les oreilles";
- send_server("action", $target, $nick, $clocky);
- }
- elsif ( $text =~ /(th[^ ]+orie|pragmatique|delirium|spongieux|postural|fonctionnellement|cathar|quadri|capillo|drosoph)/i ) {
- if ( ! ($target =~ /spip/ ) ) {
- if (!($warn eq $nick)) {
- $last=$nick;
- $clocky = "Coche la case.";
- if ($bingovar{$1} eq "coche") {$clocky = "deja coche"}
- else {
- $bingovar{$1} = "coche";
- $bingo++;
- }
- $server->command ( "action $target $clocky" );
- if ( $bingo > 3 ) {
- undef(%bingovar);
- $bingo=0; $clocky="FOUTAISES !";
- $server->command ( "msg $target $clocky" );
- $warn=$nick;
- }
- }
- }
- }
- elsif ( $text =~ /orval|landelin|kwak|duvel|guinness|chimay|bi..?re|leffe/i ) {
- $clocky = $randyes[rand @randyes];
- send_server("msg", $target, $nick, $clocky) unless ($nick =~ /edgard/i);
- }
- elsif ( $text =~ /^!help/i ) {
- $clocky = $randyes[rand @randyes];
- send_server("msg", $target, $nick, $clocky) unless ($nick =~ /edgard/i);
- }
- elsif ( $text =~ /fortune/i ) {
- $clocky = $clockbot[rand @clockbot];
- send_server("msg", $target, $nick, $clocky) unless ($nick =~ /edgard/i);
- }
- }
- if ($debug == 1) {
- $server->command ( "msg $target D1 A:$admin L:$last W:$warn N:$nick B:$bingo" );
- my $locdate=time()-$warndate;
- $server->command ( "msg $target D2 W:$warndate T1:".time." T2:$locdate" );
- }
- }
- Irssi::signal_add('event privmsg', 'event_privmsg');
- Irssi::signal_add("event join", "event_join");
- Irssi::signal_add("message public", "event_privmsg");
- print $IRSSI{"name"}." loaded $VERSION.";
|