Log.tcl
#16
Ah oui en effet x)

tcl
########################################################
#        Eggdrop Logger 2.0 - <a href="http://www.mircstats.com" target="_blank">http://www.mircstats.com</a>        #
#        Logging in mIRC 6.17 format. 27/04/2006       #
#                                                      #
#   Make sure you have created the dir 'logger(dir)'   #
#                                                      #
#         Created by Lanze <simon@freeworld.dk>        #
#         Improved by zowtar <zowtar@gmail.com>        #
#                                                      #
########################################################
 
 
### Configuration ###
 
# Salon
set logx "#accueil"
 
#;;; Where the logs will be saved.
set logger(dir) "/var/www/virtual/tchat-live.org/htdocs/"
 
#;;; Strip codes?
#;;; 0 = save codes\colors
#;;; 1 = no save codes\colors
set logger(strip) "0"
 
#;;; Save by Day, Week, Month or Disable?
set logger(time) "Day"
 
# Modes
set logger(color1) "<font color='#FF0000'>"
# Text
set logger(color2) "<font color='#008080'>"
# Action
set logger(color3) "<font color='#9C009C'>"
# Notice / other
set logger(color4) "<font color='#7F0000'>"
# Timestamps
set logger(color5) "<font color='#0000FF'>"
# Topic
set logger(color6) "<font color='#D889B8'>"
# Join
set logger(color7) "<font color='#FFCC00'>"
# Part
set logger(color8) "<font color='#669900'>"
# Nick
set logger(color9) "<font color='#AA0078'>"
# Quit
set logger(color10) "<font color='#000000'>"
 
 
# # # # # # # # # # # # # # # #   DO NOT CHANGE ANYTHING BELOW HERE   # # # # # # # # # # # # # # # #
 
 
bind raw - "MODE" logger:raw
 
proc logger:raw { from keyword text } {
   global logger logx
   set nick [lindex [split $from "!"] 0]
   set chan [lindex [split $text] 0]
   regsub -all "#" $chan "" chan
   set mode [lindex [split $text] 1]
   set arguments [lrange [split $text] 2 end]
   if {[validchan $chan] && [string tolower $chan] == "$logx" } {
      logger:save $chan "$logger(color1)* $nick sets mode: $mode $arguments"
   }
}
 
 
### Events
bind join - "$logx *!*@*" logger:join
bind part - "$logx *!*@*" logger:part
bind sign - "$logx *!*@*" logger:quit
bind pubm - "$logx*" logger:text
bind nick - "$logx *" logger:nick
bind kick - "$logx *" logger:kick
# bind mode - "$logx *" logger:mode
bind topc - "$logx *" logger:topic
bind raw - "333" logger:topic-author
bind ctcp - "ACTION" logger:action
bind notc - * logger:notice
bind rejn - "$logx *!*@*" logger:rejn
bind splt - "$logx *!*@*" logger:split
 
 
### Primary Commands
proc logger:join {nick uhost handle chan} {
set chan [string tolower $chan]
  global logger botnick
  if {$nick == $botnick} {
    if {[file exists "$logger(dir)$chan.html"] == "0" } {
      set log "[open "$logger(dir)$chan.html" a]"
      puts $log "<html><head><title>$chan [strftime "%d%b%G"]</title></head>"
      puts $log "<body bgcolor=\"#000000\"><tt>"
      close $log
#      putquick "TOPIC $chan"
    }
    set log "[open "$logger(dir)$chan.html" a]"
    puts $log "<br>"
    puts $log "$logger(color5)Session Start: [strftime "%a %b %d %T %Y"]</font><br>"
    puts $log "$logger(color5)Session Ident: $chan</font><br>"
    puts $log "$logger(color5)\[[strftime "%a%d%b.%H:%M:%S"]\]</font> $logger(color1)* Now talking in $chan</font><br>"
    close $log
  } else {
    logger:save $chan "$logger(color7)* Joins: $nick ($uhost)"
  }
}
 
proc logger:rejn { nick uhost handle chan } {
set chan [string tolower $chan]
   global logger
   logger:save $chan "$logger(color7)* Rejoin from split: $nick ($uhost)"
}
 
proc logger:part {nick uhost handle chan msg} {
set chan [string tolower $chan]
  global logger
  if {$msg == ""} {
    logger:save $chan "$logger(color8)* Parts: $nick ($uhost)"
    #logger:save $chan "$logger(color1)* $nick ($uhost) has left $chan"
  } else {
    logger:save $chan "$logger(color8)* Parts: $nick ($uhost) ($msg)"
    #logger:save $chan "$logger(color1)* $nick ($uhost) has left $chan ($msg)"
  }
}
 
proc logger:quit {nick uhost handle chan reason} {
set chan [string tolower $chan]
  global logger
  logger:save $chan "$logger(color10)* Quits: $nick ($uhost) ($reason)"
  #logger:save $chan "$logger(color1)* $nick ($uhost) Quit ($reason)"
}
 
proc logger:split { nick uhost handle chan } {
set chan [string tolower $chan]
   global logger
   logger:save $chan "$logger(color10)* Lost in the netsplit: $nick ($uhost)"
}
 
proc logger:text {nick uhost handle chan text} {
set chan [string tolower $chan]
  global logger
  if {[isop $nick $chan] == "1"} {
    set nick "@$nick"
  } elseif {[ishalfop $nick $chan] == "1"} {
    set nick "%$nick"
  } elseif {[isvoice $nick $chan] == "1"} {
    set nick "+$nick"
  }
  logger:save $chan "$logger(color2)($nick) $text"
}
 
proc logger:nick {nick uhost handle chan newnick} {
set chan [string tolower $chan]
  global logger
  logger:save $chan "$logger(color9)* $nick is now known as $newnick"
}
 
proc logger:kick {nick uhost handle chan target reason} {
set chan [string tolower $chan]
  global logger
  logger:save $chan "$logger(color1)* $target was kicked by $nick ($reason)"
}
 
proc logger:mode {nick uhost handle chan mode victim} {
set chan [string tolower $chan]
  global logger
  logger:save $chan "* $nick sets mode: $mode $victim"
}
 
proc logger:topic {nick uhost handle chan topic} {
set chan [string tolower $chan]
  global logger logx
  if {[string tolower $chan] == "$logx" } {
    if {$nick == "*"} {
      logger:save $chan "$logger(color6)* Topic is '$topic'"
    } else {
      logger:save $chan "$logger(color6)* $nick changes topic to '$topic'"
    }
  }
}
 
proc logger:topic-author {from keyword text} {
  global logger logx
  set chan [lindex [split $text] 0]
  if {[validchan $chan] && [string tolower $chan] == "$logx" } {
    logger:save [lindex $text 1] "$logger(color6)* Set by [lindex $text 2] on [strftime "%a %b %d %T" [lindex $text 3]]"
  }
}
 
proc logger:action {nick uhost handle dest keyword text} {
  global logger logx
  if {[validchan $dest] == "1" && [string tolower $dest] == "$logx" } {
    if {[isop $nick $dest] == "1"} {
      set nick "@$nick"
    } elseif {[ishalfop $nick $dest] == "1"} {
      set nick "%$nick"
    } elseif {[isvoice $nick $dest] == "1"} {
      set nick "+$nick"
    }
   regsub -all "#" $chan "" chan
    logger:save $dest "$logger(color3)* $nick $text"
  }
}
 
proc logger:notice { nick uhost handle text dest } {
        global logger logx
   if {[validchan $dest] && [string tolower $dest] == "$logx" } {
      logger:save $dest "$logger(color4)-$nick:$dest- $text"
   }
}
 
 
### Secondary Commands
proc logger:save {chan text} {
set chan [string tolower $chan]
regsub -all "#" $chan "" chan
  global logger
   set log "[open "$logger(dir)[string tolower $chan.html]" a]"
   puts $log "$logger(color5)\[[strftime "%a%d%b.%H:%M:%S"]\]</font> [logger:strip $text]</font><br>"
  close $log
}
 
 
### Tertiary Commands
proc logger:strip {text} {
  global logger numversion
  if {$logger(strip) == "1"} {
    if {$numversion >= "1061700"} {
      set text "[stripcodes bcruag $text]"
    } else {
      regsub -all -- {&#92;002,\003([0-9][0-9]?(,[0-9][0-9]?)?)?,\017,\026,\037} $text "" text
    }
  }
  return $text
}
 
 
### Time
proc logger:time {} {
  global logger
  foreach bind [binds time] {
    if {[string match "time * logger:time-save" $bind] == "1"} {
      unbind time - "[lindex $bind 2]" logger:time-save
    }
  }
  switch [string toupper $logger(time)] {
    DAY {
      bind time - "00 00 [strftime "%d" [expr [unixtime] + 86400]] * *" logger:time-save
    }
    WEEK {
      bind time - "00 00 [strftime "%d" [expr [unixtime] + ((7 - [strftime "%w"]) * 86400)]] * *" logger:time-save
    }
    MONTH {
      bind time - "00 00 01 [strftime "%m" [expr [unixtime] + ((32 - [strftime "%d"]) * 86400)]] *" logger:time-save
    }
  }
}
 
proc logger:time-save {minute hour day month year} {
  global logger logx
  if {[file exists "$logger(dir)$logx.html"] == "1" } {
    if {[file exists "$logger(dir)[lindex [split $logx] 1]"] == "0" } {
      file mkdir $logger(dir)[lindex [split $logx "#"] 1]
    }
    file rename -force "$logger(dir)$logx.html" "$logger(dir)[lindex [split $logx "#"] 1]/$logx.[strftime "%G%b%d" [expr [unixtime] - 3600]].html"
  }
  set log "[open "$logger(dir)$logx.html" w]"
  puts $log "<html><head><title>$logx [strftime "%d%b%G"]</title></head>"
  puts $log "<body bgcolor=\'#000000\'><tt>"
  puts $log "<br>"
  puts $log "$logger(color5)Session Start: [strftime "%a %b %d %T %Y"]</font><br>"
  puts $log "$logger(color5)Session Ident: $logx</font><br>"
  puts $log "$logger(color5)\[[strftime "%a%d%b.%H:%M:%S"]\]</font> $logger(color1)* Now talking in $logx</font><br>"
  close $log
  putquick "TOPIC $logx"
  logger:time
}
 
 
logger:time
 
 
putlog "TCL Logger1.tcl Loaded!"



Voilà modifié merci DjKenny Smile
Répondre Avertir
#17
bonjour / bonsoir

je sais que ce poste date Mad

merci a alias pour le code il est fonctionnel cependant il reste un tout léger bug qui m'ennuie

voici ce que j'obtiens "[Mon19Aug.21:20:01] (Lesny) 04O12k ok"

ou encore

[Mon19Aug.21:21:27] (Lesny) 04[1223:20] NickServ: Nick Lesny has been requested

comment retiré c'est chiffre pour y mettre de la couleur ?

(ce qui est en gras)

merci à vous
Répondre Avertir
#18
Salut,

Lorsque je serait de retour si tu n'a pas obtenu de réponse pour ton aide je regarderais sa si tu veut si je peut t'aider je le ferait.
Enfin je regarderais voir ou et le soucis que tu stipule plus haut
Répondre Avertir
#19
ok pas de soucis merci alias & bonne vacance Wink
Répondre Avertir
#20
Salut Lesny,

Pourrais tu si possible me joindre le code Tcl que tu utilise.
Du moins celui dans ton eggdrop, que je regarde sa de plus près.

Je vais regardez voir si je trouve la solution..
Répondre Avertir
#21
salut alias

désoler avec le taf en se moment je n'est pas plus te répondre avant

voici donc le fichier en question
Répondre Avertir
#22
Salut Lesny,

Pas de soucis t'inqiuète pas ta le temps de répondre hein.

Donc je vais te poser quelques questions avant de me mettre dans le code.
Lorsque tu as c'est erreurs que tu cite plus haut..

Elle apparaisse lorsque tu fait quoi comme action sur le réseau ou le salon ?
Du moins le soucis des couleurs j'aimerais savoir à quel intervalles elle viennes ?
Répondre Avertir
#23
Re,

j’écris en couleur sur mon serveur la 1er lettre en rouge et le reste en noir

donc cela apparaît quand j’écris Smile
Répondre Avertir
#24
Heu..

Plus simple tu peut me screen ? Ensuite tu me dit à tel endroit la et le soucis sa sera plus simple.

Désoler j'ai du mal un peux à me remettre dans le bain x)
Répondre Avertir
#25
Oh... My... God...
Donc, il te dit qu'il écrit une phrase avec la première lettre en rouge, et le reste en noir, et que son script log une partie des couleurs.

a mon avis, la fonction logger:strip est appelée bien trop tard, elle devrait l'être au niveau de chaque bind, directement sur le texte utilisateur.
Répondre
#26
Moi son stripcodes je serait partis sur du lindex $text 0

tcl
set text [stripcodes bcruag [lindex $text 0]]



Après appeler set text comme dans sa proc je trouve sa pas terrible j'aurais vraiment fait à ma façon comme ceci :

tcl
### Tertiary Commands
proc logger:strip {text} {
global logger numversion
if {$logger(strip) == "1"} {
    if {$numversion >= "1061700"} {
      set cmd [lindex $text 1]
      set text [stripcodes bcruag [lindex $text 0]]
    } else {
      regsub -all -- {&#92;002,\003([0-9][0-9]?(,[0-9][0-9]?)?)?,\017,\026,\037} $text "" text
    }
}
return $text
}


Voila moi je préfère lorsque c'est comme ceci.
Pour faire au niveau des binds je ne vois pas trop.
Répondre Avertir
#27
Oui, au temps pour moi, j'ai eu un abus de langage. Je voulais dire dans chaque procédure appelée par les binds.
Par exemple, pour la procédure logger:text :
tcl
proc logger:text {nick uhost handle chan text} {
   global logger
   set chan [string tolower $chan]
   set text [logger:strip $text]
   if {[isop $nick $chan] == "1"} {
      set nick "@$nick"
   } elseif {[ishalfop $nick $chan] == "1"} {
      set nick "%$nick"
   } elseif {[isvoice $nick $chan] == "1"} {
      set nick "+$nick"
   }
   logger:save $chan "$logger(color2)($nick) $text"
}


Et retirer l'appel à logger:strip dans logger:save

Je ne suis pas certain que cela ait un effet quelconque, surtout dans le cas de cette procédure où aucune modification n'est faite sur le texte reçu. Et j'imagine que le bug est peut-être un peu plus insidieux
Répondre
#28
Possible aussi que le regsub sois à l'origine du conflit..

A moins que je dise une bêtise ont pourrais repartir aussi sur un simple :

tcl
"[join $arg]"




Enfin faudrais que Lesny test tout sa en y apportant les modifications Smile
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté