Alors voila j'ai fait un petit code d'autovoice sur le join au salon.
tcl
bind join - "*"join:avjoin
procjoin:avjoin { nick uhost hand chan }{global botnick
if{$nick == $botnick}{return0}{
putserv "mode $chan +v $nick"return0}}
Se code est fonctionnel. j'aimerais rajouter une liste de pseudo qui n'auront pas l'autovoice (les personnes ayant un statut sur le salon) j'ai donc tenté ainsi
tcl
set exemptnick "nick nick1 etc..."
bind join - "*"join:avjoin
procjoin:avjoin { nick uhost hand chan }{global botnick exemptnick
if{$nick == $botnick}{return0}if{$nick == $exemptnick}{return0}{
putserv "mode $chan +v $nick"return0}}
Celui ci fonctionne partiellement si dans le "set exemptnick" je met un pseudo ça fonctionne par contre si je rajoute un 2ème pseudo ça ne fonctionne plus. j'avoue ne pas savoir comment faire pour résoudre se problème.
Je n'ai aucun message d'erreur en PL avec le bot.
Et dans un 2eme temps j'aimerais aussi rajouter une option pour que l'autovoice ne soit actif que sur certain salon mais la je ne sais pas comme m'y prendre.
05/07/2018, 14:54 (Modification du message : 05/07/2018, 15:05 par MenzAgitat.)
Attention à $::botnick, il s'agit du nick que l'eggdrop "devrait" avoir en temps normal, mais il ne correspondra pas forcément à la réalité s'il s'est renommé à cause d'un ghost ou s'il est renommé en AnonymeXXXX par les services suite à un problème d'authentification.
$::nick en revanche, correspond au nick actuel de l'eggdrop quel qu'il soit.
set exemptnick "nick nick1 nick2 nick3"
bind join - "*"join:avjoin
procjoin:avjoin { nick uhost hand chan }{global botnick exemptnick
if{($nick == $::nick) || ($nickin$exemptnick)}then{return0}else{
putserv "mode $chan +v $nick"return0}}
mais du coup ais-je encore besoin de la variable "botnick" dans le "global" ?
Je vais aller voir au niveau des SETUDEF FLAG et CHANNEL GET pour que mon autovoice ne soit actif que sur certain salon.
Mais je ne suis pas contre un petit aiguillage lol.
Alucard`68 a écrit :Je vais aller voir au niveau des SETUDEF FLAG et CHANNEL GET pour que mon autovoice ne soit actif que sur certain salon. Mais je ne suis pas contre un petit aiguillage lol.
Un petit aiguillage avant même d'avoir pris la peine d'aller voir ?... Je veux bien donner un coup de main mais c'est un coup de pied au cul qu'il te faut là
Les exemples d'utilisation ne manquent pas dans mes scripts.
Merci pour vos réponses
Par contre concernant SETUDEF FLAG et CHANNEL GET j'ai regardé au niveau de tes sources MenzAgitat et j'avoue ne pas avoir compris grand chose même voir rien lol.
J'ai évidement recherché sur le wiki mais soit j'ai mal vue (ce qui est fort probable) soit il y a pas d'aide à se sujet lol.
Auriez vous un lien ou deux pour m'aiguiller avec des explications et si possible exemple simple ?
Je continue à mes recherches sur le wiki bien entendu.
Merci CrazyCat pour l'info j'ai modifié ma proc et du coup supprimé le global.
cestlemien les services utilisés n'ont pas la possibilité de mettre un autovoice à tous les utilisateurs.
D'apres se que j'ai pu trouver comme info ca doit etre dans un namespace.
Je ne suis pas encore à se niveau la codage lol.
je vais continuer a etudier la question
(06/07/2018, 22:23)Alucard`68 a écrit : D'apres se que j'ai pu trouver comme info ca doit etre dans un namespace.
Je ne suis pas encore à se niveau la codage lol.
je vais continuer a etudier la question
Description: initializes a user defined channel flag, string or integer
setting. You can use it like any other flag/setting. IMPORTANT: Don't
forget to reinitialize your flags/settings after a restart, or it'll be
lost.
Returns: nothing
Module: channels
D'accord CrazyCat j'ai supposé ça car tout les setudef que j'ai pu voir sont dans un namespaces.
Donc j'ai continué à me renseigner chercher des exemples etc mais je galère vraiment.
J'ai donc fait ça:
tcl
set exemptnick "nick nick1 nick2 nick3"
setupdef flag AutoVoice
bind join - "*"join:avjoin
procjoin:avjoin { nick uhost hand chan }{if{(![channel get $chan AutoVoice]) || ($nick == $::nick) || ($nickin$::exemptnick)}then{return0}else{
pushmode $chan +v $nickreturn0}}
j'en ai aussi profité pour remplacer le putserv par un pushmode ça fait mieux lol.
Je n'ai pas tester le code j'aimerais savoir si je suis sur la bonne voix ou alors pas du tout.
De cette manière je validerais bien les salons en pl via la commande :
09/07/2018, 12:22 (Modification du message : 09/07/2018, 12:24 par aliasangelius.)
Salut,
si c'est pour un salon, j'avais fait un truc pour quelqu'un ya un moment de ça.
Mais c'est par traitement de fichier, si ça peut t'aider tiens :
tcl
#**********## Vip V1.0 ##**********#
# Description du code TCL.
#***************************************## TCL en NameSpace. ## Utilisation de msgcat. ##***************************************#namespaceeval ::vip{
# Salon back ou va se situé l'autorise.
variable salons "#informatique"
# Nom du fichier ou seront les pseudos autorisé.
variable fichiers "vip.db"
# Procédure de création du fichier Vip.
if{![file exists $fichiers]}{setload[open$fichiers w+]close$load
putlog "\2Je crée le fichier $fichiers\2"}proc filtout {chan text}{if[string match "*c*"[getchanmode $chan]]{return[stripcodes abcgru $text]}else{return$text}}
# Procédure de join.
bind join - "$::vip::salons *"[namespace current]::joinautoproc joinauto {nick host hand chan}{variable salons
if[isbotnick $nick]returnif{[acceesalon $nick]}{set msg [filtout $salons"\0031\[\0033Mode Vip Automatique\0033 \0031\] Comportement exemplaire récompensé pour \002$nick\002 qui est automatiquement VIP ce mois ci sur \002$salons\002"]
putquick "PRIVMSG $salons :$msg"
putserv "MODE $salons +v $nick"return0}}
# Procédure d'ajout de pseudo Vip.
bind pub o ".+vip"[namespace current]::+ajout
proc +ajout { nick host hand chan arg }{variable fichiers
variable salons
set temp [lindex$arg0]if{$temp == ""}{
putserv "NOTICE $nick :Utilisation: .+vip <pseudo>"
putserv "NOTICE $nick :Exemple .+vip $nick"return0}set lis "[fread $fichiers]"if{[lsearch -exact "x $fichiers""$temp"]!="0"}{lappend lis $temp
fwrite $fichiers$temp
putserv "NOTICE $nick :\002$temp\002 \0034a été ajouté\0034"
putserv "NOTICE $nick :\002$temp\002 \0034est ajouté au pseudos vip\0034"return0}
putserv "NOTICE $nick :\002Erreur:\002$temp\002 \0034est déjà vip\0034"return0}
# Procédure de suppression de pseudo vip.
bind pub o ".-vip"[namespace current]::-ajout
proc -ajout { nick host hand chan arg }{variable fichiers
variable salons
set temp [lindex$arg0]if{$temp == ""}{
putserv "NOTICE $nick :Utilisation: .-vip <pseudo>"
putserv "NOTICE $nick :Exemple: .-vip $nick"return0}set autoajout "[fread $fichiers]"set tmp ""foreach bb $autoajout{if{![string match $temp$bb]}{lappend tmp $bb}}
fdel $fichiers$tmp
putserv "NOTICE $nick :\002$temp\002 \0034supprimé des vip\0034"
putserv "NOTICE $nick :\002$temp\002 \0034est supprimé des pseudo vip\0034"return0}
# Procédure pour voir la liste des vip.
bind pub o ".vip"[namespace current]::autoproc auto { nick host hand chan arg }{variable fichiers
variable salons
set fp [open$fichiers"r"]set fc -1
putserv "notice $nick :\037\00300,01 -> Liste des vip. <-\037\003"while{![eof$fp]}{set data [gets$fp]incr fc
if{$data!=""}{
putserv "notice $nick :\0031\[\0034$data\0031\0031 ]\0031"}
unset data
}close$fp
putserv "notice $nick :\037\00300,01 -> Fin de la liste des vip. <-\037\003"}
# Ne pas toucher Systeme Proc !!proc acceesalon {nick}{variable fichiers
set fa [open$fichiers r]set access 0while{![eof$fa]}{set ligne [gets$fa]if{[string tolower $nick] == [string tolower $ligne]}{set access 1}}close$fareturn$access}
# Procédure d'écriture de fichier.
proc fwrite {fi arg}{set f [open$fi a]puts$f$argclose$f}
# Procédure de suppression de fichier.
proc fdel {fi arg}{set f [open$fi w]puts$f$argclose$f}
# Procédure de lecture de fichier.
proc fread {fi}{set f [open$fi r]set t [gets$f]close$freturn$t}}
putlog "\002\0034Chargement.. \002\037\0031Vip.tcl\037\0031"
EDIT : J'devais modifié pour faire passer les messages en msgcat, mais j'ai eut un poil la flemme, mais tu à de quoi faire pour ton exemple je suppose.
Vous interdisez les erreurs, vous empêchez ainsi la victoire.