[Abandon] devoice auto au bout de X minutes
#1
Bonsoir,

Voila j'utilise le Voice-In de aliasangelius pour un salon je l'ai légèrement modifier (le temps pour le voice et monter a 50 mots au lieu de 5) voici le code
tcl
#*************************#
# Autovoice Intelligent.  #
#                         #
# Système de voice en NS  #
# Utilisation de msgcat   #
# Voice au bout de 5 mots #
#*************************#
 
namespace eval ::vin {
   
   # Nous vérifions si ya le package requis pour le msgcat.
   package require msgcat
   
   # Nous mettons la langue de msgcat en français.
   ::msgcat::mclocale fr
   
   # Salon de log.
   variable chanv "#Services"
   
   # Nous metons le setudef.
   setudef flag VV
   
   # Ici on met le temps en seconde pour que le bot Voice.
   variable voicejoin 180
   
   
   # Les messages de msgcat.
   ::msgcat::mcset fr ChanLog "\0031\[\0034Chan-Log\0031\]\0031"
   ::msgcat::mcset fr Vvoice "\037\0031A dit plus de 50 mots. Voice auto.\037\0031"
   ::msgcat::mcset fr Active1 "\037\0031Auto-Voice Activé !\037\0031"
   ::msgcat::mcset fr Active2 "\037\0034Auto-Voice déjà Activé !\037\0034"
   ::msgcat::mcset fr Desactive1 "\037\0031Auto-Voice Désactivé !"
   ::msgcat::mcset fr Desactive2 "\037\0034Auto-Voice déjà Désactivé !"
   ::msgcat::mcset fr Message1 "\037\0034Auto-Voice Activé sur\0031 :\037\0031"
   ::msgcat::mcset fr Message2 "\037\0034Auto-Voice Désactivé sur\0031 :\037\0031"
   
   # Procédure de voice.
   proc verif {nick chan} {
       if {[isop $nick $chan]} {return}
           if {[isvoice $nick $chan]} {return}
               putserv "mode $chan +v $nick"
   }
   
   # Procédure d'activation du TCL.
   bind pub o "!von" [namespace current]::von
   proc von { nick host hand chan arg } {
       if {[channel get $chan VV] == 0} {
           channel set $chan +VV
           putquick "PRIVMSG $chan :[::msgcat::mc Active1]"
           putserv "privmsg $::vin::chanv :[::msgcat::mc ChanLog] [::msgcat::mc Message1] \0034$chan\0034"
           } else {
               putquick "PRIVMSG $chan :[::msgcat::mc Active2]"
           }
   }
   
   # Procédure de désactivation du TCL.
   bind pub o "!voff" [namespace current]::voff
   proc voff { nick host hand chan arg } {
       if {[channel get $chan VV] != 0} {
           channel set $chan -VV
           putquick "PRIVMSG $chan :[::msgcat::mc Desactive1]"
           putserv "privmsg $::vin::chanv :[::msgcat::mc ChanLog] [::msgcat::mc Message2] \0034$chan\0034"
           } else {
               putquick "PRIVMSG $chan :[::msgcat::mc Desactive2]"
           }
   }
   
   # Procédure de detection des mots pour le voice.
   bind pubm - * [namespace current]::pub:pvoice
   proc pub:pvoice {nick host hand chan arg} {
       set arg [split $arg]
       if {$nick == $::botnick} {return}
       if {[channel get $chan VV]==0} { return; }
           if { [isvoice $nick $chan] } {
               return 0
           } else {
           if { [llength $arg] >= 50 } {
               utimer $::vin::voicejoin [list ::vin::verif $nick $chan]
               puthelp "privmsg $::vin::chanv :[::msgcat::mc ChanLog] \0034$nick \0034 [::msgcat::mc Vvoice]"
               } else {
                   return 0
               }
           }
   }
}
   putlog "\0031Auto-Voice Intelligent V1.0 by \002alias_angelius\002 \0034Chargé.\0034"


Donc voila j'aimerais que l'user soit devoice au bout de 30 minutes si il ne dit plus rien.
Et serait t'il possible d'avoir plutôt le voice sur tout les salons ou le bot se trouve sauf sur certain salon via un set par exemple
tcl
set chanexempt "#salon1 #salon2 #salon3"


et aussi une liste de pseudo a ne pas voice.
Le souci c'est que je ne vois pas du tout comment mi prendre j'aimerais un énorme coup de pouce pour i arriver.
PS : je n'ai rien tenter puisque je ne sais absolument pas comment mi prendre désolé.

Merci d'avance.

Bien à vous.

Bye.

Edit : Les modifications apportées pour le voice auto après 50 mots ne fonctionne pas
Merci de votre aide future.
  Répondre
#2
Tout d'abord, j'ai bien peur que tu ne puisses pas changer aussi simplement le nombre de mots: actuellement le script compte les mots dans une seule ligne.
Il faudrait que tu crées un compteur qui soit incrémenté du nombre de mots à chaque fois que la personne parle afin d'avoir l'historique. Et bien sûr penser à vider le compte à un moment ou un autre.

Sinon, tu cherches à totalement refaire le script, en lui ajoutant toute une série de fonctionnalités, tu devrais partir d'un script plus simple comme https://scripts.eggdrop.fr/details-advoice-s3.html qui intègre déjà le devoice automatique et la possibilité d'ajouter des exclusions sur des nicks (donc inversable pour restreindre à une liste d'utilisateurs).

Et je ne comprends pas l'intérêt de faire agir sur tous les canaux: si un utilisateur est actif sur un seul canal, il aura le voice sur tous ? Et s'il se tait sur un seul canal, il le perdra partout ? Ou bien tant qu'il parle sur au moins un canal il le garde ? C'est ingérable.
Absent
  Répondre
#3
bonsoir, merci pour le lien

je me suis mal exprimer quand je dit actif sur tout les salons c'est de ne pas avoir a activer le script via une commande soit sur salon soit en PL

Je vais voir ton script pour peut-être réussir à en faire se que je veux :p
Par contre je ne serais pas contre quelque lien pour m'aiguiller sur la façon de faire pour qu'il voice au bout de 50 mots ou 10 lignes en moins de 3 minutes

Encore merci.
  Répondre
#4
Pour rendre le script actif sur tous les canaux où se trouve l'eggdrop, il suffit de virer la condition sur le flag "VV" (dans le cas du script que tu nous as présenté).

Et pour voicer sur 50 mots ou 10 lignes en moins de 3 minutes, c'est un peu ardu. Il faut enregistrer pour chaque personne qui parle son nombre de lignes et son nombre de mots, avec l'info de l'heure et la minute, calculer à chaque fois que la personne parle si elle est entrée dans le quota ou pas, tout en pensant à "nettoyer" ce qui doit sortir de l'historique.
Faisable, mais lourd pour un simple (de)voice.
Absent
  Répondre
#5
d'accord je vois en me basant de ton code CrazyCat serait-il assez simple de faire en sorte que le bot voice au bout de 5 ou 10 lignes sans limite de temps ?
  Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  [Résolu] Aide sur un bout de code Alucard`68 12 579 10/01/2017, 15:08
Dernier message: CrazyCat
  [Bug] Eggdrop ne devoice pas en TCL Dydouch 2 1,143 04/11/2013, 13:30
Dernier message: Dydouch
  voice devoice Romu83 11 2,345 23/02/2012, 13:16
Dernier message: BdS
  Annonce X minutes lesny 14 2,748 25/11/2011, 18:03
Dernier message: CrazyCat
  VDM.tcl qui publie toutes les X minutes alanfollow 15 5,249 15/05/2010, 07:32
Dernier message: fedora

Atteindre :


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