Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Detection des mots Interdits
#1
Bonjour,

Je viens de mettre un TCL sur mon Eggdrop pour la détection des Mots interdits après les avoir enregistrés dans un fichier txt.

Le 1er problème c'est quand j'ajoute des mots dans le fichier .txt une fois je fais un .rehash la liste s’efface toute seule.

Le 2ème problème c'est quand j'ai ajouté des mots interdits à la liste, et j'ai essayé de les prononcés sur le salon à surveiller, le bot ne réagit pas.

Merci de me préciser ce qu'il ne va pas dans le code.


tcl
set bwLog "badwords.tcl"
 
set bwChan "#maghreb";
 
set logchan "#test";
 
 
# YOU SHOULDN'T MODIFY ANTYTHING BELOW THIS LINE
set bwRun 1
set bwArray() ""
set bwNumber 0
set bwFilename "./scripts/db/badwordsfile.txt"
 
#################
##  PUTQUICK   ##
#################
 
 
proc putquick {arg} {
 append arg "\n"
 putdccraw 0 [string length $arg] $arg
}
 
 
############################################################################
# SURVEYpub proc
############################################################################
 
bind pubm - * bwSurveypub
proc bwSurveypub {nick uhost hand channel args} {
	global bwLog bwChan bwArray bwNumber bwRun
	set channel [string tolower $channel]
	if { "#maghreb" != $channel } { 
		return 0
	}
	if { ([isop $nick "#maghreb"])||([matchattr $nick o|o "#maghreb"])||([isvoice $nick "#maghreb"]) } {
		return 0
	}
 
	set args [join $args]
	set args [string tolower $args]
 
	for {set i 0} {$i < $bwNumber} {incr i} {
		if { $bwArray($i) != "" } {
			set badw [join $bwArray($i)]
			set dummy ""
			set bwtime [clock format [clock seconds]]
			if { [regsub -all "$badw" $args "" dummy] } {
				putquick "privmsg "#test" :\002\00312Mot interdit: \0031$nick \00312a pornoncé \002\00304($badw) \00312sur\00306 ($channel) \00312à\00301 $bwtime !"
			}
		}
	}
	return 0
}
 
############################################################################
# SURVEYact proc
############################################################################
bind ctcp - ACTION bwSurveyact
proc bwSurveyact {nick uhost hand channel keyword args} {
	bwSurveypub $nick $uhost $hand $channel $args
	return 0
}
 
############################################################################
# LIST proc
############################################################################
 
 
bind pub -|- !bwlist bwList
proc bwList {nick uhost hand channel args} {
	global logChan bwArray bwNumber bwRun
	set channel [string tolower $channel]
	if { "#test" != $channel } {
		return 0
	}
	putlog "$nick ($uhost) uses !lst"
	set txForbidden ""
	set nWords 0
	for {set i 0} {$i < $bwNumber} {incr i} {
		if { $bwArray($i) != "" } {
			set txForbidden "$txForbidden $bwArray($i)"
			incr nWords
		}
	}
	if { $nWords == 0 } {
		putquick "NOTICE $nick :\002\00312Mots interdits: \0036la liste est vide."
	} else {
	    putquick "NOTICE $nick :\002\00306 Liste des Mots interdits:"
		putquick "NOTICE $nick :\002\00312Mots interdits:\002 \00304$txForbidden"
		putquick "NOTICE $nick :\002\00306 Fin des Mots interdits:"
	}
	return 0
}
 
############################################################################
# ADD proc
############################################################################
 
 
bind pub o|o !bwAdd bwAdd
proc bwAdd {nick uhost hand channel args} {
	global bwLog bwChan bwArray bwNumber bwFilename bwRun
	set channel [string tolower $channel]
	if { "#test" != $channel } {
		return 0
	}
	if { ![isop $nick "#test"] } {
	putquick "NOTICE $nick :\002\00304Accès refusé. \00301Vous devez être au minimum \00304OP\00301 sur \00312$channel ."
		return 0
	}
	if { $args == [list {}] } {
		putquick "NOTICE $nick :\002\00312Mots interdits :\002 \00306Syntax \00304!bwAdd Mot interdit"
		return 0
	}
 
	set args [string tolower $args]
 
	putlog "$nick ($uhost) uses !bwAdd (word is : '$args')"
	for {set i 0} {$i < $bwNumber} {incr i} {
		if { $args == $bwArray($i) } {
			putquick "NOTICE $nick :\002\00312Mots interdits:\002 \00304'$args' \00312existe déjà."
			return 0
		}
	}
	set bwArray($bwNumber) "$args"
	incr bwNumber
	putquick "PRIVMSG #test :\002\00312Mots interdits :\002\ ajout de\00304 '$args'"
	bwWritefile
}
 
############################################################################
# DEL proc
############################################################################
 
 
bind pub o|o !bwDel bwDel
proc bwDel {nick uhost hand channel args} {
	global bwLog bwChan bwArray bwNumber bwFilename
	set channel [string tolower $channel]
	if { "#test" != $channel } {
		return 0
	}
	if { ![isop $nick "#test"] } {
	putquick "NOTICE $nick :\002\00304Accès refusé. \00301Vous devez être au minimum \00304OP\00301 sur \00312$channel ."
		return 0
	}
	if { $args == [list {}] } {
		putquick "PRIVMSG #test :\002\00312Mots interdits :\002 \00306Syntax \00304!bwDel Mot interdit"
		return 0
	}
 
	set args [string tolower $args]
 
	putlog "$nick ($uhost) uses !bwDel (word is : '$args')"
	for {set i 0} {$i < $bwNumber} {incr i} {
		if { $args == $bwArray($i) } {
			set bwArray($i) ""
		}
	}
	putquick "PRIVMSG "#test" :Mots interdits : \002\00312Mots interdits :\002\ suppression de\00304 '$args'"
 
	bwWritefile
	return 0
}
 
############################################################################
# WRITEFILE proc
############################################################################
proc bwWritefile {} {
	global bwArray bwNumber bwFilename
	set fd [open $bwFilename w]
	for {set i 0} {$i < $bwNumber} {incr i} {
		if { $bwArray($i) != "" } {
			puts $fd "$bwArray($i)"
		}
	}
	close $fd
	return 0
}

#2
A mon avis, le tcl que tu utilises est incomplet. Il ne va jamais lire le fichier de badwords.
Zeolia - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  Cherche un Tcl qui réagit a des mots KeeViiNou 4 4,487 28/09/2012, 15:10
Last Post: KeeViiNou
  Compteur de mots heretoc 9 8,553 18/10/2011, 22:51
Last Post: djkenny
  [Recherche] Jeu : mots le plus long heretoc 2 3,938 08/09/2009, 18:07
Last Post: heretoc

Forum Jump:


Users browsing this thread: 1 Guest(s)