[Résolu] Aide sur une commande
#1
Bonsoir à tous,
J'ai téléchargé le script join.tcl disponible sur le site  pour pouvoir faire joindre ou partir mon bot sans entrer en PL avec lui.

voila mon problème j'ai fait un code avec système de vhost pour qu'il ni ai seulement un groupe de personne précise qui puisse le faire
voila le code:
tcl
set vhostjoinpart {
 *@domaine.tld
}
 
 
bind pubm - !vien vien
bind pubm - !oust oust
 
proc vien { nick host hand channel arg } {
 global vhostjoinpart vien
 foreach vhost $vhostjoinpart {
   if [string match -nocase $vhost $host] {
     putquick "MSG Thor :join $arg"
    }0
  }
}
 
proc oust { nick host hand channel arg } {
 global vhostjoinpart oust
 foreach vhost $vhostjoinpart {
   if [string match -nocase $vhost $host] {
     putquick "MSG Thor :part $channel"
     }0
  }
}


Mon problème c'est que quand je tape une de mes commande que ça soit
!vien #Test
ou
!oust
Rien ne se passe et j'ai aucun message d'erreur en PL avec le bot

Je ne serais pas contre un coup de main.

Merci d'avance.

Bye.
Répondre Avertir
#2
Salut,

tcl
set vhostjoinpart {
 *@domaine.tld
}
 
 
bind pubm - !vien vien
bind pubm - !oust oust
 
proc vien { nick host hand chan arg } {
 global vhostjoinpart vien
 set chan [lindex $arg 0]
 foreach vhost $vhostjoinpart {
   if [string match -nocase $vhost $host] {
     putquick "MSG Thor :join $arg"
     channel add $chan
     savechannels
    }0
  }
}
 
proc oust { nick host hand chan arg } {
 global vhostjoinpart oust
 set chan [lindex $arg 0]
 foreach vhost $vhostjoinpart {
   if [string match -nocase $vhost $host] {
     putquick "MSG Thor :part $channel"
     channel remove $chan
     savechannels
     }0
  }
}



Tu ne faisait rien dans t'es procédures pour que le bot rejoingne un salon.
J'ai rajouter ce qu'ils manquer, par contre je pense tu doit avoir un soucis.
Tu fait un moment donner : }0
Ce qui sert ?

Cordialement
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#3
Je rejoins ce que dit alias sur les "0" en trop.
Sinon, je pense surtout qu'il aurait mieux valu modifier le tcl initial plutôt que de faire en sorte que l'eggdrop se fasse un message.
Répondre
#4
Salut,
Merci d'avoir pris le temps pour mon problème Smile
J'ai testé ton code mais sa ne fonctionne pas hélas.
En se qui concerne le }0 oui c'était une erreur de ma part j'ai enlever le 0
j'ai aussi tenté de faire ainsi
tcl
proc vien { nick host hand chan arg } {
 global vhostjoinpart vien
 set chan [lindex $arg 0]
 foreach vhost $vhostjoinpart {
   if {[validchan $chan]} {
   if [string match -nocase $vhost $host] {
     channel add $chan
     putquick "PRIVMSG Thor :join $arg"
     putserv "PRIVMSG #LM-Staff :\00312Ok, \0037$nick \00312! je rejoins \0034$chan"
    return 1
  } else {
     putserv "PRIVMSG $chan :\00312Tu as picolé \0037$nick \00312? Je suis déjà sur \0034$chan"
   }
  }
 }
}


Mais ne fonctionne pas non plus...
Se que je voudrais c'est que quand je tape !vien #salon sur un salon ou se trouve le bot celui-ci rejoigne le salon en question
Et quand je tape !oust il parte du salon ou j'ai tapé la commande.
Franchement je suis perdu je ne sais pas comment faire pour i arriver...

Merci d'avance.

Oui CrazyCat je vais aussi tenter de modifier le code original Smile
Répondre Avertir
#5
Salut, un exemple sur un code que j'avais fait à l'époque. Dedans ya le système que tu recherche :

tcl
namespace eval GB {
    # Salon de log #
	variable log "#LM-Staff"
    # Commande Prefix Permet de choisir la commande par défault soit "." ou "!" #
	set commande(choix) "!"
 
 
array set msg {
    "access" "Désolé $nick mais je ne trouve pas ton accès dans ma base de données !"
    "auth" "Avant d'utiliser la commande veuillez vous authentifier au préalable merci : ( /msg $::botnick auth <pseudo> <pass> )"
    "level" "Vous n'avez pas le level suffisant dans $::botnick pour utiliser cette commande $nick !"
    "nosalon" "Désolé $nick mais je suis absent du salon $chan !"
}
 
proc auth { nick host hand arg } {
	     set args [split $arg]
	     set chan [lindex $arg 0]
	     set pseudo [lindex $arg 0]
    if {[llength $args] != 2} {
         puthelp "notice $nick :\002Erreur :\002 ( /msg $::botnick auth <pseudo> <pass> )"
    return 0
    }
	     set password [lindex $args 1]
    if { [nick2hand $pseudo] eq "*" } {
         puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
    return 0
    }
    if {![passwdok $pseudo $password]} {
         puthelp "notice $nick :\002Erreur :\002 Votre mot de pass ou/et votre pseudo est/sont incorrect(s) !"
    return 0
    }
    if {![string match -nocase [lindex [getuser $pseudo HOSTS] 0] $nick!$host]} {
         puthelp "notice $nick :\002Erreur :\002 Votre host ne correspond pas avec votre access !"
    return 0
    }
    if {[getuser $pseudo XTRA AUTH] eq "ON"} {
         puthelp "notice $nick :\002Erreur :\002 Vous êtes déjà authentifier !"
    return 0
    }
    if {[getuser $hand XTRA SUSPEND] eq "ON"} {
         puthelp "notice $nick :\002Erreur :\002 Vous êtes suspendu !"
    return 0
    }      
         puthelp "notice $nick :\0031\[AUTHENTIFICATION REUSSIE\]\0031 Vous êtes maintenant authentifié !"
         putserv "privmsg $GB::log :\00314Commande \0036\[\0033Auth\0036\] \0031par : \0034$hand"
         putquick "invite $nick $::GB::log"
         setuser $pseudo XTRA AUTH ON;
         setuser $hand XTRA SEEN [clock format [clock seconds] -format "le %d/%m/%Y à %Hh%M"]
         save
    return
}
 
proc addchan { nick host hand text } {
		 set chan [lindex $text 0]
		 set channel [lindex $text 1]
	if { [nick2hand $nick] eq "*" } {
		 puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
    return 0
   }
    if {![isauth $hand]} {
         puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
    return 0
    }
    if {$text==""} {
         puthelp "notice $nick :Addchan incorrect ! Veuillez respecter la syntaxe suivante : ( /msg $::botnick addchan <#salon> ) !"
    }
    if ![matchattr $hand o [lindex $text 0]] {
         puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
    return 0
   } 
    if ![string match -nocase $chan] {
		 putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Add-Chan\0036\] \0031par : \0034$hand"
		 putserv "notice $nick :$chan Rajouter au Addchan !"
		 channel add $chan
         savechannels
    return
    }
}
 
proc delchan { nick host hand text } {
		 set chan [lindex $text 0]
		 set channel [lindex $text 1]
	if { [nick2hand $nick] eq "*" } {
		 puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
    return 0
   }
    if {![isauth $hand]} {
         puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
    return 0
    }
    if {$text==""} {
         puthelp "notice $nick :Addchan incorrect ! Veuillez respecter la syntaxe suivante : ( /msg $::botnick delchan <#salon> ) !"
    }
    if ![matchattr $hand o [lindex $text 0]] {
         puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
    return 0
   } 
    if ![string match -nocase $chan] {
		 putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Del-Chan\0036\] \0031par : \0034$hand"
		 putserv "notice $nick :$chan Retiré des Addchan !"
		 channel remove $chan
         savechannels
    return
    }
}
 
proc listchan { nick host hand text } {
		 set chan [lindex $text 0]
		 set chans [join [lrange [split $text] 0 0]]
	if { [nick2hand $nick] eq "*" } {
		 puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(access)]"
    return 0
    }
    if {![isauth $hand]} {
         puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(auth)]"
    return 0
    }
    if ![matchattr $hand o| [lindex $text 0]] {
         puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(level)]"
    return 0
    }     
    if [string match -nocase $chans $chan] {
		 set voir 1
		 putquick "privmsg $nick :\0034\[Liste Salons\]"
    foreach liste [channels] {
         putquick "privmsg $nick :\0037=>\0032 $voir \0037<= \0033 $liste"
    incr voir 1
    }
         putquick "privmsg $nick :\0036\[Fin De Liste\]"
	     putserv "privmsg $GB::log :\00314Commande \0036\[\0033List-Chan\0036\] \0031par : \0034$hand"
    return 0
    }
    if {[lsearch [channels] $chans $chan]==-1} {
		 puthelp "notice $nick :[subst -nocommands -nobackslashes $::GB::msg(nosalon)]"
     return 
    }
}
 
bind msg - "auth" [namespace current]::auth
bind msg - "addchan" [namespace current]::addchan
bind msg - "delchan" [namespace current]::delchan
bind msg - "listchan" [namespace current]::listchan
}


Il te faut le flag +o en PL
à toi de voir pour certaines modifications à ta guise Smile
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#6
ok aliasangelius je vais me pencher sur ton code pour voir comment je peu faire Smile
Merci je fait un retour dans peu de temps Smile
Comme je suis l'owner de l'eggdrop j'ai pas besoin du flag +o je supose ?
Répondre Avertir
#7
Le flag +o et celui de l'owner du bot Smile

Donc oui tu n'as pas besoin de le faire en PL l'ajout
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#8
bon étant pas super calé en tcl je doit avouer que je comprend pas ton code a 95%
Donc du coup je suis completement perdu mais je vais quand même tenter quelque chose
Je suppose que les parties dont j'ai besoin sont les suivantes :
tcl
if ![string match -nocase $chan] {
		 putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Add-Chan\0036\] \0031par : \0034$hand"
		 putserv "notice $nick :$chan Rajouter au Addchan !"
		 channel add $chan
         savechannels
    return
    }
et
    if ![string match -nocase $chan] {
		 putserv "privmsg $::GB::log :\00314Commande \0036\[\0033Del-Chan\0036\] \0031par : \0034$hand"
		 putserv "notice $nick :$chan Retiré des Addchan !"
		 channel remove $chan
         savechannels
    return
    }


Répondre Avertir
#9
Oui, Mais faut inclure les procédures avec.

Juste cette partie seul, ne te servira pas énorme.
Après faut me recolle dedans, car ya un bail j'ai pas toucher au Eggdrop.

Fait des test et aux pire fournis les erreurs présent en PL, lorsque l'eggdrop va tant donnez une.

Mais il et vrai que nous pouvons partir sur un code TCL beaucoup plus simple.
Fait des test ensuite si tu préfère partir sur du code plus basique, ont changera le code autrement Smile

A chaque problème une solution existe
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#10
Alors voila j'ai fait des test différent mais rien ne fonctionne et aucun message d'erreur en PL
Je préférais partir sur un code plus simple parce que la je suis complètement perdu dans se que je fait...
Et pour être honnête je ne sais absolument pas par ou commencé...
Dans l'idéal je souhaiterais partir du code que j'ai posté au début.

Merci à toi pour ta patiente et ton aide Smile
Répondre Avertir
#11
Anciens code plus ou moins refait :

tcl
set vhostjoinpart {
 *@domaine.tld
}
 
 
bind pubm - !vien vien
bind pubm - !oust oust
 
proc vien { nick host hand channel arg } {
 global vhostjoinpart vien
 set chan [lindex $arg 0]
 foreach vhost [array names $::vhostjoinpart] {
   if {[string match -nocase $vhost $host]} {
     putquick "privmsg #LM-Staff :\00312Ok, \0037$nick \00312! je rejoins \0034$chan"
     channel add $chan
     savechannels
    }
  }
  return
}
 
proc oust { nick host hand channel arg } {
 global vhostjoinpart oust
 set chan [lindex $arg 0]
 foreach vhost [array names $::vhostjoinpart] {
   if [string match -nocase $vhost $host] {
     putquick "privmsg #LM-Staff :\00312Ok, \0037$nick \00312! je part de \0034$chan"
     channel remove $chan
     savechannels
     }
  }
  return
}



Essaye comme ça voir ce que sa donne.
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#12
j'ai testé le code tel quel mais ne fonctionne pas et aucun message d'erreur en PL
Par contre dans le code il y a pas de ligne du genre
Code :
putquick "MSG Thor :join $arg"
je me plante completement peu être
Répondre Avertir
#13
Tu as bien remplacé

Citation :*@domaine.tld

Par ton domaine ?

Exemple :

Citation :*@Staff.net

tcl
putquick "MSG Thor :join $arg"



Je ne l'ai pas mis, car c'était inutile.
Sa renvoyé un message au bot, donc pas utile que le bot se parle à lui même
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#14
voila se que j'ai exactement
tcl
set vhostjoinpart {
  *@Faucheur.EnjOy-Tchat.fr
}
 
 
bind pubm - !vien vien
bind pubm - !oust oust
 
proc vien { nick host hand channel arg } {
 global vhostjoinpart vien
 set chan [lindex $arg 0]
 foreach vhost [array names $::vhostjoinpart] {
   if {[string match -nocase $vhost $host]} {
     putquick "privmsg #LM-Staff :\00312Ok, \0037$nick \00312! je rejoins \0034$chan"
     channel add $chan
     savechannels
    }
  }
  return
}
 
proc oust { nick host hand channel arg } {
 global vhostjoinpart oust
 set chan [lindex $arg 0]
 foreach vhost [array names $::vhostjoinpart] {
   if [string match -nocase $vhost $host] {
     putquick "privmsg #LM-Staff :\00312Ok, \0037$nick \00312! je part de \0034$chan"
     channel remove $chan
     savechannels
     }
  }
  return
}


Répondre Avertir
#15
Premier point: met ton vhost tout en minuscules. Comme de toutes manières tu utilises l'option -nocase sur ton string match, autant ne pas rajouter de sources d'erreurs.

Ensuite, as-tu une erreur ? Passes-tu dans tes conditions ? Mets des putlogs pour voir ce qui se passe.

Dernier point, très important: tu fais un bind pubm. Donc pour ta procédure, $arg reçoit toute la ligne qui contient "!vien" ou "!oust", et pas ce qui suit la commande.
Répondre


Atteindre :


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