Bonsoir everybody,
Voici un script qui vous permet de débannir un utilisateur au bout d'une heure dans votre channel. Je ferais une amélioration pour pouvoir définir le temps du ban dans une variable.
Explication du script: Le script va enregistrer dans un fichier tous les nouveaux ban de votre channel et supprimer du fichier/channel les bans au bout d'une heure.
Pensez à modifier le chemin vers le fichier unbantime.txt
Pour activer le script : .chanset #channel +unbantime
Voici un script qui vous permet de débannir un utilisateur au bout d'une heure dans votre channel. Je ferais une amélioration pour pouvoir définir le temps du ban dans une variable.
Explication du script: Le script va enregistrer dans un fichier tous les nouveaux ban de votre channel et supprimer du fichier/channel les bans au bout d'une heure.
Pensez à modifier le chemin vers le fichier unbantime.txt
Pour activer le script : .chanset #channel +unbantime
tcl
if {[::tcl::info::commands ::unbantime::uninstall] eq "::unbantime::uninstall"} { ::unbantime::uninstall }
if { [package vcompare [regexp -inline {^[[:digit:]\.]+} $::version] 1.6.20] == -1 } {
putloglev o * "\00304\[unbantime - erreur\]\003 La version de votre Eggdrop est\00304 ${::version}\003; unbantime ne fonctionnera correctement que sur les Eggdrops version 1.6.20 ou supérieure." ; return }
if { [::tcl::info::tclversion] < 8.5 } {
putloglev o * "\00304\[unbantime - erreur\]\003 unbantime nécessite que Tcl 8.5 (ou plus) soit installé pour fonctionner. Votre version actuelle de Tcl est\00304 ${::tcl_version}\003." ; return }
package require Tcl 8.5
namespace eval ::unbantime {
############
# VARIABLE #
############
set ::unbantime::fichier(unbantime) "scripts/Eggdrop/bdd/unbantime.txt"
###########
# FICHIER #
###########
if { ![file exists $::unbantime::fichier(unbantime)] } {
close [open $::unbantime::fichier(unbantime) w+]
}
# Procédure de désinstallation : le script se désinstalle totalement avant
# chaque rehash ou à chaque relecture au moyen de la commande "source" ou
# autre.
proc ::unbantime::uninstall {args} {
putlog "Désallocation des ressources de \002unbantime\002..."
# Suppression des binds.
foreach binding [lsearch -inline -all -regexp [binds *[set ns [::tcl::string::range [namespace current] 2 end]]*] " \{?(::)?$ns"] {
unbind [lindex $binding 0] [lindex $binding 1] [lindex $binding 2] [lindex $binding 4]
}
# Arrêt des utimers en cours.
foreach running_timer [timers] {
if { [::tcl::string::match "*[namespace current]::*" [lindex $running_timer 1]] } { killtimer [lindex $running_timer 2] }
}
namespace delete ::unbantime
}
}
############
# PROC #
############
setudef flag unbantime
proc ::unbantime:autounban {nick uhost hand chan mode target} {
set bantime [list [unixtime] $target $chan]
if {![channel get $chan unbantime]
} then {
return
} else {
::unbantime::ajouter:donnee $::unbantime::fichier(unbantime) $bantime
}
}
bind time - "* * * * *" ::unbantime::unbanauto
proc ::unbantime::unbanauto {minute hour day month year} {
set fp [open $::unbantime::fichier(unbantime) r]
while {![eof $fp]} {
set data [gets $fp]
lassign $data timestampban banmask chanban
if {($data ne "") && ($timestampban + 3600 <= [unixtime])} {
putserv "MODE $chanban -b $banmask"
::unbantime::effacer:donnee $::unbantime::fichier(unbantime) $data
}
}
close $fp
}
proc ::unbantime::ajouter:donnee {fichierss arg} {
set liste [open $fichierss a]
puts $liste "$arg"
close $liste
}
proc ::unbantime::effacer:donnee {fichierss arg} {
set tmp "unbantime.tmp"
set fi [open $fichierss r]
set fo [open $tmp w]
while {![eof $fi]} {
gets $fi a
if {$a ne ""} {if {[string equal -nocase [lrange $a 0 end] $arg]} {} else {puts $fo "[lrange $a 0 end]"}
}
}
close $fi
close $fo
file delete $fichierss
file rename -force $tmp $fichierss
}
############
# BIND #
############
bind mode -|- "% +b" ::unbantime:autounban