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


Une fonction qui retourne true si le pseudo est identifié (+r)
#1
Bonjour,

J'essaye de modifier le tapavu.tcl que j'utilise depuis des années afin qu'il accepte les "!tapavu" seulement de la part d'utilisateurs identifiés (+r).

Voici le morceau de code du pub de "!tapavu" que j'voudrais modifier:


tcl
bind pub -|- $tapavu(command)tapavu tapavu:pub:req
proc tapavu:pub:req {nick uhost hand channel arg} {
  if { !isIdentifiedToNs($nick) } { // une fonction à créer isIdentifiedToNs($nick) qui retourne true si l'utilisateur est +r sinon false
     puthelp "NOTICE $nick :04$nick12, je n'accepte les demandes des utilisateurs non-enregistrés."
     return 1
  }
if {$arg == ""} {
  puthelp "PRIVMSG $channel :12Qui ça 04$nick12 ?"
  return 1
}
tapavu:pubreq $nick $uhost $hand $channel $arg 0
}




Comment il faudrait faire pour faire ce genre de fonction ?

Cordialement
  Répondre
#2
Désolé de te le dire, mais ça risque d'être très compliqué: il faut que l'eggdrop fasse un /whois sur l'utilisateur et récupère soit ses modes (pour savoir s'il y a le "r" dedans) soit la notice indiquant que l'utilisateur est enregistré (a priori raw 307 sur bahamut et unreal, je ne sais pas pour les autres ircd). Ou bien interroger directement Nickserv (msg nickserv info xxx).
Donc, tu peux avoir beaucoup de latence entre la commande et sa validation car tu ne sais pas à quelle vitesse le serveur te répondra et selon l'option choisie, tu dois gérer le fait qu'il n'y ait pas de réponse dans un certain temps pour déclarer que la personne n'est pas enregistrée.

En théorie, c'est donc tout à fait possible, en pratique le fonctionnement sera très aléatoire et dépendant de beaucoup de facteurs.
  Répondre
#3
Merci d'avoir expliquer tous les inconvénients avec le whois sur eggdrop.

En fait pour que tout soit plus simple, faudrait faire un tapavu/bseen en JavaScript avec NodeJS, c'est dommage qu'il en n'existe aucun.

Cordialement
  Répondre
#4
NodeJS ? C'est quoi cette idée bizarre ? Et qu'est-ce que ça apporterait de plus ?
Je ne vois même pas ce que tu voudrais concevoir comme ça.
  Répondre
#5
Je sais que le eggdrop 1.9 support petit a petit IRCv3. Si le serveur IRC support aussi le IRCv3 peut-être voir du coté des account-tracking: https://ircv3.net/irc/#account-tracking.

Sinon, si le IRC utilise anope il est possible de demander a Nickserv

https://wiki.anope.org/index.php/NickServ#Status
il me semble que le script : https://scripts.eggdrop.fr/details-Messa...-s107.html utilise cette méthode

ou alors la technique du whois

Avec NODE.JS qui est hors sujet il faudrais voir avec la librairie IRC, en 3 ligne tu connnecte deja le bot sur IRC, et ensuite implanté les fonctions de tapavu mais ton probleme restera le meme pour savoir si l'utilisateur est enregistrer ou non.
  Répondre
#6
salut,,
<troll>
éventuellement avoir le salon en  +R,  probleme reglé :)
</trol>
  Répondre
#7
(18/12/2020, 16:12)cestlemien a écrit : salut,,
<troll>
éventuellement avoir le salon en  +R,  probleme reglé :)
</trol>

Ce n'ai pas con.
  Répondre
#8
re,-salut,

tu pourrais aussi, faire sur une condition uniquement lors de la demande,

je ne fait pas le bout de code, mais ne donne qu'une orientation possible.
bidule etant l'user, robot etant ton eggdrop.

Citation :Bidule !tapavu
robot detecte le bind , et fait une demande à nickserv " msg nickserv info $nick (bidule) "

- nickserv repond que bidule est enregistré , ou pas

- On recupere donc le message,

-de là si nick est register, on repond avec les infos adequat ( via pv ou notice),

- sinon on envoie la notice adequat

********** fin du bout de code ************.

( on peux aussi ajouter un flag si "user" est vu comme pseudo enregistré, et ne pas redemandé l'info a nickserv , ça ajoute donc de lire les flags )


NB:

Ca evite de faire multiples requetes qui ralentissent le server, augmentent la charge du robot on join, et garder l'info en mémoire
A noter que si les services tombent, Evidement ça ne fonctionnera plus dans tous les cas. sauf pour ceux auquel on aura utilisé le system de flag

une base de travail aussi ici : https://forum.eggdrop.fr/nick-non-regist...t-454.html

Bonne année à tous.
  Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Fonction banlist MewT 2 2,835 23/11/2010, 17:56
Dernier message: MewT

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)