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


Tcl qui reconnaitrait et annoncerait les ircops entrant sur un salon précis
#1
Bonjour, depuis des heures j'essaye de développer un script qui reconnaîtrait et annoncerait les IRCops sur un salon définit du genre
nick rejoint #staff
<egg> [IRCop] Un IRCop vient vous aider: nick

Mais toutes mes tentatives ont échouées...
Quelqu'un saurait-il m'aider? Je vous en remercie d'avance!
#2
Qu'est-ce qui permet de reconnaitre un ircop ? Son vhost ? La liste des ircops est dans l'eggdrop ? Ou bien il faut chercher dans le /who ou dans le /whois ?
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#3
Bonjour, j'pense qu'il faudrait chercher dans le /who
#4
Donc, il faut que lorsqu'un utilisateur entre sur le canal, l'eggdrop fasse un /whois et s'il reçoit en retour le raw 313, il annonce ton message ?
Et bien voila, tout est dit :)
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#5
D'accord, merci de ton aide :) mais étant totalement novice en TCL, comment procéder pour exécuter cette procédure?
#6
Tu peux te baser sur ce qui est dit à http://forum.eggdrop.fr/ban-sur-detectio...304-1.html, mais en utilisant le raw 313 et non pas 311.
Il faut aussi détecter le fin de whois si jamais ce n'est pas un ircop (raw 318 ) pour sortir de la procédure
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#7
D'accord! Merci beaucoup! :)
#8
Salut,

Pour le plus simple étant que tu es novice serait d'utiliser un système de liste voir de flag..
Exemple tu fait un bind join sur le flag Z Et sa annonce ta phrase..

Je ferait un exemple de code ce soir lorsque je serait rentrée.

Mais pour commencer étant que tu débute je pense qu'il te faut plus débuter et te familiariser avec les binds au dépard que de partir directement sur des bind raw
#9
Sauf que s'il demande une détection du statut d'ircop, c'est peut-être qu'il n'a pas la liste des ircops, ou que les nicks peuvent changer, ...
Ce n'est pas parce qu'une personne débute qu'il faut lui proposer un truc totalement différent sous prétexte que c'est plus difficile à faire.

Il a maintenant un code d'exemple de traitement d'un retour de whois et les infos à rechercher (les N° de raw), donc on attend un peu pour voir ce qu'il va faire et l'aider s'il a des erreurs ou des incompréhensions.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#10
Je ne comprends pas le principe de ce proc, comment l'adapter à ma demande?

Code:
proc badrealname:check {from key arg} {
set realname [strlwr [ctrl:filter [string range [lindex [split $arg] end] 1 end]]]
foreach bah $::badr(list) {
    if {![string match $bah $realname]} {
      continue
    }
    newchanban $::badr(chan) "*!*@[lindex [split $arg] 3]" $::botnick $::badr(reason) $::badr(time)
    break
}
}
#11
(23/09/2013, 13:25)Ab0miFreuX Wrote: Bonjour, depuis des heures j'essaye de développer un script qui reconnaîtrait et annoncerait les IRCops sur un salon définit du genre
nick rejoint #staff
<egg> [IRCop] Un IRCop vient vous aider: nick

Mais toutes mes tentatives ont échouées...
Quelqu'un saurait-il m'aider? Je vous en remercie d'avance!
(25/09/2013, 18:02)Ab0miFreuX Wrote: Je ne comprends pas le principe de ce proc, comment l'adapter à ma demande?

Qu'as tu déjà essayé, que sais-tu faire, qu'as-tu compris en lisant le wiki ou le forum ?
Ou bien est-ce un "faites-le pour moi" déguisé ?
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#12
Non non, j'ai bel & bien essayer, maintenant de ce que j'ai compris du wiki & du forum, c'est:

Qu'il y a plusieurs types de bind.
Que les proc servent à procéder au déroulement des commandes.
Que les set servent à nommer une commande (mais je me trompe sûrement)

Maintenant je ne sais faire que des petits tcl simple comme des tcl d'aide...
#13
Donc tu auras compris qu'il te faut un bind join pour avoir une action (un /whois) sur les arrivées sur le canal et deux (ou trois) binds raw pour récupérer le retour du whois.

Voici un source (pas testé, c'est un exemple "théorique"):

tcl
#le canal à surveiller
set canal "#blabla"
 
bind join - "$canal *" ircop:whois
 
proc ircop:whois { nick uhost handle chan } {
   # Si c'est l'eggdrop qui arrive, on sort
   if { $nick == $::botnick } { return 0 }
   putserv "WHOIS $nick"
   return 0
}
 
bind raw - 313 ircop:is
proc ircop:is { frm kw text } {
   # cette procédure n'est déclenchée que si un /whois retourne un status ircop
   set infos [split $text ":"]
   set user [split $infos 0]
   # $user est le nick de l'ircop
   if { [onchan $nick $::canal] } {
      # si l'ircop est sur le canal surveillé
      putserv "PRIVMSG $::canal :Attention $::canal, $nick surveille !"
   }
}


Simple, non ?
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#14
Expliquer comme ça oui, merci de l'exemple :)
#15
Oups, je viens de corriger un petit truc, il manquait un ]
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Demande] attendre que l'egg soit posé pour activer un tcl precis cestlemien 6 5,865 11/06/2014, 13:24
Last Post: CrazyCat

Forum Jump:


Users browsing this thread: 1 Guest(s)