[Résolu] rajout d'une exception sur une commande de kick
#16
Dans un eggdrop, les flags ne sont pas restrictifs, ils indiquent un niveau minimal.
Si quelqu'un a le flag o, il a aussi les flags inférieurs (l et m), donc si tu veux qu'une commande soit fonctionnelle à partir de m (et donc aussi pour les o), il te suffit de mettre le bind sur le m.
  Répondre   Avertir
#17
Donc si j'ai bien compris je met le flag l sur le pseudo Jarvis pour qu'il ai accès au commande de modération
Si je met le flag m a Alucard sur les commandes de gestion
cela signifie que jarvis aura aussi accès aux commandes de gestion ?
Je doit avouer que je comprend pas la gestion des flags :s
  Répondre   Avertir
#18
Les flags sont plutôt simples: un flag supérieur inclus obligatoirement les inférieurs.
Si tu as le flag v (voice), tu n'as que ça.
Si tu as le flag l (half-op), tu as aussi le flag v.
Si tu as le flag o (op), tu as aussi l et v.
Si tu as le flag m (master), tu as aussi o, l et v.
Et si tu as le flag n (owner), tu as tous les précédents.

Sur la doc des flags, les flags sont donnés du plus haut au plus petit.

Tu n'as qu'à voir quand tu donnes des flags à un user dans ton eggdrop. Si tu fais un .chattr machin +o #canal, tu vas voir que l'eggdrop lui met +olv #canal
  Répondre   Avertir
#19
Ok je vois à peu prêt du coup je vais devoir faire ça pour chaque salon ?
Parce que bon pour la gestion c'est plus compliqué comme ça je pensais qu'on pouvais juste donner un accès a un user au bot et que grâce au script TCL les personnes ayant accès au bot peuvent se servir des commandes.

Sinon est-il possible de faire comme la décrit cestlemien créer un user modo et modo1 auquel on rajoute des vhost puis rajouter le flag de l'eggdrop sur l'user modo ou modo1 ?

Je sais c'est beaucoup de question et je ne sais pas si je suis assez clair. Si jamais se n'est pas la cas ne pas hésiter à demander.
Bien à vous.

Bye.
  Répondre   Avertir
#20
Donc voila j'ai mis les flags de cette manière sur l'eggdrop
J'ai créer un user modo puis j'ai rajouter les host host moderateur moderatrice operateur et operatice sur l'user modo et j'ai ensuite rajouter le flag "o" sur l'user modo
J'ai ensuite créé un user modo1 avec les host chanmaster ircop coadmin admin techadmin netadmin et root sur l'user modo1 et ensuite je lui ai mis le flag "m"
Cela fonctionne parfaitement bien Smile
Par contre je ne sais toujours pas comment faire en sorte que les membres du staff ne puisse pas utiliser les commandes de modération contre eux.
Voici le code actuel (enfin une partie) :
tcl
set cs "ChanServ"
set chanlog "#Services"
 
bind pub o !modo aidemodo
bind pub o !kr kickraison
 
proc kickraison { nick host hand channel text } {
  global cs chanlog
  set args [split $text]
  set victim [lindex $args 0]
  set reason [join [lrange $args 1 end]]
  putserv "PRIVMSG $cs kick $channel $victim $reason"
  putserv "PRIVMSG $chanlog :\0034$victim \00312a été kick de \0034$channel \00312par \0034$nick \00312pour la raison :\0037 $reason"
}
 
proc kickflood { nick host hand channel arg } {
  global cs chanlog
  putserv "PRIVMSG $cs kick $channel $arg \00312Le flood est interdit sur les salons officiels !"
  putserv "PRIVMSG $chanlog :\0034$arg \00312a été kick de \0034$channel \00312par \0034$nick \00312pour flood."
}


Donc ma question est simple comment dois-je faire pour que lorsqu'un membre du staff utilise la commande sur un autre membre du staff celle-ci ne fonctionne pas.

Merci d'avance.

Bye.
  Répondre   Avertir
#21
j'ai pensé faire comme de cette façon
tcl
set cs "ChanServ"
set chanlog "#Services"
set vhostexempt {
 *Root@domain.tld
 *@TechAdmin.domain.tld
 *@NetAdmin.domain.tld
 *@Admin.domain.tld
 *@CoAdmin.domain.tld
 *@IRCop.domain.tld
 *@ChanMaster.domain.tld
 *@Faucheur.domain.tld
 *@Moderateur.domain.tld
 *@Moderatrice.domain.tld
 *@Operateur.domain.tld
 *@Operatrice.domain.tld
 *@Services.domain.tld
}
 
bind pub o !modo aidemodo
bind pub o !kr kickraison
 
proc kickraison { nick host hand channel text } {
 global cs chanlog vhostexempt
 set args [split $text]
 set victim [lindex $args 0]
 set reason [join [lrange $args 1 end]]
 foreach vhost $vhostexempt {
   if { $vhost == $vhostexempt } { return 0 }
   } else {
   putserv "PRIVMSG $cs kick $channel $victim $reason"
   putserv "PRIVMSG $chanlog :\0034$victim \00312a été kick de \0034$channel \00312par \0034$nick \00312pour la raison :\0037 $reason"
 }
}
 
proc kickflood { nick host hand channel arg } {
 global cs chanlog vhostexempt
 foreach vhost $vhostexempt {
   if { $vhost == $vhostexempt } { return 0 }
   } else { 
   putserv "PRIVMSG $cs kick $channel $arg \00312Le flood est interdit sur les salons officiels !"
   putserv "PRIVMSG $chanlog :\0034$arg \00312a été kick de \0034$channel \00312par \0034$nick \00312pour flood."
 }
}


Mais non fonctionnel la commande fonctionne tjrs aucun message en PL mais je peu toujours l'utiliser contre les membres du staff...

Merci de bien vouloir m'aider Smile

Bien à vous.

Bye.

Edit :
J'ai aussi tenté ainsi
tcl
set cs "ChanServ"
set chanlog "#Services"
set exempt {
  PetitCoeur
  Bob
}
 
proc kickraison { nick host hand channel text } {
  global cs chanlog exempt
  set args [split $text]
  set victim [lindex $args 0]
  set reason [join [lrange $args 1 end]]
  if { $victim == $exempt } {
    putserv "NOTICE $nick :\0032\0034ATTENTION \002\0036$victim \00312Est dans la liste des pseudos protégés \0037$nick \00312!!!"
    } else {
    putserv "PRIVMSG $cs kick $channel $victim $reason"
    putserv "PRIVMSG $chanlog :\0034$victim \00312a été kick de \0034$channel \00312par \0034$nick \00312pour la raison :\0037 $reason"
  }
}



Le problème reste toujours le même comment puis-je arriver à mes fins ?

Bye.

EDIT 2 :

j'ai aussi tenter comme cela
tcl
set cs "ChanServ"
set chanlog "#Services"
set modo(flagexempt) "mo"
 
bind pub o !kr kickraison
 
proc kickraison { nick host hand channel text } {
  global cs chanlog modo
  set args [split $text]
  set victim [lindex $args 0]
  set reason [join [lrange $args 1 end]]
  if {[matchattr $hand $modo(flagexempt) $channel]} { return 0 }
    putserv "PRIVMSG $cs kick $channel $victim $reason"
    putserv "PRIVMSG $chanlog :\0034$victim \00312a été kick de \0034$channel \00312par \0034$nick \00312pour la raison :\0037 $reason"
}



Mais la la commande ne fonctionne plus du tout... aussi bien pour les membres possedants les bons flag que les users lambda...
Je n'ai aucun message d'erreur en PL...

Je ne sais plus du tout comment faire...

Please help me Sad

Bien à vous.

Bye.
  Répondre   Avertir
#22
Très bizarre ton script, et tout particulièrement ta boucle: tu extrais un vhost de ta liste et tu regardes s'il est égal à la liste... Passera jamais.
Ensuite, même si tu comparais le bon host, ton système ne protègerait que si l'host était le premier de la liste.

Ce que tu dois faire, c'est d'abord récupérer l'host de la victime (tu n'as a priori que son nick) puis boucler sur tous les vhosts pour savoir si oui ou non la victime est protégée.
Une fois que tu as fais ça, tu kickes ou pas...

tcl
set chanlog "#Services"
 
set vhostexempt {
	*Root@domain.tld
	*@TechAdmin.domain.tld
	*@NetAdmin.domain.tld
	*@Admin.domain.tld
	*@CoAdmin.domain.tld
	*@IRCop.domain.tld
	*@ChanMaster.domain.tld
	*@Faucheur.domain.tld
	*@Moderateur.domain.tld
	*@Moderatrice.domain.tld
	*@Operateur.domain.tld
	*@Operatrice.domain.tld
	*@Services.domain.tld
}
 
bind pub o !kr kickraison
 
proc kickraison { nick host hand channel text } {
	global cs chanlog vhostexempt
	set args [split $text]
	set victim [lindex $args 0]
	set reason [join [lrange $args 1 end]]
	if { ![onchan $victim $channel] } {
		# On s'assure que la victime est bien présente
		putserv "PRIVMSG $channel :$victim n'est pas là..."
		return 0
	}
	# on récupère son host
	set vichost [getchanhost $victim $channel]
	# on crée le "flag" protected
	set protec 0
	foreach vhost $vhostexempt {
		# pour chaque host protégé, on compare avec l'host de la victime
		if { [string match -nocase $vhost $vichost] } {
			# Match: on met le flag à 1
			set protec 1
		}
	}
	# Si la victime est protégée, on sort
	if { $protec == 1 } { return 0 }
	# Si on est là, c'est que la victime n'est pas protégée
	putserv "PRIVMSG $cs :kick $channel $victim $reason"
	putserv "PRIVMSG $chanlog :\0034$victim \00312a été kick de \0034$channel \00312par \0034$nick \00312pour la raison :\0037 $reason"
 
}



J'aurais pu me passer de "$protec" et sortir en plein milieu de la boucle, mais je ne trouve pas ça propre Smile
  Répondre   Avertir
#23
merci CrazyCat pour ton aide cela fonctionne parfaitement
J'ai bien compris mon erreur sur mon première essais

Merci aussi a aliasangelus et cestlemien pour votre aide Smile

Bien à vous.

Bye.
  Répondre   Avertir


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Exception Dylan 2 2,089 18/05/2010, 22:33
Dernier message: Dylan
  Exception de caractere dans un pseudo fedora 2 2,114 06/10/2009, 10:37
Dernier message: fedora

Atteindre :


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