[Résolu] bug sur un bind mode
#1
Bonjour à tous
Alors voila en m'aidant du wiki j'ai tenter de créer un bind mode qui reop le bot en cas de deop par un axxé du salon.
Le code fonctionne bien mais il y a un bug et aucun message en PL
Voici le code :
TCL
set chanlog "#Services"
 
bind mode - * reop
 
proc reop {nick uhost hand chan mode {target "-o"}} {
 if {$target != "-o"} {append mode " $target"}
 op $nick $uhost $hand $chan $mode
}
proc op {nick uhost hand chan mode} {
 global botnick chanlog
 putquick "mode $chan +o $botnick"
 putquick "PRIVMSG $chan :\00312Merci de ne pas m'enlever de mon statut \0037$nick \00312!!"
 putquick "PRIVMSG $chanlog :\0034ReOp \00312sur \0036$chan \00312suite au deop de \0037$nick"
}


et voila le bug sur le salon
Code :
[14:22:19] [-o] Vous avez déchu Jarvis de son status d'Opérateur du salon
[14:22:19] [+o] Jarvis s'est promu Opérateur du salon
[14:22:19] <~Jarvis> Merci de ne pas m'enlever de mon statut AngeDesOmbres !!
[14:22:19] <~Jarvis> Merci de ne pas m'enlever de mon statut Jarvis !!
[14:22:31] [-o] Vous vous êtes déchu de votre status d'Opérateur du salon
[14:22:32] <~Jarvis> Merci de ne pas m'enlever de mon statut AngeDesOmbres !!
et sur le salon des logs
Code :
[14:22:19] <%Lea> Mode : AngeDesOmbres applique le mode -o Jarvis sur #TesT
[14:22:19] <~Jarvis> ReOp sur #TesT suite au deop de AngeDesOmbres
[14:22:19] <%Lea> Mode : Jarvis applique le mode +o Jarvis sur #TesT
[14:22:19] <~Jarvis> ReOp sur #TesT suite au deop de Jarvis
[14:22:32] <%Lea> Mode : AngeDesOmbres applique le mode -o AngeDesOmbres sur #TesT
[14:22:32] <~Jarvis> ReOp sur #TesT suite au deop de AngeDesOmbres
Donc voila j'aimerais modifier se code pour que celui-ci ne fonctionne que si c'est le bot qui est deop et ne pas avoir les messages quand c'est un autre axxé qui se déchu de son statut idem pour le retour sur le salon des logs et je ne vois pas comment faire.

Merci pour votre aide future.

Bien à vous.

Bye.
Répondre Avertir
#2
Tu fais une erreur sur $target qui est le nick de la "victime". Le mode est dans $mode.
De plus, je ne vois pas l'intérêt de (d'essayer de) passer le mode et la victime à ta procédure "op", or cette procédure contient les valeurs plus ou moins en dur et ne sert que pour du reop.
Note que le système d'append sur "mode + target" est pour la compatibilité avec les eggdrops de très vieille génération, tu n'en as pas besoin.

Autant faire une simple procédure de reop:
TCL
set chanlog "#Services"
 
bind mode - * reop
 
proc reop {nick uhost hand chan mode {target ""}} {
   if { [string tolower $target] != [string tolower $::botnick] } {
      # Ce n'est pas l'eggdrop qui est déoppé, on sort
      return 0
   }
   if {$mode == "-o"} {
      putquick "mode $chan +o $::botnick"
      putquick "PRIVMSG $chan :\00312Merci de ne pas m'enlever de mon statut \0037$nick \00312!!"
      putquick "PRIVMSG $::chanlog :\0034ReOp \00312sur \0036$chan \00312suite au deop de \0037$nick"
   }
}



Note tout de même que tu pourrais obtenir le même résultat en jouant sur les réglages de canaux need-op et nodesynch
Répondre
#3
Merci crazycat parfaitement fonctionnel
Very Happy
Répondre Avertir
#4
Merci CrazyCat parfaitement fonctionnel

J'ai voulu refaire la même chose pour le mode "q" mais non fonctionnel par contre
TCL
set chanlog "#Services"
 
bind mode - * reop
bind mode - * reowner
 
proc reop {nick uhost hand chan mode {target ""}} {
  global botnick chanlog
  if { [string tolower $target] != [string tolower $botnick] } {
    return 0
  }
  if {$mode == "-o"} {
    putquick "mode $chan +o $botnick"
    putquick "PRIVMSG $chan :\00312Merci de ne pas m'enlever de mon statut \0037$nick \00312!!"
    putquick "PRIVMSG $chanlog :\0034ReOp \00312sur \0036$chan \00312suite au deop de \0037$nick"
  }
}
 
proc reowner {nick uhost hand chan mode {target ""}} {
  global botnick chanlog
  if { [string tolower $target] != [string tolower $botnick] } {
     return 0
  }
  if {$mode == "-q"} {
    putquick "mode $chan +q $botnick"
    putquick "PRIVMSG $chan :\00312Merci de ne pas m'enlever de mon statut \0037$nick \00312!!"
    putquick "PRIVMSG $chanlog :\0034Owner \00312sur \0036$chan \00312suite au deop de \0037$nick"
  }
}


Donc ma question puis-je faire la même chose pour le mode "q" ?

Merci d'avance.

Bye.
Répondre Avertir
#5
A voir en fonction du serveur, mais je ne pense pas que l'on puisse se remettre le mode q aussi simplement.
Répondre
#6
en fonction du serveur c'est a dire ? Peu-être tu peu m'éclairer

Bien à toi.

Bye.
Répondre Avertir
#7
Sur Unreal, le mode "q" ne peut être attribué, et donc enlevé, que par le serveur ou un Service admin / Net admin.
Selon ton serveur c'est peut-être différent, mais sinon, il n'y a aucun intérêt à protéger le mode +q de l'eggdrop (c'est une autorité qui le retire, donc pas une attaque) et à moins que ton eggdrop ne soit Net Admin, il ne pourra pas se le remettre seul.
Il peut par contre, selon la version de tes services, demander un update de son statut pour récupérer tous ses droits (cf https://www.zeolia.net/references/nickserv.html#update )
Répondre
#8
Ok merci CrazyCat non mon eggdrop n'ai pas NetAdmin il est founder des salons ou il se trouve d'ou le fait que si il était possible qu'il se remette owner en cas de deowner du ChanMaster cela aurait été un plus Smile
Sinon le lien fournie j'ai en réponse "le site est inaccessible"

Bien à toi.
Répondre Avertir
#9
Site inaccessible ? Je suis fort étonné.

Et très franchement, aucun intérêt à protéger le +q vu les droits qu'il faut pour le retirer.
Répondre
#10
ok je passe en résolu

Un grand merci a toi pour ton aide Smile

Bien à toi.

Bye.
Répondre Avertir


Atteindre :


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