Detection de pub et retour de pub
#2
Bonjour loulou.

Donc dans un premier temps, utilise les balises "tcl" dans le forum, c'est mieux que les balises "code".
Ton code n'est pas très cohérent, dans le sens ou tu veux détecter un message sur un salon et ton tcl en détecte un en privé.

J'ai codé rapidement ce que tu voulais faire, ayant vu que tu avais essayer quelque chose.
En revanche, je n'ai pas tester ma source, faute de ne pas disposer de shell actuellement.

Voilivoilou :
tcl
bind pub - * pub:spam
 
proc pub:spam {nick host hand chan arg} {
	set arg [split $arg]
	# Je détecte l'éventuelle présence du signe # dans ce que la personne vien d'écrire sur le salon
	if {[string match *#* $arg]} {
		# Dans le cas ou il y a une diese, je récupere le channel pour lequel la personne à fait la pub.
		set spam_chan [lindex $arg [detect_spam $arg]]
		# Je join le salon
		channel add $spam_chan 
		# Je demande d'arrêter de spammer
		utimer 3 avert_spam $nick $chan $spam_chan
		# Je pars du salon
		utimer 5 channel remove $spam_chan
 
		return 0
	}
}

#
# -> Je suis persuiader qu'il existe l'équivalent de ma proc detect_spam en tcl
# Une fonction toute prête, mais ayant la flemme (très franchement) de chercher
# Puis ayant voulu m'amuser un petit-peu, j'ai recoder l'éventuelle fonction
# Qui existe.
#
 
proc detect_spam {arg} {
	# On affecte a la variable "nb_char" le nombre de mot qu'il y a dans $arg
	set nb_char [llength $arg]
	# On crée une variable nommé "nb" qui sera notre point de référence dans la chaine.
	# A savoir pour récuperer la position du mot par rapport a la chaine.
	set nb -1
	# On lance la boucle qui va donc trier notre chaine
	foreach a $arg {
		# On incrément la variable "nb"
		incr nb
		# Si le premier charactere du mot qui est vérifier est "#" (la dièse), ont considère cela comme du spam
		# On renvoie la position du mot dans la chaine
		if {[string index $a 0] == "#"} { return $nb; break }
	}
}

#
# J'aurai pu intégrer cette procédure dans celle qui détecte un méssage
# Mais j'ai séparé le tout car si maintenant tu veux détecter en pv,
# Tu n'as plus qu'a faire appel à cette fonction.
 
proc avert_spam {pseudo salon salonspam} {
	puthelp "PRIVMSG $salonspam :Merci d'éviter de faire de la pub sur $salon ($pseudo)"
	return 0
}



Je doute qu'il marche du premier coup, merci de me faire un rapport des éventuels bugs/erreurs.

Sache qu'il est codé de telle façon qu'il ne peut être opérationnel a 100%.
Exemple foireux :
Citation :<Spammeur> Kikoolol venez tous sur #machin ensuite sur #bidule puis sur #chouet
Mon tcl devrait fonctionner, auquel cas il rejoindra uniquement le salon #machin, et aucun autre salon.
Il faudrait apporter quelques modification, bref, il est facilement modifiable, améliorable.
J'ai fais exprès de bien commenter ... pour que si tu veuilles le modifier, tu puisses le faire.


Bref, bon courage a toi !

PS : Bienvenue sur le forum aussi Wink
Répondre Avertir


Messages dans ce sujet
RE: Detection de pub et retour de pub - par DaV34 - 10/04/2008, 21:49

Atteindre :


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