Messages Delivery Service par MenzAgitat
Catégorie : Messagerie
548 téléchargements
Description :
 
Description

Connaissez-vous MemoServ ? Il s'agit d'un service disponible sur certains serveurs IRC et permettant d'envoyer un message à un utilisateur, qu'il soit connecté ou non. Bonne idée en soi si certains défauts majeurs ne le rendaient pas quasiment inutile :
  • Il ne vous permet pas d'envoyer de messages si vous n'avez pas enregistré et identifié votre nick.
  • Il ne permet pas d'envoyer de messages à un utilisateur n'ayant pas enregistré son nick.
  • Lorsque vous avez un message, MemoServ vous en informe au moment de votre connexion au serveur et l'information est noyée dans les nombreuses notices que le serveur vous envoie à ce moment précis. Qui lit scrupuleusement ce flood lorsqu'il se connecte ? Pas moi. Par conséquent, il m'est arrivé de m'apercevoir que j'avais un message sur MemoServ 8 mois après qu'il ait été envoyé; ça se passe de commentaires.
Et voici Messages Delivery Service, que j'appellerai MDS pour plus de simplicité.

MDS permet d'envoyer un message à une personne (qui n'a pas besoin d'être connectée) et de s'assurer que le message sera bien délivré dans les meilleurs délais.
Dès que le destinataire rejoindra un des chans sur lesquels le bot se trouve ou qu'il y parlera, donc dès qu'on pourra être certain qu'il y porte attention, un message lui sera affiché afin de lui indiquer qu'il a des messages non-lus.
Il pourra alors taper !lire (par défaut) pour les recevoir.
Si l'utilisateur ne lit pas ses messages, un rappel lui indiquant qu'il a des messages en attente s'affichera toutes les 30mn (réglable) s'il manifeste sa présence en parlant. Ce compteur de 30mn est réinitialisé si de nouveaux messages lui sont envoyés entre temps.

[Image: mdsscreenshot.jpg]

Lorsqu'un message est reçu, un accusé de réception est automatiquement envoyé à l'expéditeur pour l'en informer (optionnel).
Il est également possible pour le destinataire de confirmer avoir lu le message au moyen de la commande !lu <n° d'identifiant du message> (optionnel). Si une confirmation de lecture est envoyée, elle remplace l'accusé de réception.
Notez qu'il est possible d'effacer un message que vous avez envoyé tant qu'il n'a pas été reçu par son destinataire.

Concernant la confidentialité, MDS s'assure du mieux qu'il peut qu'il ne délivrera pas un message à la mauvaise personne.
De plus, si l'identité de l'expéditeur d'un message présente une incohérence, le fait sera signalé au destinataire ainsi qu'une estimation du niveau de confiance qu'il peut lui accorder en fonction du nombre et de la gravité des anomalies détectées. Il sera alors libre de lui accorder ou non du crédit.
Ce système fonctionne conjointement avec les handles enregistrés sur l'eggdrop (et leurs listes de hosts associés), la vérification d'identité auprès de NickServ ou tout serveur de nick similaire (si disponible) et le recoupement de diverses informations disponibles afin de détecter les anomalies.
Avoir un nick enregistré ou un handle sur l'eggdrop augmente donc considérablement le niveau de sécurité et permet de s'assurer que personne ne pourra lire vos messages à votre place. Pour ceux qui n'ont ni handle, ni nick enregistré, le bot ne pourra faire mieux que de délivrer le message à la première personne portant le même nick.
Veuillez noter que le bon fonctionnement de ce système repose en partie sur une liste d'accès bien tenue, avec des masques de hosts pertinents et aussi précis que possible (je parle évidemment de la liste d'accès de l'eggdrop).
Si vous utilisez des handles génériques, il est possible de les déclarer afin que le système de sécurité de MDS n'accorde pas trop de crédit à la reconnaissance par handle en ce qui les concerne.
L'idée de base d'un handle générique est de regrouper plusieurs utilisateurs ayant un host identique (utilisateurs d'un même bnc, d'un cybercafé, etc..) sous un même handle dit "générique".
Enfin, dans le but d'améliorer encore la confidentialité des messages envoyés, la base de données est cryptée par défaut et la clé de cryptage est différente pour chaque message.

Si l'on tente d'envoyer un message trop long pour être affiché intégralement chez le destinataire, le bot nous en informe et affiche la limite à ne pas dépasser. Cette limite est dynamique et est calculée en fonction du nom du chan, du nick de l'expéditeur, de la fioriture que vous avez choisie pour rendre bien visibles les messages recus, etc...

Il est possible de créer des groupes de destinataires grâce à la commande !msggroup (reportez-vous à la syntaxe plus bas).
Mettons que vous souhaitiez créer un groupe "admins" afin d'envoyer facilement un message à tous les administrateurs de vos chans, il vous suffira de faire :
!msggroup admins paulo joe robert ursule
puis : !msg @admins coucou les gars, vous êtes virés.
Notez qu'un destinataire peut appartenir à plusieurs groupes à la fois.

L'activation/désactivation du script sur chaque chan se fait au moyen de la commande de partyline .chanset #nomduchan [+/-]MDS
Notez que ceci concerne uniquement l'utilisation des commandes de la messagerie, ce qui veut dire qu'une personne ayant un message et manifestant sa présence sur un chan inactif sera quand même avertie qu'elle a un message non-lu.

Il est possible d'utiliser MDS pour envoyer des messages à des utilisateurs depuis d'autres scripts, une procédure existe dans ce but précis.
Voici comment utiliser cette fonction :
send_msg_to <destinataire>[,destinataire,...] <nom_du_script_appelant> <message>
- Le nom du ou des destinataires peut être un nick, un handle ou un groupe (reportez-vous aux explications concernant les groupes de destinataires).
- nom_du_script_appelant doit être le nom du script qui envoie le message.
Le destinataire recevra le message sous la forme :
"Message de nom_du_script_appelant envoyé le xx/xx/xxxx à xxhxx : blablabla".
MDS déclare le package "MDS" afin que vous puissiez vérifier sa présence depuis d'autres scripts au moyen de "package require MDS".
Les messages envoyés par ce biais ne sont pas soumis au contrôle de longueur minimale et maximale du message ou du nombre maximum de destinataires, et l'anti-flood ne s'en occupe pas. Soyez donc responsable dans la façon dont vous l'utilisez.


Syntaxe

Envoyer un message depuis un chan :
!msg <destinataire>[,destinataire,...] <message>

Envoyer un message depuis un message privé à l'Eggdrop :
/msg nom_du_bot msg <destinataire>[,destinataire,...] <message>

Effacer un message envoyé dont on est l'auteur depuis un chan :
!msg -del <n° d'identification du message>

Effacer un message envoyé dont on est l'auteur depuis un message privé à l'Eggdrop :
/msg nom_du_bot msg -del <n° d'identification du message>

Lire ses messages non-lus depuis un chan :
!lire

Lire ses messages non-lus depuis un message privé à l'Eggdrop :
/msg nom_du_bot lire

Confirmer la lecture d'un message depuis un chan :
!lu <n° d'identifiant du message>

Confirmer la lecture d'un message depuis un message privé à l'Eggdrop :
/msg nom_du_bot lu <n° d'identifiant du message>

Afficher la liste des messages envoyés dont on est l'auteur et qui n'ont pas encore été délivrés depuis un chan :
!sentmessages

Afficher la liste des messages envoyés dont on est l'auteur et qui n'ont pas encore été délivrés depuis un message privé à l'Eggdrop :
/msg nom_du_bot sentmessages

Afficher la liste des destinataires ayant des messages en attente depuis un chan :
!messages

Ajouter un ou plusieurs destinataires à un groupe (handles ou nicks) :
!msggroup add <nom_du_groupe> <handle1/nick1[,handle2/nick2[,...]]>

Supprimer un ou plusieurs destinataires d'un groupe (handles ou nicks) :
!msggroup del <nom_du_groupe> [handle1/nick1[,handle2/nick2[,...]]]

Afficher la liste des destinataires d'un groupe :
!msggroup list [nom_du_groupe]

Afficher la liste des groupes de destinataires disponibles :
!msggroup list

Les commandes !messages et !msggroup ont leur équivalent en partyline en remplaçant le "!" par un "."


Post support et commentaires

http://forum.eggdrop.fr/showthread.php?tid=565

Changelog

Version 3.0 par MenzAgitat (21/11/2012)
474 téléchargements
- Ajout : nouvelle syntaxe permettant d'effacer un message envoyé dont on est l'auteur : !msg -del <n° d'identification du message>
La fonctionnalité peut être activée ou désactivée avec le paramètre can_delete_own_sent_msg.
- Ajout : nouvelle commande !sentmessages permettant d'afficher une liste des messages envoyés dont on est l'auteur, ainsi que leur numéro d'identification.
- Ajout : version partyline de la commande !messages
- Ajout : nouvelle option auto_correct_apostrophes permettant d'activer la substitution automatique des apostrophes (') par des accents graves (`) dans les noms des destinataires.
- Ajout : la base de données peut être cryptée afin d'éviter les indiscrétions si des personnes ont accès à ce fichier. Reportez-vous à l'option encrypt_database (activée par défaut).
- Ajout : il est désormais possible d'envoyer un message à des groupes de personnes que vous aurez définis au préalable.
La commande !msggroup <add/del/list> [paramètres] vous permet de gérer ces groupes.
Pour envoyer un message à un groupe, faites précéder le nom du groupe par un @ comme dans cet exemple : !msg @admins vous êtes virés.
De nouveaux paramètres de configuration concernant les groupes ont été ajoutés, veuillez vous reporter à la section configuration du script.
- Modification : l'affichage de nombreux messages du script a été homogénéisé.
- Modification : plusieurs messages d'avertissement du script ont été clarifiés.
- Modification : la déclaration de package MDS précise maintenant la version du script.
- Modification : disparition des paramètres num_def_color, num_sec_color, num_key_color, num_warn_color, num_flash_color et num_bg_color.
La personnalisation des couleurs présentait certains défauts qu'il m'a paru peu utile de corriger car je doute que beaucoup d'entre vous les utilise.
- Modification : lors de l'envoi d'un message, les vérifications d'identité ont maintenant lieu après la vérification de la syntaxe afin de ne pas être faites inutilement.
- Modification : si une base de données de messages est au format d'une ancienne version du script et nécessite d'être convertie, une copie de sauvegarde est maintenant créée avant la conversion.
- Modification : si la base de données de messages est introuvable ou corrompue, le script tentera de restaurer automatiquement une copie de sauvegarde si elle existe avant d'en recréer une nouvelle.
- Correction : un bug dans la vérification des messages expirés provoquait une erreur (encore).
- Correction : un timer lancé lorsqu'un utilisateur rejoint un salon se dupliquait à chaque join.
- Correction : l'Eggdrop ne tente plus de vérifier s'il a des messages lorsqu'il rejoint un chan. Ca provoquait une erreur si vous le faisiez rejoindre un chan non-statique puis le quitter quelques secondes après.
- Correction : si l'envoi de messages à l'Eggdrop est interdit et que l'on tente de le faire, le message affiché est désormais correct.
- Correction : un utilisateur pouvait dans certains cas (rares) recevoir une double notification lui signalant qu'il a des messages non lus.
- Correction : l'antiflood n'affichait pas ses messages correctement en cas d'utilisation excessive de la commande privée.
- Importantes restructurations du code, nombreuses optimisations.
- Passage sous licence Creative Commons.
Version 2.11 par MenzAgitat (07/12/2010)
74 téléchargements