[aide] comment rajouter des hosts et des salons en plus pour sajoin
#1
Bonjour à tous .
J'ai un problème que je n'arrive pas à résoudre tout seul ( vu mon niveau )
je vous explique mon problème dans se tcl je peux sajoin que *@StaffAnim.monsite.net sur #Staff et #Team
et je souhaiterais rajouter d'autre hosts pour des salons différent

genre *@Anim.monsite.net sajoin sur #Team
et *@Staff.monsite.net sajoin sur #Staff

comment je peux faire pour rajouter ces deux hosts et les deux salons dans mon code ?

tcl
proc putfast {arg} {
append arg "\n"
putnow $arg -oneline
#putnow 0 [string length $arg] $arg
}
 
set vhostsaj {
*@StaffAnim.monsite.net
}
bind join - "*" mesajoin
proc mesajoin {nick host hand arg} {
global vhostsaj
foreach vhost1 $vhostsaj {
if [string match -nocase $vhost1 $host] {
putfast "SAJOIN $nick #Staff"
putfast "SAJOIN $nick #Team"
} 
}
}



Je vous remercie pour vos réponses donné .
Répondre Avertir
#2
Il faut un peu adapter le script pour avoir une association vhost => canaux

tcl
set vhostsaj {
   "*@StaffAnim.monsite.net" "#canal1,#canal2"
   "*@Anim.monsite.net" "#canal2"
}
 
bind join - "*" mesajoin
proc mesajoin {nick host hand arg} {
   foreach vhost [array names $::vhostsaj] {
      if {[string match -nocase $vhost $host]]} {
         putserv "SAJOIN $nick $::vhostsaj($vhost)"
      }
   }
}



Bon, il y a sûrement un petit souci sur l'utilisation du tableau dans le putserv, ainsi que dans la possibilité de faire sajoin #canal1,#canal2, mais de toutes manières le sajoin, c'est le mal.
Répondre
#3
Bonsoir CrazyCat.
Merci bien pour l'aide je vais testé , pour la question du sajoin je sais bien que sais pas terrible mais vu que l'auto invite ne fonctionne pas je ne peux que opté pour cette solution :/

tcl
while executing
"proc mesajoin {nick host hand arg} {
   foreach vhost [array names $::vhostsaj] {
      if {[string match -nocase $vhost $host]] {
         putserv "S..."
    (file "scripts/sajoin.tcl" line 14)
invoked from within



le invoked from within ca veux dire qu'il manque ca { ?
après le reste je ne sais pas.
Répondre Avertir
#4
Salut, Non je pense plutôt un : } Oublier Smile

tcl
if {[string match -nocase $vhost $host]] {



Essaye de remplacer par :

tcl
if {[string match -nocase $vhost $host]]} {



De plus si l'auto invite ne fonctionne pas y'a aussi : putserv "NOTICE $nick :..." Je dit sa je dit rien
Répondre Avertir
#5
Salut aliasangelius le bot se lance bien mais aucunes erreurs en pl et ca ne fonctionne pas .
Ceci dit si il faut en autoinvite je ne suis pas contre mais bon je ne sais pas codé le tcl .

J'ai changé ca:
putserv "SAJOIN $nick $::vhostsaj($vhost)

par ca:
putserv "SAJOIN $nick $::vhostsaj($vhost)"

ca fonctionne toujours pas
Répondre Avertir
#6
Re j'ai trouvé comment faire ça fonctionne bien pour les sajoins .
Je vais tenté de modifier le code pour qu'il invite bye.
{résolu}
Répondre Avertir
#7
J'ai corrigé dans le source initial les deux erreurs de syntaxe (le } et le " manquants), mais il serait sympa de ta part de nous montrer ton code fonctionnel.
Je trouve ça très détestable les personnes qui demandent une aide qu'on leur apporte bien gentiment et qui, lorsqu'elles corrigent une erreur dans les codes fournis, ne diffusent pas leur solution.
Répondre
#8
Salut,

Et pourquoi:
•Ne pas utiliser simplement le fichier de configuration du serveur, et non passer par un eggdrop ?
•Ou peut une etre piste par flag et non par vhost ...
-flags XX/sajoin salon XX
-flags yy/sajoin salonXX,YY

Cordialement
Répondre Avertir
#9
(17/07/2013, 10:04)cestlemien a écrit : •Ne pas utiliser simplement le fichier de configuration du serveur, et non passer par un eggdrop ?
Tout simplement parce que l'on a pas forcément la main sur le serveur. Ce genre de TCL, en utilisant des invite plutôt que des sajoin, fonctionne partout même si l'eggdrop n'est pas ircop.
(17/07/2013, 10:04)cestlemien a écrit : •Ou peut une etre piste par flag et non par vhost ...
-flags XX/sajoin salon XX
-flags yy/sajoin salonXX,YY
C'est effectivement une solution bien plus propre, mais beaucoup (trop) ici préfèrent gérer par vhost, avec tout ce que ça implique. Bref, ça fait des tcl limités pour les personnes ayant la main sur les vhosts, et c'est mal.
Répondre
#10
Bonjour, cestlemien et CrazyCat.

j'ai fait ça comme ceci:

tcl
set vhostsaj {
*@StaffAnim.monsite.net
}
 
set vhostsaj1 {
*@Staff.monsite.net
}
 
set vhostsaj2 {
*@Anim.monsite.net
}
 
bind join - "*" mesajoin
 proc mesajoin {nick host hand arg} {
  global vhostsaj
    foreach vhost1 $vhostsaj {
      if [string match -nocase $vhost1 $host] {
       puthelp "SAJOIN $nick #Staff"
       puthelp "SAJOIN $nick #Team"
      } 
   }
}
 
 
bind join - "*" mesajoin2
 proc mesajoin2 {nick host hand arg} {
  global vhostsaj1
    foreach vhost2 $vhostsaj1 {
      if [string match -nocase $vhost2 $host] {
       puthelp "SAJOIN $nick #Staff"
      } 
   }
}
 
bind join - "*" mesajoin3
 proc mesajoin3 {nick host hand arg} {
  global vhostsaj2
   foreach vhost3 $vhostsaj2 {
     if [string match -nocase $vhost3 $host] {
       puthelp "SAJOIN $nick #Team"
      } 
   }
}
 
putlog "sajoin.tcl bien chargé"



Passé par fichier de configuration du serveur peut être une meilleur idée après je ne sais pas comment modifier celui ci pour qu'il sajoin ,c'est une autre histoire :/

Désolé de ne pas avoir diffusé le code plus tot.
Répondre Avertir
#11
C'est à dire qu'à chaque join, tu vas lancer 3 procédures ?
Et je ne vois pas l'intérêt d'un foreach lorsqu'il n'y a qu'une entrée dans tes listes...

Bref, ça fonctionne mais c'est très laid et très peu optimisé.
Répondre
#12
Bonsoir,

Donc pour résumer ton vhost là ne sert strictement à rien.. Pour plusieurs raison.

1) Tu devrais utiliser le système de host pré défini par eggdrop ce qui permets d'avoir un meilleur système pour ma part.
2) Ensuite fonctionner par flag ET plus simple pourquoi ? Car lorsque tu va attribuer disons je vais dire un exemple ne dessous.

Je suis sur irc avec les flags ABC.
Level A "admin", Level B "Co-Admin", Level C "Opérateur"

Je veut que Admin aille sur salon abc, je veut que Co-Admin aille sur salon bc, Je veut que Opérateur aille sur salon c.

Donc là tu utilise simplement le sytème de flag avec un simple if.. C'est plus simple si l'eggdrop voie que Tel personne à le flag ABC il va les faire joindre sur les 3 salon par exemple.

Si co admin il les fera joindre que sur deux salon.

Etc tu vois ce que je veut dire ?
Répondre Avertir


Atteindre :


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