#!/usr/bin/perl package Bot; use base qw(Bot::BasicBot); use warnings; use strict; if(@ARGV && ! -w "$ARGV[0]" || !@ARGV) { if(@ARGV) { print "ERREUR: $ARGV[0] est inexistant ou non-inscriptible.\n"; } else { print "USAGE: ./$0 fichier-a-ecrire\n"; } exit 1; } my $nick = "fdnAlertBot"; my $server = "irc.geeknode.org"; my $chan = "#fdnbottest"; my $flag = "[ALERT]"; my $url = "http://fdn.ldn-fai.net"; my $git = "git clone http://repo.ldn-fai.net/repo/si-public.git"; my $isacc = 0; my $file = $ARGV[0]; my $bot; sub said { my $self = shift; my $message = shift; return 0 unless $message->{"address"}; if($message->{"address"} eq $nick || $message->{"address"} eq "msg") { if($message->{"body"} =~ m/r(?:e|é)ponse/i) { $self->reply($message, "42."); } elsif($message->{"body"} =~ m/(?:drapeau|flag|tag)/i) { $self->reply($message, $flag); } elsif($message->{"body"} =~ m/(?:url|adresse)/i) { $self->reply($message, $url); } elsif($message->{"body"} =~ m/(?:git|svn|source)/i) { $self->reply($message, $git); } elsif($message->{"body"} =~ m/merci/i) { $self->reply($message, "De rien."); } else { $self->reply($message, "Pour signaler un accident, ajouter $flag à la suite " ."du /topic, suivi d'un court descriptif. Ce dernier sera reporté sur " ."<$url>, qui sera mis à jour chaque fois qu'il changera. Retirer $flag " ."du /topic vide la page, ce qui signale la fin de l'accident."); } } } sub topic { my $self = shift; my $args = shift; if($args->{"topic"}) { if($args->{"topic"} =~ /\Q$flag\E\s*(.+)$/i) { $isacc = 1; open(OUT, ">$file"); print OUT "$1"; close(OUT); $bot->emote( channel => $chan, body => "a bien reporté l'accident sur $url" ); } elsif($isacc) { $isacc = 0; open(OUT, ">$file"); print OUT ""; close(OUT); $bot->emote( channel => $chan, body => "a bien pris en compte la fin de l'accident ($url)" ); } } } $bot = Bot->new( server => $server, port => "6667", channels => [$chan], nick => $nick, alt_nicks => ["${nick}_"], username => $nick, name => $url ); $bot->run(); exit 0;