123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #!/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 $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, "Bonjour ".$message->{"who"}.". "
- ."Pour signaler un accident sur l'infrastructure de FDN, "
- ."il suffit d'ajouter le drapeau $flag à la fin du /topic de $chan, "
- ."suivi d'une courte information sur sa nature. Je me chargerai "
- ."personnellement de reporter instantanément celle-ci sur <$url>. "
- ."La page sera mise à jour chaque fois que le /topic changera en "
- ."gardant le drapeau. Dès lors que ce dernier disparaîtra, la "
- ."page redeviendra vierge, ce qui signalera la fin de l'accident. "
- ."Bonne chance, ".$message->{"who"}." !");
- #$self->reply($message, "SYNTAXE : /topic N'importe quoi $flag Description 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 => "irc.geeknode.org",
- port => "6667",
- channels => [$chan],
- nick => $nick,
- alt_nicks => ["${nick}_"],
- username => $nick,
- name => $url
- );
- $bot->run();
- exit 0;
|