Attendre que /whois se termine

Résolu
BreizhSpirit Messages postés 13 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 1 septembre 2007 - 30 août 2007 à 17:31
BreizhSpirit Messages postés 13 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 1 septembre 2007 - 1 sept. 2007 à 01:47
Salut,

Je souhaite attenddre la fin de l'execution du /whois dans un alias pour pouvoir exploiter les resultats toujours dans cet ealias.
J'ai commencé par faire une boucle sur le test d'une variable qui est modifiée dans raw indiquant la fin du /whois

Alias ->
; On attend la fin du /whois
:loop


if (%IsWhoisEnd != true) {


     goto loop
}

Remote ->
; Raw du /whois indiquant la fin de la commande
raw 318:*End of /WHOIS list*: {


  %IsWhoisEnd = true
}

C'est la que je me suis rendu compte que apperement le "catch" de l'evenement raw 318 ne se fait pas tant que l'alias est pas fini.
Quelqu'un aurait une idée pour gérer le probleme autrment ou pour mettre une sorte de pause dans le loop pour permettre le "catch" ?

Merci d'avance

9 réponses

cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
31 août 2007 à 04:07
Ah bah ça oui si tu veux :

on !*:join:#salon:{
set %nwho $nick
whois $nick
}

raw *:*:{
;vérifie que $2 sois le pseudo...
if ($2 == %nwho) {
if ($numeric == CellePourNetworkAdmin) set %answ 1
elseif ($numeric == CellePourUnAutreTruc) set %answ 1
elseif ($numeric == 318) && (%answ) { ici, le nick %nwho est condidéré comme un admin ou autre donc tu fais ce que tu veux, oublie pas d'unset les variable %answ et %nwho a la fin }

Il n'y aura pas de probleme au niveau du code, même si deux nick joigne en même temps
3
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
31 août 2007 à 16:59
Oui $2 représente je crois le nick whoisé, mais a vérifié que ce sois pas $1 ou $3
Et ce n'est pas que le server attend qu'un whois sois finis, mais disons que le cas ou deux personne joigne un salon avec disons 30 milliseconde réel de différence, est vraiment très rare, faudrait testé de whois deux personne en même temps, une qui a un grade spécial et une autre normal, avec un /echo dans la raw 318 selon si le nick a un grade spécial ou non. :)
3
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
30 août 2007 à 23:41
Ce n'est pas vraiment la bonne méthode, ce qu'il faut faire c'est choppé les messages, les stocker, et quand le raw se finis (318) tu affiches les infos, et n'oublie pas de mettre /haltdef pour que mirc arrête de mettre ses messages par défaut :

raw *:*:{
if ($numeric == 311) { set -u2 %raw311 $1- | haltdef }
elseif ($numeric == 319) { set -u %raw319 $1- | haltdef }
elseif ($numeric == 318) {
echo -a %raw311
echo -a %raw319
etc...
}
}

c'est un exemple, a toi de completé en formattant le texte contenus dans $1- (les différentes var) selon tes choix, rajoute les elseif a chaque fois
0
BreizhSpirit Messages postés 13 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 1 septembre 2007
31 août 2007 à 01:21
Disons que ma méthode me semble plus logique pour ce que je veux faire avec les informations du whois,ce n'est pas pour les afficher mais pour les exploiter lorsque quelqu'un join le channel, mais apparement cela ne s'adapte pas au fonctionnement de mirc. Donc je vais me debrouiller avec ce que tu m'as donné et contourner le problement. Merci encore pour ton aide wims, tu es mon eternel sauveur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BreizhSpirit Messages postés 13 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 1 septembre 2007
31 août 2007 à 01:28
Pour info mon bot entre autre kick tous les gens qui ne font pas partie d'une guest list a part les admin et les services du serveur biensur. Je le fais dans un
on 1:JOIN:%Channel ce qui me parait plus logique biensur. Seulement j'ai besoin de connaitre les admins et serveur c'est pour ca que je passe par whois, il me semblait plus logique de faire tout le traitement dans join plutot que dans raw mais bon je vais faire avec.
0
BreizhSpirit Messages postés 13 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 1 septembre 2007
31 août 2007 à 01:57
En fait je pense que cela ne va pas être jouable avec ta méthode, je m'explique : Je n'aurais plus le $nick de la personne qui a join dans l'évement de raw, je pourrais le sauver dans une variable au moment du join mais je pense que si deux personnes join le channel dans un interval assez court je vais perdre l'information du premier join et du coup je ne saurais plus qui kicker ou ne pas kicker une fois dans le raw. Je sais pas si je me fais bien comprendre
0
BreizhSpirit Messages postés 13 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 1 septembre 2007
31 août 2007 à 12:01
Le seul truc que je ne comprend pas dans ton code c'est le $2, je pensais apres avoir lu l'aide mirc que l'on ne pouvait récupérer que $numeric et $rawmsg dans un raw. Je comprend bien que ici $2 représente le nickname concerné par le whois mais il est renseigné par quoi ?
0
BreizhSpirit Messages postés 13 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 1 septembre 2007
31 août 2007 à 12:26
Ok $n semble représenter le nième élément du $rawmsg et tu me confirme que le serveur ne me retournera jamais les données d'un /whois tant que le précédent /whois n'est pas terminé ?
0
BreizhSpirit Messages postés 13 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 1 septembre 2007
1 sept. 2007 à 01:47
Bon de toute manière tu m'as expliqué largement assez de truc pour que je puisse faire mes tests tranquillou. Merci encore wims
0
Rejoignez-nous