Alors voila j'ai créer il y a quelque temps un petit script de modération pour un ami aujourd'hui je voudrais rajouter une exception sur celui-ci.
Je m'explique : de la façon que j'ai codé ses commandes il se trouve que les modérateurs peuvent kick un Chan Master par exemple. Se que je voudrais c'est qu'en fonction du vhost la commande ne fonctionne pas
J'ai tenter de faire ainsi
tcl
proc kickraison { nick host hand channel text }{global vhostmodo2 kickraison
set args [split$text]set victim [lindex$args0]set reason [join[lrange$args1 end]]foreach vhost $vhostmodo2{if{$vhost == $vhostmodo}{return0}if[string match -nocase $vhost$host]{
putserv "PRIVMSG $::cs kick $channel $victim $reason"
putserv "PRIVMSG $::log :\0034$victim \00312à été kick de \0034$channel \00312par \0034$nick \00312pour la raison\0037 $reason."}}}
Non fonctionnel et j'ai se message en PL
Code :
[14:51:57] Tcl error [kickraison]: can't read "vhostmodo": no such variable
Et aussi de cette manière
tcl
proc kickraison { nick host hand channel text }{global vhostmodo2 kickraison vhostmodo
set args [split$text]set victim [lindex$args0]set reason [join[lrange$args1 end]]foreach vhost $vhostmodo2$vhostmodo{if{$vhost == $vhostmodo}{return0}if[string match -nocase $vhost$host]{
putserv "PRIVMSG $::cs kick $channel $victim $reason"
putserv "PRIVMSG $::log :\0034$victim \00312à été kick de \0034$channel \00312par \0034$nick \00312pour la raison\0037 $reason."}}}
cette façon est non fonctionnel aussi et j'ai se message en PL
Code :
[14:55:39] Tcl error [kickraison]: wrong # args: should be "foreach varList list ?varList list ...? command"
J'avoue que je ne sais pas comment mi prendre pour arriver à mes fins
J'ai bien-sur bien définie le bloc "set vhostmodo" avec les vhost dont les commandes ne doivent pas fonctionné.
Merci d'avance pour votre aide.
en relisant, je vois que tu appelles une proc vhostmodo1 .... et vhostmodo2, puis ailleurs dans ton code on vois, vhostmodo et vhostmodo2, peut etre voir par ici aussi .Et je ne suis pas certain que aie dans le bon sens ,ni les bons appels.
Perso je ferrait je pense plutot un systeme sur flag dans le bot, genre "flag 10" et "flag 11" corespondraient à tes "vost1" et "vhost2" exemple:
ajouter un user modo1, ajouter tous les hosts correspondants (vhosts)
.+user modo1
.+host modo1 *!RooT@domain.tld
.+host modo1 *!*@TechAdmin.domain.tld
(faire la liste) *!*@NetAdmin.domain.tld *!*@Admin.domain.tld *!*@CoAdmin.domain.tld
*!*@IRCop.domain.tld *!*@ChanMaster.domain.tld *!Ange@Faucheur.domain.tld
ensuite ajouter le flag .
.chattr modo1 +10
refaire la meme choser pour "modo2"
et enfin partir la dessus pour ton code (plus simple je pense de modifier /ajouter/retirer en partyline que sur un fichier tcl)
@cestlemien pour le vhostmodo1 se sont d'autre commande au-quelle ces vhost ont accès tout simplement
Pour le vhostmodo se sont les vhost sur les quelles je veux que les commandes ne fonctionne pas
Et pour le moment je ne maitrise absolument pas les flags du bot...
Je pense pas que sa doit être bien compliquer de rajouter cette exception sur mon code en question
Oui aliasangelus tu as bien compris le principe :)
Hier je me suis rendu compte que je vais devoir repenser le code entièrement dans le staff nous avons des belges des canadiens et chose que je ne comprend pas avec eux les commandes de modération ne fonctionne pas.
Je m'explique toutes les commandes passant par le système de vhost fonctionne très bien avec les membres du staff française mais sont non fonctionnel avec les membres du staff en belge et au canadien.
Donc oui je veux un coup de main de revoire entièrement le code pour qu'il fonctionne bien sur l'eggdrop en utilisant les flags mais comme je l'ai dit ma connaissance sur les flags est casi nul pour ne pas dire completement nul
EDIT : le code est non fonctionnel avec les belges uniquement chose que je comprend pas...
Bon, Pour commencé tu veut un tcl qui fasse genre "!op !kick ! ban etc" ?
Pour ce qui et des flag, je vais te filer un exemple dans le courant de la journée, avec des explication précises et des test que je ferais pour te faire voir
A savoir que sur le code que j'avais avant il y avais certaine commande réserver pour les chanmaster que les ops et modos ont pas acces je souhaiterais aussi pouvoir faire pareil avec se code
Donc nous avons le bind pub, il faut lui interpréter le niveau de flag.
à savoir tu à deux niveau de flag sur eggdrop
1) Général
2) Local
Le général celui qui offre un accès partout.
Le local celui qui offre un accès sur un salon.
Voici un exemple de flag général :
tcl
bind pub o !kr kickraison
Ici la personne si elle à le flag +o ce qui et Operateur général, elle pourra se servir de la commande, si la personne ne la pas elle pourra pas.
tcl
bind pub o|o !kr kickraison
La partis bind pub -|o <= celui la et pour si la personne ayant un accès sur un salon définis, puisse se servir de la commande.
C'est ainsi que fonctionne les système de flag.
Je te donne le lien avec de bonne explication, et puis ceci reste mon avis personnel. Les flag reste mieux pour une utilisation d'un eggdrop
C'est l'une de c'est fonction principal, donc autant utilisé quelques chose qui existe et qui fonctionne.
Donc si j'ai bien compris mon code devrais ressembler a quelque chose comme
tcl
set cs "ChanServ"set log "#Services"
bind pub o !kr kickraison
bind pub o !kflood kickflood
proc kickraison { nick host hand channel text }{global cs log
set args [split$text]set victim [lindex$args0]set reason [join[lrange$args1 end]]
putserv "PRIVMSG $cs kick $channel $victim $reason"
putserv "PRIVMSG $log :\0034$victim \00312a été kick de \0034$channel \00312par \0034$nick \00312pour la raison :\0037 $reason"}proc kickflood { nick host hand channel arg }{global cs log
putserv "PRIVMSG $cs kick $channel $arg \00312Le flood est interdit sur les salons officiels !"
putserv "PRIVMSG $log :\0034$arg \00312a été kick de \0034$channel \00312par \0034$nick \00312pour flood."}
ai-je bon ?
Et vu qu'il y a "2 niveau" je m'explique modo, op et protect ont accès a certaines commandes de modération.
Et ChanMaster Coadmin Admin etc... on aussi accès au commande de modération mais aussi à d'autre commande (aucune commande ircop le bot ne l'ai pas) mais des commandes de gestions du salon.
donc dois-je refaire les commandes avec le "flag m" en gros comme ça ou puis-je optimiser ça ?
tcl
set cs "ChanServ"set log "#Services"
bind pub o !kr kickraison
bind pub o !kflood kickflood
bind pub m !kr kickraison
bind pub m !kflood kickflood
proc kickraison { nick host hand channel text }{global cs log
set args [split$text]set victim [lindex$args0]set reason [join[lrange$args1 end]]
putserv "PRIVMSG $cs kick $channel $victim $reason"
putserv "PRIVMSG $log :\0034$victim \00312a été kick de \0034$channel \00312par \0034$nick \00312pour la raison :\0037 $reason"}proc kickflood { nick host hand channel arg }{global cs log
putserv "PRIVMSG $cs kick $channel $arg \00312Le flood est interdit sur les salons officiels !"
putserv "PRIVMSG $log :\0034$arg \00312a été kick de \0034$channel \00312par \0034$nick \00312pour flood."}
Code non tester (savoir si je suis sur la bonne voix)
Aussi je vais devoir rajouter les pseudo avec le flag ou est t'il possible de juste mettre les vhost de cette façon :
(28/01/2017, 19:19)cestlemien a écrit : [ -> ]en relisant, je vois que tu appelles une proc vhostmodo1 .... et vhostmodo2, puis ailleurs dans ton code on vois, vhostmodo et vhostmodo2, peut etre voir par ici aussi .Et je ne suis pas certain que aie dans le bon sens ,ni les bons appels.
Perso je ferrait je pense plutot un systeme sur flag dans le bot, genre "flag 10" et "flag 11" corespondraient à tes "vost1" et "vhost2" exemple:
ajouter un user modo1, ajouter tous les hosts correspondants (vhosts)
.+user modo1
.+host modo1 *!RooT@domain.tld
.+host modo1 *!*@TechAdmin.domain.tld
(faire la liste) *!*@NetAdmin.domain.tld *!*@Admin.domain.tld *!*@CoAdmin.domain.tld
*!*@IRCop.domain.tld *!*@ChanMaster.domain.tld *!Ange@Faucheur.domain.tld
ensuite ajouter le flag .
.chattr modo1 +10
refaire la meme choser pour "modo2"
et enfin partir la dessus pour ton code (plus simple je pense de modifier /ajouter/retirer en partyline que sur un fichier tcl)
Cordialement.
Cela serait plus facile pour la gestion de procéder ainsi.
Et comment ajouter le flag "o" et "m"
Je suis désolé pour toute c'est question mais comme je ne maitrise pas du tout les flags je préfère poser des questions "con" plutôt que de faire des conneries.