[Demande] aide pour une modification pour whois
#1
Bonjour,
je viens car il y a quelques temps j'avais fait un petit script pour ajouter des @ et des xop sur une back radio via une commande, tout fonctionne bien, mais j'aimerais y apporter une modification. Je join le tcl et j'explique ce que j'aimerais.

tcl
set chanback "#back"
set Nomback "radio"
 
bind pub n .+@ Ajoutop
proc Ajoutop {nick host hand chan arg} {
	global botnick  
      set nick [lindex $arg 0]
	  if {$nick == ""} {
		putserv "PRIVMSG $::chanback :AJOUT @ Tu veux ajouter qui comme @ $hand ?"
		return 0
	}
	  if {[validuser $nick]} {
		puthelp "NOTICE $hand :$nick est déja Ajouté Comme Propriétaire"
		return 0
	}
	  putquick "MODE $chan +o $nick"
      adduser $nick $nick*!*@*
      chattr $nick +nfao
	  putserv "PRIVMSG $::chanback : @ effectué $nick fait maintenant partie de la Team $::Nomback ! Bienvenue. :) "
}
 
bind pub n .+xop Ajoutxop
proc Ajoutxop {nick uhost hand chan arg} {
	global botnick  
      set nick [lindex $arg 0]
	  if {$nick == ""} {
		putserv "PRIVMSG $::chanback :AJOUT XOP Tu veux ajouter qui comme XoP $nick ?"
		return 0
	}
	  if {[validuser $nick]} {
		puthelp "NOTICE $hand :$nick est déja Ajouté comme XoP"
		return 0
	}
	  putquick "MODE $chan +o $nick"
      adduser $nick $nick*!*@*
      chattr $nick +afoX
      putserv "PRIVMSG $::chanback : XoP effectué $nick fait maintenant partie de la Team $::Nomback ! Bienvenue. :) "
}
 
bind pub n .-op Supressionop
proc Supressionop {nick uhost hand chan arg} {
	global botnick
      set pseudo [lindex $arg 0]
	  if {![validuser $pseudo]} {
		puthelp "NOTICE $hand :$pseudo est déja supprimé"
		return 0
	}
      deluser [lindex $arg 0]
      chattr [lindex $arg 0] -jklmnoptxaf
      putquick "MODE $chan -o $pseudo"	  
      putserv "PRIVMSG $::chanback : Deluse effectué $pseudo ne fait plus partie de la Team $::Nomback ! Bonne continuation."
}

# ##############
# Invite Salon #
# ##############
 
bind join - * AutoInvite
proc AutoInvite {nick uhost hand chan args} {
global botnick
if {$nick!="$botnick"} {
if {[matchattr $hand a]} {
utimer 90 [list AutoInv $chan $nick]
return 0
}
}
proc AutoInv {chan nick} {
puthelp "invite $nick $::chanback"
}
return 0
}
 
bind join - "$chanback *" message
proc message {nick uhost hand chan args} {
global botnick
if {$nick!="$botnick"} {
if {[matchattr $hand a]} {
putserv "privmsg $::chanback : $nick Bienvenue, Pour Voir Les Commandes Tapez !commandes"
putquick "mode $chan +o $nick"
}
}
}



Voila, avant pour qu'une personne que j'avais ajouté soit invitée sur la back, il fallait d'abord que mon eggdrop se trouve sur le salon principal et que la personne en question joigne ce salon pour que l'eggdrop lance la procedure.
Maintenant j'aimerais ne pas avoir à mettre l'eggdrop sur plusieurs salons mais juste sur la back et que l'eggdrop whois à intervalle regulier la liste des users qui sont déja ajoutés et si ceux ci sont connectés qu'il les invites donc sur la back.

Est ce que quelqu'un aurait une petite idée de modification ?

Merci d'avance.
Répondre Avertir
#2
Sans que l'eggdrop ne rejoigne le canal où se trouve les utilisateurs pour faire la liste des utilisateurs, ça ne fonctionnera pas à cause des modes +i (invisible).
Répondre
#3
Donc l'eggdrop ne peut pas etre sur un seul salon et faire un whois des pseudos que j'aurai ajouté en tant que @ ?
Je pensais qu'en ayant ajouté par exemple Joe en tant que @, l'eggdrop pouvait faire un whois sur le pseudo Joe et si il etait connecté l'inviter sur le salon.
Répondre Avertir
#4
Non, c'est propre au protocole:
Citation :i = Invisible (Not shown in /WHO searches)
Mais j'ai en fait un doute que j'essayerai de dissiper ce soir: je sais que ça cache l'utilisateur lorsqu'on fait un /who sur un canal, mais je ne me souviens plus de ce qu'il se passe si on /whois un utilisateur sans être sur un canal en commun avec lui. A priori, ça devrait fonctionner.
Répondre
#5
Bin en fait c'est parceque par exemple moi quand je suis pas present sur des chans je fais un whois pseudo et ca me dit que la personne est sur tel ou tel chan, ou bien ca me dit que la personne est connectée mais pas forcement sur des chans si elle vient d'arriver et n'a pas eu le temps de joindre un salon.
Répondre Avertir
#6
salut,
Je confirme, si l'on "whois" , on a une reponse du serveur, meme si l'usagé "whoisé" n'est pas sur un salon ou l'on est sois-même. A contrario du "who" .


• Mais pour pouvoir faire en sorte que l'eggdrop fasse une requete de whois, comment vas tu lancer la proc ? puisque l'eggdrop n'est pas prevu etre sur le dit salon ? Comment vas dit-il detetcter que "machin" est sur #salon, et l'inviter ? (peut-etre un second eggdrop qui ne servirait qu'a ça ? )

idée .....:

"Machin" arrive sur #salon1 . Bot1 le detecte .... envoies l'info a Bot2 .
Bots2 verifie que machin est bien dans sa userlist à être inviter sur salon2,
puis lui envoie une requete "invit" .
Si ce n'est pas le cas, stop le script.


Cordialement.
Répondre Avertir
#7
Oui, mais les personnes sont-elles en +i ?
Répondre
#8
@ceslemien
Je me demandais si justement il n'y aurai pas une procedure avec un timer qui genre toutes les 2 minutes ferais un whois sur les pseudo de la liste d'users ?
Répondre Avertir
#9
're ..

Citation : i = Invisible (Not shown in /WHO searches)
mais ça n'empeche pas de Whois, et on auras une reponse du serveur au minimum nick!ident@host / salons (s'il y a) nick register ou non Smile

• un whois sur "la list usagers" toutes les 2 mn, tu vas flamber ton bot à mon avis beaucoup de requetes pour pas grand chose. 'la nuit, par exemple, ton bot vas faire des whois , toute la nuit, sans que personne ne soit present (heu si si, les gens dorment :p )

Cordialement.
Répondre Avertir
#10
Ok merci, je vais essayer de voir comment je pourrais faire.

-Soit un whois tous les X temps mais ca risque de ramer.

-Soit faire joindre le bot sur les autres chans mais je voulais juste eviter que le bot se trouve justement sur d'autres chans et puis le soucis c'est que des fois les gens ne sont pas toujours sur les memes chans.
Répondre Avertir
#11
Bonsoir,
J'ai regardé un peu le whois mais je ne comprend pas trop donc je pense je vais continuer ou trouver des scripts qui aurait des proc de whois pour voir si j'arrive à comprendre sinon je laisserais tomber, ou bien remettrais l'eggdrop sur tous pleins de salons. LoL.
Répondre Avertir
#12
Salut,

Je pense avoir une idée..
Donc lorsque tu whois que se sois toi ou même l'eggdrop, Celà n'a pas de but du fait de sa présence sur un salon tierce.

Après ce que tu désire faire c'est faisable, y'a néamoins quelques détails à voir pour comment faire.

Pour commencer te faut un eggdrop chose simple :p
Après pour ce qui et de la constitution de ton script que tu veut faire c'est assez con en faite.
Tu récupère le "RAW" du whois.
Avec ceci tu récupère la liste des salons que la personnes elle aura.
Après tu compare cette liste avec le salon concerné.
Si le salon se situe dedans il invite sinon il ne fait rien.

Le tout porter sur un bind join..
Bien sur faut pas que le salon sois en mode +s "le salon ou il et censer être invité"

Ensuite je pense avoir une autre idée à ta question aussi..
Enfin ce que moi je ferait c'est un tcl ou tu as des personnes qui join le bot dit autorisation blabla et fait rien, s'il se trouve dans le fichier.
Si la personne qui join n'es pas dans ce fichier il ban la personne du salon.
Je crois de souvenirs avoir fait ce type de code TCL avec l'aide des gens du forum, Je regarderais et si je trouve je le poste ici pour tu vois un peut ce que je veut dire.

Sinon si je me trompe sur tout ce que je dit dit le moi Smile

Donc j'ai trouver le tread ainsi que pour télécharger le script.

Voici le lien : http://scripts.eggdrop.fr/details-Autori...-s157.html

Mais de souvenir me semble qui y'avais un leger bug sur cette version, Enfin a tester et si y'a des bugs dit le si jamais tu utilise ce code la bien sur.
Pour info me semble que le bug c'est que lorsque tu ajoute sa re efface ce que tu as fait précédament mais je ne suis pas sur de moi..

Je n'avais pas mis la mise a jour de ce code, Car je n'y avais jamais penser.. Mais si y'a des modifications à faire dit le etc..
Répondre Avertir
#13
Oui, je connaissais déja le tcl pour l'autorisation ou non des gens sur un salon precis, mais le salon est en +i donc normalement sans invitation personne ne rentre. Je cherches juste une façon à l'egg d'inviter car souvents les gens ne penses pas à venir sur la back, d'autres ne mettes pas d'auto-join etc ....

Là je voulais juste alleger pour mon eggdrop qu'il ne soit pas posé sur plusieurs salons juste sur celui de la back et qu'il fasse juste un whois toute les X minutes sur la liste d'user qui ont acces à l'egg.

Admettons je fais un acces à Joe , ben et dan, bin que l'eggdrop fasse un whois sur ces 3 pseudos et si il detecte qu'ils sont connectés et pas presents sur la back et bien qu'il les invites.

Mais je ne sais pas trop comment proceder.
Répondre Avertir
#14
Dans c'est cas la je pense qu'il te faudrait un code tcl de notify.

J'ai entendu parler de ce type de code à l'époque, Lorsqu'une personne se co sur un réseau ou et l'eggdrop et que la personne se nomme Joe par exemple.
L'eggdrop va envoyer une invitation à la personne, Je pense que c'est ce type de code qu'il te faudrait.

Après je n'es jamais conçue de code pareil.. Faudrait faire quelque recherche voir si y'a des exemples de codes pour faire ce que tu désire et l'adapter à t'es besoin.
Si quelqu'un du forum à ce type de chose ou une idée sur la question..

Donc, J'ai trouver un code tcl de notify.
Faudrait juste que tu vois si c'est ce type de code qui te conviens ou pas.

Si oui nous pourrons alors par la suite modifié certaines choses, Car je pense que se type de code, Peut-être intéressant pour certaines personnes

tcl
#############################################################
# joinnotify.tcl v1.0 by greenbear <greenbear@defragged.org>
#
# Someone asked for it, so here it is.
#
# It sends you a email when any of the nicks specified
# join one of the channels specified.
#
# notify you when any of theese nicks join your chan
set ppl "nick1 nick2"

# your email addy
set mail "email@addy.com"

# channels you want to monitor
set mailchans "#channel1 #channel2"
 
bind join - * notify
proc notify {nick uhost handle chan}  {
 global ppl mail mailchans
 
  if {![file exists emptyfile] } {
      set tempfile [open emptyfile w]
      puts $tempfile " "
      close $tempfile
  }
 
  if {([lsearch -exact [string tolower $ppl] [string tolower $nick]] != -1) && ([lsearch -exact [string tolower $mailchans] [$
     putlog "$nick ($uhost) joined $chan, emailing $mail about it."
     exec mail -s "$nick ($uhost) joined $chan" $mail < emptyfile
  }
}
putlog "joinnotify.tcl v1.0 by greenbear loaded. "


Répondre Avertir
#15
(20/10/2013, 13:58)aliasangelius a écrit : Dans c'est cas la je pense qu'il te faudrait un code tcl de notify.

J'ai entendu parler de ce type de code à l'époque, Lorsqu'une personne se co sur un réseau ou et l'eggdrop et que la personne se nomme Joe par exemple.
L'eggdrop va envoyer une invitation à la personne, Je pense que c'est ce type de code qu'il te faudrait.

Voila en fait ce serais pas mal ca quand la personne se connecte au server que ca lui envoi une invite.

Là le tcl de notify que tu me montre c'est pas vraiment une notify c'est quand la personne join un salon precis ca l'invite, donc faut que l'eggdrop soit sur ce salon en question.

Mais ouais si il existait une possibilité que l'eggdrop detecte des pseudos precis quand il se co au server ce serais ca. Ca eviterais que l'egg soit sur 36 salons.
Répondre Avertir


Atteindre :


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