fdn-accbot.pl 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/perl
  2. # git clone http://repo.ldn-fai.net/repo/si-public.git
  3. package Bot;
  4. use base qw(Bot::BasicBot);
  5. use warnings;
  6. use strict;
  7. if(@ARGV && ! -w "$ARGV[0]" || !@ARGV) {
  8. if(@ARGV) {
  9. print "ERREUR: $ARGV[0] est inexistant ou non-inscriptible.\n";
  10. } else {
  11. print "USAGE: ./$0 fichier-a-ecrire\n";
  12. }
  13. exit 1;
  14. }
  15. my $nick = "accbot";
  16. my $chan = "#fdnbotteste";
  17. my $url = "http://fdn.ldn-fai.net";
  18. my $file = $ARGV[0];
  19. my $flag = "[ACC]";
  20. my $isacc = 0;
  21. my $bot;
  22. sub said {
  23. my $self = shift;
  24. my $message = shift;
  25. return 0 unless $message->{"address"};
  26. if($message->{"address"} eq $nick || $message->{"address"} eq "msg") {
  27. $self->reply($message, "$url - SYNTAXE : /topic N'importe quoi $flag Description de l'accident");
  28. }
  29. }
  30. sub topic {
  31. my $self = shift;
  32. my $args = shift;
  33. if($args->{"topic"}) {
  34. if($args->{"topic"} =~ /^.*\Q$flag\E\s*(.+)$/i) {
  35. $isacc = 1;
  36. open(OUT, ">$file");
  37. print OUT "$1";
  38. close(OUT);
  39. $bot->emote(
  40. channel => $chan,
  41. body => "a bien reporté l'accident sur $url"
  42. );
  43. } elsif($isacc) {
  44. $isacc = 0;
  45. open(OUT, ">$file");
  46. print OUT "";
  47. close(OUT);
  48. $bot->emote(
  49. channel => $chan,
  50. body => "a bien pris en compte la fin de l'accident ($url)"
  51. );
  52. }
  53. }
  54. }
  55. $bot = Bot->new(
  56. server => "irc.geeknode.org",
  57. port => "6667",
  58. channels => [$chan],
  59. nick => $nick,
  60. alt_nicks => ["${nick}_"],
  61. username => $nick,
  62. name => $url
  63. );
  64. $bot->run();
  65. exit 0;