Browse Source

Ajout du suivi du fichier de suivi

alarig 9 years ago
parent
commit
040172042b
1 changed files with 51 additions and 39 deletions
  1. 51 39
      unefede.pl

+ 51 - 39
unefede.pl

@@ -23,17 +23,52 @@
 use warnings;
 use strict;
 
+######################################################################
+# this package was created only for checking modified files. If a    #
+# file was modified, append timestamp will be updated, you need to   #
+# have write access to checked file!                                 #
+######################################################################
+{ package check;
+  use strict;
+  use warnings;
+  use File::stat;
+  use Time::localtime;
+  use POSIX qw(strftime);
+
+  sub fichier {
+    my $file = shift();
+    my $time;
+    $time = shift() or $time = 10;
+
+    # if checked file doesn't exist, return 0
+    unless (-f $file) {
+      return(0);
+    }
+  
+    # init all local variables
+    my $ltime = strftime("%s", @{ localtime() });
+    my $atime = strftime("%s", @{ localtime(stat($file)->atime) });
+    my $mtime = strftime("%s", @{ localtime(stat($file)->mtime) });
+    my $ntime = $mtime-($time+2);
+  
+    # we check if localtime minus modified time is less than configured
+    # time. If it's true, we set a new append/modified time via utime().
+    if (($ltime-$mtime) <= $time) {
+      utime($ntime, $ntime, $file);
+      return(1);
+    } 
+    else {
+      return(0);
+    }
+  }
+}
+
 package MyBot;
 use base qw( Bot::BasicBot );
 
 binmode STDOUT, ":utf8";
 use utf8;
 
-# pour le suivi du suivi
-use File::stat;
-use Time::localtime;
-use POSIX qw(strftime);
-
 # le repectoire des données du bot aka autoconf
 my $bot_dir = `pwd`; chomp $bot_dir ; $bot_dir .= "/";
 my $wrk_dir = "wrk-dir/";
@@ -158,19 +193,26 @@ sub adh_abo_ffdn {
 # on note les RP
 sub rp {
     my $link = shift @_;
-    my $filename = "/var/www/rp/rp.txt";
+    my $filename = "/usr/share/nginx/www/rp.txt";
     my $filehandle;
     open ($filehandle, '>>', $filename) or die "Impossible d'ouvrir le fichier $filename en écriture";
     print $filehandle "$link\n";
     close $filehandle;
-    return "Une nouvelle RP à traiter est disponible à http://rp.chown.me/rp.txt (hl quota_atypique taziden)";
+    return "Une nouvelle RP à traiter est disponible à http://unefede.fdn.fr/rp.txt (hl quota_atypique taziden)";
 }
 
 ## Le bot lit le chan et réagit
 sub said {
     my ($self, $message) = @_;
-    # si on veut des info
 
+    # check if file was modified. if true we print this file when one user do
+    # something on the chan.
+    if (check::fichier("wrk-dir/suivi", 60)) {
+      return("Il y a du nouveau pour la réunion de suivi. "
+             . lecture_fichier("suivi"));
+    }
+
+    # si on veut des info
     if ($message->{body} =~ /^\Q$symbol\Einfo/) {
         shift @_;
 
@@ -479,43 +521,13 @@ sub connected {
 		  });
 }
 
-# On spam lorsque le fichier suivi est modifié
-sub check_file {
-  my $file = shift();
-  my $time = shift() 
-    or $time = 10;
-
-  my $ltime = strftime("%s", @{ localtime() });
-  debug("localtime: $ltime");
-
-  my $atime = strftime("%s", @{ localtime(stat($file)->atime) });
-  debug("atime: $atime");
-
-  my $mtime = strftime("%s", @{ localtime(stat($file)->mtime) });
-  debug("mtime: $mtime");
-
-  my $ntime = $mtime-$time;
-  debug("ntime: $ntime");
-
-  if (($ltime-$mtime) lt $time) {
-    utime($ntime, $ntime, $file);
-    return 1;
-  } 
-  else {
-    return 0;
-  }
-}
-
-if (check_file("suivi" 10)) {
-	lecture_fichier("suivi");
-}
 # aucune idée de comment on déclenche cette ligne
 sub help { "Je suis le bot de la fédé." }
 
 #Info de connexion du bot
 MyBot->new(
     server => 'irc.geeknode.org',
-    channels => [ '#bottestbot', '#ffdn'],
+    channels => [ '#fdn', '#ffdn', '#franciliens.net', '#faimaison', '#illyse'],
     nick => 'UneFede',
     username => 'bot',
     name => 'Droide de la Federation FDN, run by Vigdis'