J'ai bien avancé grâce à un bon coup de pouce de Crazy
Voici le code !
Je suis toutefois bloqué sur deux points :
- pour les personnes qui tapent la commande sans pseudo, ça retourne "puthelp "NOTICE $nick :Syntaxe: !vdmkick <pseudo>"", le problème c'est que ce message est générique toutefois la commande n'est pas toujours !vdmkick
- pour la commande !vdmunban qui ne fonctionne pas
Voici le code !
Je suis toutefois bloqué sur deux points :
- pour les personnes qui tapent la commande sans pseudo, ça retourne "puthelp "NOTICE $nick :Syntaxe: !vdmkick <pseudo>"", le problème c'est que ce message est générique toutefois la commande n'est pas toujours !vdmkick
- pour la commande !vdmunban qui ne fonctionne pas
tcl
namespace eval vdmodo {
# emplacement de la base de données
variable vdmododb "/home/portgasdkiba/vdmbot/databases/vdmmoderation.db"
variable vdmododbfail "/home/portgasdkiba/vdmbot/databases/vdmmoderationfail.db"
variable vdmodochan "#viedemerde"
bind pub hv|hv "!vdmkick" [namespace current]::vdmkick
bind pub hv|hv "!vdmban" [namespace current]::vdmban
bind pub hv|hv "!vdmunban" [namespace current]::vdmunban
proc vdmkick {nick uhost handle chan text} {
[namespace current]::act "kick" $nick $uhost $handle $chan $text
}
proc vdmban {nick uhost handle chan text} {
[namespace current]::act "ban" $nick $uhost $handle $chan $text
}
proc vdmunban {nick uhost handle chan text} {
[namespace current]::act "unban" $nick $uhost $handle $chan $text
}
proc act {action nick uhost handle chan text} {
set text [string trim $text]
if { [string tolower $chan] ne [string tolower $::vdmodo::vdmodochan] } {
putlog "Script non actif sur $chan"
puthelp "NOTICE $nick :Script non actif sur $chan !"
return 0;
}
set args [split $text]
if {$args=="" || [llength [split $args]]!=1} {
# Oubli de la victime ?
puthelp "NOTICE $nick :Syntaxe: !vdmkick <pseudo>"
return 0
}
set victim [lindex [split $args] 0]
if {![onchan $victim $chan]} {
# victime pas sur le canal
puthelp "NOTICE $nick :$victim n'est pas sur $chan"
return 0
}
if {[isvoice $victim $chan]||[ishalfop $victim $chan]||[isop $victim $chan] || (![matchattr $handle gv $chan]&&![matchattr $handle hp])} {
if {$action == "ban"} {
puthelp "NOTICE $nick :$victim ne peut pas être banni de $chan car il a un accès."
[namespace current]::save 0 "$nick a essayé de bannir $victim de $chan le [strftime %D] alors qu'il a un accès."
} else {
puthelp "NOTICE $nick :$victim ne peut pas être kické sur $chan car il a un accès."
[namespace current]::save 0 "$nick a essayé de kicker $victim sur $chan le [strftime %D] alors qu'il a un accès."
}
return 0
}
if {$action == "ban"} {
newchanban $chan $victim!*@* $nick "PAN ! $victim, tu es banni 24h, ça t'apprendra !"
[namespace current]::save 1 "$nick a utilisé la commande !vdmban sur $victim le [strftime %D]"
}elseif {$action == "kick"} {
putkick $chan $victim "PAN ! $victim, dans ta tronche !"
[namespace current]::save 1 "$nick a utilisé la commande !vdmkick sur $victim le [strftime %D]"
}elseif {$action == "unban"} {
killchanban $chan $victim!*@*
}
return 0
}
# procédure de sauvegarde
proc save {success line} {
if { $success == 1 } {
set file $::vdmodo::vdmododb
} else {
set file $::vdmodo::vdmododbfail
}
set fo [open $file a]
puts $fo $line
close $fo
}
}
putlog "VDM Modération chargé par KiBa adapté de la version Carton.tcl de CrazyCat"