Topic Warden
Description
Topic Warden est un script de gestion avancée de topic.
Grâce à lui, il vous est possible de définir / maintenir / protéger le topic de vos chans, de définir des masques de topic contenant des variables que vous définissez librement, d'afficher des évènements dans le topic en fonction de la date et bien plus encore.
Ce script peut par exemple vous permettre de gérer le topic d'un chan associé à un serveur de jeu online, une variable permettrait d'afficher le statut du serveur, une autre le nombre de connectés, etc...
Mais ce n'est qu'un exemple, je l'utilise personnellement sur tous types de chans et il sait s'adapter à toutes les situations.
Une fois Topic Warden activé sur un chan, il devient impossible de modifier le topic sans passer par lui.
De nombreuses commandes sont prévues à cet effet, dont une commande d'interopérabilité permettant à d'autres scripts d'interagir avec le topic via Topic Warden (voir la syntaxe plus bas).
Dans la section configuration du script, 5 paramètres ont un fonctionnement un peu particulier. Il s'agit de
admin_flags,
custom_flags,
variable_flags,
display_flags et
dynamic_separator.
Ces paramètres sont utilisés uniquement lors de la 1ère activation de Topic Warden sur chaque chan afin d'avoir une valeur par défaut à définir.
ILS NE SONT ENSUITE PLUS PRIS EN COMPTE et si vous souhaitez les modifier, vous devrez utiliser les commandes
!topic adminflags,
!topic customflags,
!topic variableflags,
!topic displayflags et
!topic separator.
Cela vous permet de définir ces paramètres indépendamment sur chaque chan.
Il est possible de forcer le script à relire sa configuration par défaut et à se réinitialiser complètement comme si vous veniez juste de l'installer en tapant
!topic reinstall
Ce script pourvoit l'Eggdrop du package TopicWarden 1.5
Fonctionnalités
- Support multilingue (packs de langue français et anglais fournis).
- Protection active du topic et annulation des modifications non-autorisées.
- Gestion de masques de topic, pouvant contenir des variables.
- Possibilité d'afficher dynamiquement la date dans le topic.
- Possibilité d'afficher des variables personnalisées dans le topic.
- Possibilité d'autoriser seulement certains utilisateurs à modifier les variables personnalisées du topic.
- Possibilité de laisser juste une partie du topic en libre modification par certains utilisateurs autorisés.
- Affichage d'évènements dans le topic à une date donnée.
- Traçabilité des modifications de topic effectuées, autorisées ou non.
- Possibilité de garder une trace de tous les anciens topics.
- Création quotidienne d'une copie de sauvegarde des bases de données.
- Séparateurs dynamiques dans le topic, qui ne sont ajoutés que lorsqu'ils sont nécessaires.
- Possibilité d'utiliser des codes de style (couleur, gras, ...) dans les topics même en l'absence du support des codes de style mIRC sur votre client IRC.
- Aide dynamique n'affichant que les commandes auxquelles l'utilisateur a accès.
- Interopérabilité permettant à d'autres scripts d'interagir avec Topic Warden.
- Configurable individuellement sur chaque chan.
- Nombreux paramètres de configuration.
- Nombreuses commandes de gestion.
- File d'attente non-prioritaire dédiée à l'affichage des longs messages afin de ne pas engorger la file d'attente help de l'Eggdrop.
Syntaxe
!topic
Affiche le topic actuel sur le chan en cours.
!topic on
Active la gestion du topic par Topic Warden sur le chan en cours.
!topic off
Désactive la gestion du topic par Topic Warden sur le chan en cours.
!topic mask [nouveau masque]
Affiche ou modifie le masque de topic sur le chan en cours.
!topic separator [nouveau séparateur]
Affiche ou modifie le symbole utilisé comme séparateur dynamique sur le chan en cours.
!topic reset [all]
Réinitialise le topic sur le chan en cours, ou sur tous les chans sur lesquels Topic Warden est activé si vous spécifiez "all"; la partie libre du (des) topic(s) est remise à zéro.
!topic adminflags [nouveaux flags]
Affiche ou modifie le niveau accès minimum pour pouvoir utiliser les commandes d'administration du script (changer les masques, les paramètres) sur le chan en cours.
!topic variableflags [nouveaux flags]
Affiche ou modifie le niveau d'accès minimum pour pouvoir changer la partie libre du topic sur le chan en cours (représentée par la variable %variable% dans le masque du topic).
!topic customflags [nouveaux flags]
Affiche ou modifie le niveau d'accès minimum pour pouvoir changer les variables personnalisées du topic sur le chan en cours.
!topic displayflags [nouveaux flags]
Affiche ou modifie le niveau d'accès minimum pour pouvoir simplement demander l'affichage du topic sur le chan en cours au moyen de la commande
!topic sans arguments.
!topic override <nouveau topic>
Modifie librement le topic sur le chan en cours sans tenir compte du masque enregistré.
!topic <texte>
Modifie la partie libre du topic sur le chan en cours (représentée par la variable %variable% dans le masque du topic).
!topic variable
Affiche la partie libre du topic sur le chan en cours (représentée par la variable %variable% dans le masque du topic).
!topic event
Affiche l'évènement du jour pour le chan en cours.
!topic event add <jour/mois> <évènement>
Ajoute un évènement sur le chan en cours.
"jour" et "mois" doivent être précédés d'un 0 s'ils sont inférieurs à 10.
La variable %event% sera remplacée par l'évènement du jour dans le masque du topic, chaque année à la même date.
Vous pouvez utiliser des variables personnalisées dans les évènements que vous ajoutez (voir ci-après).
Vous pouvez inclure une balise
[#année] dans un évènement; elle sera remplacée à l'affichage par le nombre d'années écoulées depuis.
Par exemple,
!topic event add 10/08 [#2004]ème anniversaire affichera "11ème anniversaire" le 10/08/2015.
!topic event del <n° ou date de l'évènement>
Supprime un évènement sur le chan en cours.
Afin de connaître le numéro de l'évènement que vous voulez supprimer, vous pouvez utiliser la commande
!topic event list (voir ci-dessous).
Si vous choisissez plutôt de spécifier la date, vous devez le faire sous la forme JJ/MM.
!topic event list [argument de recherche]
Affiche tous les évènements programmés pour le chan en cours, ou effectue une recherche d'évènements sur tous les chans si un argument de recherche est spécifié.
La recherche se fait aussi bien dans les dates que dans l'énoncé des évènements.
Les Jokers sont acceptés dans l'argument de recherche.
!topic set <nom_de_variable_perso> [nouveau contenu]
Affiche ou définit le contenu d'une variable personnalisée (représentée par
%nom_de_variable_perso% dans le masque du topic).
!topic unset <nom_de_variable_perso>
Supprime une variable personnalisée (représentée par %nom_de_variable_perso% dans le masque du topic).
!topic varlist [all]
Affiche une liste des variables personnalisées sur le chan en cours, ou sur tous les chans si le paramètre "all" est utilisé.
!topic lastchange
Affiche des informations concernant les dernières modifications de topic ayant eu lieu sur le chan en cours.
!topic reinstall
Réinitialise Topic Warden en ré-appliquant les réglages par défaut définis dans le fichier de configuration de Topic Warden.
Les fichiers contenant les évènements (topicwarden.events) et les variables personnalisées (topicwarden.customvars) sont renommés en y adjoignant l'extension .bak.
Soyez conscient que l'utilisation de cette commande effacera également les masques de topic enregistrés.
Après une réinitialisation, Topic Warden sera désactivé sur tous les chans; vous devrez donc le réactiver au moyen de
!topic on sur chacun des chans où vous souhaitez l'utiliser.
!topic aide / !topic help
Affiche la liste des commandes de Topic Warden auxquelles vous avez droit selon votre accès.
Syntaxe de la commande d'interopérabilité
topic_control <nom du script appelant> <chan> mask <nouveau masque>
exemple :
topic_control {mon script} #monchan mask {bienvenue sur #monchan}
topic_control <nom du script appelant> <chan> variable <nouveau contenu de %variable%>
exemple :
topic_control {mon script} #monchan variable {coucou les gens}
topic_control <nom du script appelant> <chan> reset
exemple :
topic_control {mon script} #monchan reset
Retourne 1 si le topic a été corrigé par le reset ou 0 s'il était déjà correct.
topic_control <nom du script appelant> <chan> override <nouveau topic>
exemple :
topic_control {mon script} #monchan override {joli topic}
topic_control <nom du script appelant> <chan> set <nom_de_variable_perso_1> <nouveau contenu_1> [<nom_de_variable_perso_2> <nouveau contenu_2> [ ... ]]
exemple :
topic_control {mon script} #monchan set ma_variable_perso {contenu de ma variable perso}
Retourne 1 si l'opération a réussi, ou 0 la liste variables/contenus ne comporte pas un nombre pair d'éléments.
topic_control <nom du script appelant> <chan> unset <nom_de_variable_perso1> [<nom_de_variable_perso2> [ ... ]]
exemple :
topic_control {mon script} #monchan unset ma_variable_perso
topic_control <nom du script appelant> <chan> event add <évènement à ajouter>
exemple :
topic_control {mon script} #monchan event add {25/12 Joyeux Noël}
Retourne 1 si l'évènement a été ajouté correctement et 0 s'il a été impossible de l'ajouter (s'il existe déjà un évènement pour cette date).
topic_control <nom du script appelant> <chan> lastchange
exemple :
topic_control {mon script} #monchan lastchange
Retourne une liste contenant deux sous-listes, comportant chacune les quatre éléments suivants : timestamp nick host details.
La première sous-liste contient les informations concernant la dernière modification effective du topic.
La deuxième sous-liste contient les informations concernant la dernière modification non-autorisée du topic, et qui a donc été inversée par la protection.
topic_control <nom du script appelant> <chan> get <mask/variable/event/nom_de_variable_perso>
exemple :
topic_control {mon script} #monchan get ma_variable_perso
Retourne la valeur du masque de topic, de la partie libre du topic, de l'évènement pour la journée en cours ou d'une variable personnalisée.
Un exemple de script utilisant la commande d'interopérabilité est
Latest eggdrop.fr Script in Topic.
Variables acceptées dans un masque de topic et explication de leur fonction
%variable%
Partie libre du topic.
C'est la partie qu'on modifie sur un coup de tête pour citer un truc marrant, pour afficher la pensée du moment, etc..
Cette partie est modifiable en tapant simplement
!topic blabla bla
%event%
Cette partie sera automatiquement remplacée par l'évènement du jour à minuit pile (s'il existe).
%date%
sera remplacé par la date du jour au format JJ/MM/YYYY
%weekday%
sera remplacé par le jour de la semaine en toutes lettres
%day%
sera remplacé par le jour du mois
%month%
sera remplacé par le mois en toutes lettres
%year%
sera remplacé par l'année
%blabla%
Remplacez "blabla" par ce que vous voulez, vous pourrez ensuite modifier cette partie du topic au moyen de la commande :
!topic set blabla <texte à substituer>
Par exemple, vous pouvez envisager d'utiliser %news% dans votre masque de topic : "Voici mon bo topic. News : %news% et hop"
Ainsi, lorsque vous taperez
!topic set news on a gagné \o/ votre topic deviendra : "Voici mon bo topic. News : on a gagné \o/ et hop"
Vous pouvez utiliser autant de variables personnalisées que vous le souhaitez.
%|%
Pas vraiment une variable, mais un séparateur dynamique qui n'est affiché que lorsqu'il est opportun.
Utile pour placer à côté de %event% %variable% ou de variables personnalisées, afin qu'un séparateur soit ajouté lorsque ces variables contiennent quelque chose mais pas lorsqu'elles sont vides.
Reportez-vous à l'option
dynamic_separator dans la section configuration du script afin de définir ce séparateur.
Notez que les variables réservées %variable% et %event% sont pré-définies vides, ce qui fait qu'elles n'apparaissent pas dans le topic tant qu'elles ne sont pas définies autrement.
Par contre, les variables personnelles n'existent pas en tant que variables tant que vous ne les avez pas définies au moyen de la commande
!topic set nom_de_variable_perso blabla.
Codes de contrôle du style visuel acceptés dans les masques de topic, les séparateurs dynamiques, et lors de l'utilisation de !topic override
[c??]
Change la couleur du texte.
Les valeurs valides pour les couleurs vont de 01 à 15.
[c??,??]
Change la couleur du texte et la couleur du fond.
Les valeurs valides pour les couleurs vont de 01 à 15.
[c]
Réinitialise la couleur du texte et la couleur du fond.
[b]
Active/désactive la mise en gras du texte.
[u]
Active/désactive le soulignement du texte.
[i]
Active/désactive l'inversion ou la mise en italique du texte (selon le client IRC que vous utilisez).
[s]
Stoppe les styles visuels appliqués sur le texte.
Notez que ces codes de contrôle sont mis à votre disposition pour votre confort au cas où vous n'utilisez pas mIRC, mais que si vous utilisez ce dernier, vous pouvez tout aussi bien utiliser des styles visuels de la façon habituelle (Ctrl+k, ...).
Changelog
1.0
1.1
- Correction : la variable %month% retourne désormais correctement le nom du mois et non plus son numéro.
- Correction : suppression du 0 devant les numéros de jour inférieurs à 10 retournés par la variable %day%.
- Ajout : il est maintenant possible de set/unset plusieurs variables à la fois au moyen du protocole de communication.
- Correction de quelques bugs mineurs et arrangements divers.
1.11
- Correction : les majuscules dans le nom d'un chan ne devraient désormais plus poser de problèmes.
- Correction du numéro de version (la version 1.1 affichait encore 1.0)
1.2
- Correction d'un bug de la fonction !topic lastchange, qui se produisait quand la dernière action était une resynchronisation du topic par l'eggdrop à son arrivée sur le chan.
- Correction : en raison des variables dynamiques que peuvent contenir le topic, il se peut que plusieurs encodages différents soient mélangés.
Par conséquent, le topic était parfois détecté comme incorrect par erreur et resynchronisé pour rien.
- La commande "!topic reset all" vous informe maintenant du succès de l'opération.
- Ajout de l'option verbose_mode, qui permet de rendre Topic Warden moins bavard en choisissant de n'afficher que le strict minimum.
- Passage sous licence Creative Commons.
1.3
- Correction : l'utilisation de !topic lastchange provoquait une erreur si la dernière action était l'activation du script sur ce chan.
- Correction : l'entrée vide est maintenant correctement supprimée de la base de données lorsqu'une variable personnalisée est supprimée sur le seul chan sur lequel elle était déclarée.
- Modification : si vous tapez !topic off alors que Topic Warden est déjà désactivé, ou !topic on alors qu'il est déjà activé, un message explicite vous en informe.
- Modification : la version minimale requise d'Eggdrop est passée à 1.6.20
- Ajout : il est maintenant possible d'inclure des styles visuels dans votre topic, et ce même si vous n'utilisez pas mIRC. Différents codes de contrôle ont été ajoutés à cet effet, reportez-vous à l'explication détaillée sous la section "Syntaxe". (Suggéré par Cain)
- Ajout : la commande !topic varlist [all] permet d'afficher une liste des variables personnalisées sur le chan en cours ou sur tous, ou sur tous les chans si le paramètre "all" est utilisé. (Suggéré par Vendethiel)
- Ajout : vous pouvez désormais utiliser %|% dans le masque de vos topics. Il s'agit d'un séparateur dynamique qui ne sera affiché que lorsqu'il sera justifié. Utile pour placer à côté de %event% %variable% ou de variables personnalisées, afin qu'un séparateur soit ajouté lorsque ces variables contiennent quelque chose mais pas lorsqu'elles sont vides. Reportez-vous à l'option dynamic_separator dans la section configuration du script afin de définir ce séparateur. (Suggéré par Belatucadrus)
- Ajout : Topic Warden peut maintenant enregistrer l'historique des modifications effectuées sur les topics dans un fichier log. Voir les options log_topic_modifications et logfile.
- Diverses optimisations du code et quelques corrections esthétiques.
1.4
- Correction : les modifications de topic faites au moyen de !topic override ou de la commande topic_control avec le paramètre override n'étaient pas consignées dans le fichier log.
- Correction : des codes de style mIRC (texte gras) étaient ajoutés dans le fichier log lors de l'utilisation de la commande topic_control
- Correction : le résultat de la commande !topic reset all ne s'affichait pas forcément sur le chan où la commande avait été tapée.
- Correction : la commande !topic lastchange tronquait parfois le début de certains éléments variables.
- Modification : il est désormais possible de supprimer un évènement en indiquant sa date.
- Ajout : Topic Warden effectue maintenant une sauvegarde quotidienne de ses bases de données. L'heure de la sauvegarde peut être réglée en modifiant le paramètre de configuration backup_time.
- Ajout : nouveau paramètre de configuration monochrome pour ceux qui préfèrent la vie en noir et blanc.
- Ajout : nouveaux paramètres de configuration eventsfile et customvarsfile vous permettant de configurer le chemin et le nom de fichier des bases de données.
- Quelques optimisations du code.
1.5
- Correction : la procédure de désinstallation ne supprimait pas la procédure d'interopératibilité ::topic_control
- Correction : suppression de variable de chan inutilisée topicwarden-custom
- Correction : des messages informatifs étaient affichés lors de l'ajout / suppression d'évènements, en dépit du paramètre verbose_mode réglé à 0.
- Correction : l'utilisation de caractères accentués à la fin du texte d'un évènement pouvait corrompre la base de données contenant les évènements.
- Correction : l'Eggdrop pouvait directement modifier le topic d'un chan géré par Topic Warden (avec la commande Tcl "topic") sans que la modification soit inversée par la protection de Topic Warden.
- Correction : il était possible de créer une variable personnalisée %|%, ce qui entrait en conflit avec le séparateur dynamique.
- Modification : les bases de données et le fichier log se trouvent maintenant dans les répertoires topic_warden/databases et topic_warden/log par défaut.
Si vous mettez à jour depuis une ancienne version et que vous souhaitez récupérer vos bases de données, mettez-les au bon endroit.
- Modification : les paramètres de configuration de Topic Warden se trouvent maintenant dans un fichier séparé, situé dans le répertoire topic_warden par défaut.
- Modification : les modifications non-autorisées du topic sont surveillées indépendamment et ne viendront plus écraser l'information concernant le dernier changement de topic autorisé.
!topic lastchange et sa contrepartie avec la commande d'interopérabilité ::topic_control retournent maintenant les deux informations.
- Modification : les modifications non-autorisées du topic qui ont été annulées par la protection n'ajoutent plus l'état actuel du topic dans le fichier log, mais uniquement l'action qui a été accomplie.
- Modification : les messages affichés par !topic help / !topic varlist et !topic event list utilisent désormais une file d'attente dédiée et non prioritaire afin de ne pas engorger la file d'attente "help" de l'Eggdrop.
Tant que cette dernière n'est pas libre, l'affichage des messages de Topic Warden est différé.
- Modification : Topic Warden déclare maintenant le package TopicWarden afin que les scripts tiers utilisant la commande d'interopérabilité puissent le détecter.
- Modification : le filtrage des caractères accentués lors de la recherche d'évènements reconnaît de nouveaux caractères.
- Modification : le paramètre de configuration display_mode a été renommé en long_display_mode.
- Ajout : Topic Warden utilise désormais des fichiers de langue pour l'affichage des messages du script.
Des fichiers pour la langue française et la langue anglaise sont fournis.
Un nouveau paramètre de configuration permettant de contrôler la langue a été ajouté.
- Ajout : nouveau paramètre de configuration display_mode vous permettant de choisir d'afficher les messages du script en public ou en notice.
- Ajout : le host de l'utilisateur est maintenant affiché dans le log et lors de l'utilisation de la commande !topic lastchange.
Veuillez noter le host ne sera visible que pour les futures modifications, celles datant d'une version antérieure ne comportant pas l'information.
Le host est également retourné comme un nouveau champ, par la commande d'interopérabilité ::topic_control.
Veuillez prendre connaissance de la nouvelle syntaxe dans la documentation.
- Ajout : un en-tête est maintenant ajouté aux bases de données, afin de permettre d'en vérifier la version.
Cet en-tête comporte également un rappel de la structure d'une entrée dans la base de données.
- Quelques optimisations du code, enrichissement de la documentation.
1.51
- Correction : un message du script n'était pas inclus dans le fichier de langue.
- Correction : le package TopicWarden restait déclaré si le script échouait à lire son fichier de configuration et n'était par conséquent pas chargé.
- Correction : Topic Warden supprimait par erreur la déclaration du package OpenEye lorsqu'il était rechargé individuellement.
1.52
- Correction : Les fichiers de langue étaient chargés trop tard, ce qui fait que certains messages pouvaient ne pas s'afficher correctement lors de l'initialisation.
- Correction : Les fichiers de langue n'étaient pas déchargés de la mémoire par la procédure de désinstallation.
- Correction : en mode verbose, l'affichage de certains messages provoquaient une erreur lors de la resynchronisation du topic.
- Ajout : Il est désormais possible d'inclure une balise [#année] lors de l'ajout d'un évènement, qui sera remplacée à l'affichage par le nombre d'années écoulées depuis.
Par exemple : !topic event add 10/08 [#2004]ème anniversaire affichera "11ème anniversaire" le 10/08/2015.
1.53
- Correction : une erreur se produisait lors de la resynchronisation du topic si un évènement existait pour la journée en cours.
- Correction : dans certains cas, l'Eggdrop pouvait entrer dans une boucle en tentant d'inverser une de ses propres modifications du topic qu'il considérait comme non-autorisée.
1.54
- Correction : une erreur pouvait se produire au rechargement du script ou lors de l'utilisation de la commande !topic displayflags en raison d'une erreur dans les packs de langue.
- Correction : la version déclarée du package TopicWarden est repassée à la v1.5 pour des raisons de simplicité car l'interopérabilité restera inchangée jusqu'à la v1.6
Notes de mise à jour
Si vous venez de mettre à jour le script depuis une version antérieure à la 1.3, vous devrez taper
!topic off puis
!topic on sur chacun des des chans où vous l'utilisez afin d'initialiser le nouveau séparateur (cf. changelog de la v1.3).
Si vous venez de mettre à jour le script depuis une version antérieure à la 1.5, veuillez noter que tous les fichiers annexes du script (bases de données, log, ...) se trouvent désormais dans le répertoire topic_warden (cf. changelog de la v1.5).
Si vous souhaitez conserver vos anciens logs et bases de données, veuillez les placer au bon endroit.
Téléchargement
Topic Warden v1.54
Laissez vos commentaires / questions / suggestions / rapports de bugs
ici.