#!/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 = "#fdn"; 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/\br(?:e|é)ponse\b/i) { $self->reply($message, "42."); } elsif($message->{"body"} =~ m/\b(?:drapeau|flag|tag)\b/i) { $self->reply($message, $flag); } elsif($message->{"body"} =~ m/\b(?:url|adresse)\b/i) { $self->reply($message, $url); } elsif($message->{"body"} =~ m/\b(?:git|svn|source)\b/i) { $self->reply($message, $git); } elsif($message->{"body"} =~ m/\bmerci\b/i) { $self->reply($message, "De rien."); } else { $self->reply($message, "Pour signaler un problème, 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 du problème."); } } } sub topic { my $self = shift; my $args = shift; if($args->{"topic"}) { if($args->{"topic"} =~ /\b\Q$flag\E\s*(.+)\b$/i) { $isacc = 1; open(OUT, ">$file"); print OUT "$1"; close(OUT); $bot->emote( channel => $chan, body => "a bien reporté le problème 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 du problème ($url)" ); } } } $bot = Bot->new( server => $server, port => "6667", channels => [$chan], nick => $nick, alt_nicks => ["${nick}_"], username => $nick, name => $url ); $bot->run(); exit 0;