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!
Répondre Avertir
#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 ?
Répondre
#3
Bonjour, j'pense qu'il faudrait chercher dans le /who
Répondre Avertir
#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 Smile
Répondre
#5
D'accord, merci de ton aide Smile mais étant totalement novice en TCL, comment procéder pour exécuter cette procédure?
Répondre Avertir
#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
Répondre
#7
D'accord! Merci beaucoup! Smile
Répondre Avertir
#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
Répondre Avertir
#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.
Répondre
#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
}
}
Répondre Avertir
#11
(23/09/2013, 13:25)Ab0miFreuX a écrit : 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 a écrit : 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é ?
Répondre
#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...
Répondre Avertir
#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 ?
Répondre
#14
Expliquer comme ça oui, merci de l'exemple Smile
Répondre Avertir
#15
Oups, je viens de corriger un petit truc, il manquait un ]
Répondre


Atteindre :


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