Utiliser une file d'attente avec une priorité nulle pour l'envoi de messages
Lorsque l'Eggdrop doit afficher d'un seul coup beaucoup de lignes de texte, il peut être intéressant d'utiliser une file d'attente à priorité nulle.
Cela signifie que n'importe quel autre message de l'Eggdrop placé dans n'importe quelle file d'attente sera prioritaire.
Les messages placés dans cette file d'attente spéciale ne seront envoyés que si toutes les autres files d'attente sont vides.
La procédure
add_to_low_priority_queue attend 3 arguments :
mode : peut valoir PRIVMSG ou NOTICE
target : peut être un nick ou un chan
text : le texte à afficher
Variable à initialiser au début de votre script
variable special_queue_running 0
Procédures
#############################################################################
### Ajout d'un message dans la file d'attente à basse priorité.
#############################################################################
proc add_to_low_priority_queue {mode target text} {
variable special_queue
variable special_queue_running
lappend special_queue [list $mode $target $text]
if { !$special_queue_running } {
process_special_queue
}
}
#############################################################################
### Traitement de la file d'attente à basse priorité.
#############################################################################
proc process_special_queue {} {
variable special_queue
variable special_queue_running
# Si les autres files d'attente ne sont pas vides, on reporte à plus tard.
if { [queuesize] > 0 } {
utimer 2 process_special_queue
return
# Sinon, on envoie la ligne dans la file d'attente "help".
} else {
lassign [lindex $special_queue 0] mode target text
puthelp "$mode $target :$text"
# On élimine la 1ère ligne de la file d'attente car elle a été traitée.
variable special_queue [lreplace $special_queue 0 0]
# Si la file d'attente est vide, on arrête.
if { ![llength $special_queue] } {
variable special_queue_running 0
return
# Sinon, on continue de la traiter.
} else {
variable special_queue_running 1
after 0 process_special_queue
}
}
}
Utilisation
add_to_low_priority_queue PRIVMSG #testchan "Hello world!"
Tcl: