Просмотр исходного кода

Mémoire : sources nommées signalées avant d'activer la mémoire

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Johnounet 2 дней назад
Родитель
Сommit
ffedaeb86b
4 измененных файлов с 9 добавлено и 2 удалено
  1. 1 1
      README.md
  2. 3 1
      bot/memory_views.py
  3. 4 0
      changelog.txt
  4. 1 0
      tests/test_memory.py

+ 1 - 1
README.md

@@ -36,7 +36,7 @@ Seul le nom du fichier reste ensuite en mémoire : le bot se souvient qu'il l'a
 
 Avec `MEMORY=on` :
 
-- **Ce qui est retenu** : goûts, projets, habitudes, y compris ce que les autres membres racontent. Jamais de confidences ni de jugements ; une information sensible (santé, religion, opinions, adresse, argent…) seulement si le membre la donne lui-même, et le bot ne l'évoque ensuite qu'avec lui. Il se sert de ce qu'il sait dans la conversation, mais ne récite pas la fiche d'un membre aux autres.
+- **Ce qui est retenu** : goûts, projets, habitudes, y compris ce que les autres membres racontent, avec leur nom comme source (« d'après Toto ») : la personne concernée le voit dans sa fiche, même si Toto n'a pas activé la mémoire ou en a parlé dans un salon qu'elle ne voit pas. Jamais de confidences ni de jugements ; une information sensible (santé, religion, opinions, adresse, argent…) seulement si le membre la donne lui-même, et le bot ne l'évoque ensuite qu'avec lui. Il se sert de ce qu'il sait dans la conversation, mais ne récite pas la fiche d'un membre aux autres.
 - **Activation** : la mémoire est désactivée pour chacun par défaut. Un membre qui le souhaite l'active lui-même avec `/memoire`, après avoir lu ce qu'elle retient et qui peut voir sa fiche. Rien n'est noté sur un membre qui ne l'a pas activée, même quand les autres parlent de lui. Le bot n'envoie aucun message pour la présenter : c'est à vous d'en parler sur le serveur.
 - **`/memoire`** : chacun voit la fiche que le bot tient sur lui, dans un message visible par lui seul. Il peut la modifier dans une fenêtre déjà remplie, l'effacer (après confirmation) ou désactiver la mémoire : sa fiche et les lignes du fichier général qui citent un de ses noms Discord sont alors effacées (au-delà de 3 lignes, aucune n'est retirée et le log le signale à l'administrateur), son nom est remplacé par « un membre » là où il est cité comme source dans les autres fiches (« d'après … », « selon … »), et plus rien n'est noté sur lui, jusqu'à ce qu'il la réactive. Dans les deux cas, ses derniers messages restent dans l'historique de la conversation. Les administrateurs voient, modifient et effacent la fiche de n'importe quel membre avec `/memoire membre:@…` (la modifier seulement si le membre a activé la mémoire) ; seul le membre lui-même peut l'activer ou la désactiver. Exception : pour un membre parti du serveur (désigné par son identifiant), qui ne peut plus lancer `/memoire`, un administrateur peut désactiver la mémoire à sa place, ce qui efface tout comme s'il l'avait fait lui-même. Les membres en sont prévenus (avant d'activer la mémoire, et sous leur fiche dans `/memoire`), et chaque ouverture de la fiche d'un autre est notée dans le log (qui, quelle fiche, sans le contenu).
 - **`/memoire-serveur`** : le fichier général du serveur, à voir, modifier ou effacer. Réservé aux administrateurs.

+ 3 - 1
bot/memory_views.py

@@ -228,7 +228,9 @@ class MemoryCard:
         # Seule présentation de la mémoire au membre : tout ce qu'il doit savoir avant d'accepter.
         question = (f"Si tu actives la mémoire, {self.bot_name} retiendra des choses sur toi au fil des "
                     f"conversations (tes goûts, tes projets…), y compris ce que d'autres membres lui racontent "
-                    f"sur toi. Ce qui est retenu sert dans la conversation, mais ta fiche n'est jamais récitée "
+                    f"sur toi, avec leur nom comme source (« d'après … »). De même, ce que tu lui racontes sur "
+                    f"un autre membre qui a activé la mémoire peut être noté dans sa fiche avec ton nom, et il "
+                    f"la voit. Ce qui est retenu sert dans la conversation, mais ta fiche n'est jamais récitée "
                     f"aux autres ; à part toi, seuls les administrateurs du serveur peuvent la voir et la "
                     f"corriger. Tu pourras la voir, la modifier ou désactiver la mémoire ici, avec /memoire.")
         await confirm(interaction, self, question, self.enable)

+ 4 - 0
changelog.txt

@@ -143,6 +143,10 @@ Corrections
   commande échouait, et lui-même ne pouvait plus la lancer : sa fiche
   restait pour toujours. Un administrateur peut aussi désactiver sa
   mémoire à sa place, ce qui efface tout comme s'il l'avait fait.
+- Mémoire : avant d'activer la mémoire, chacun est prévenu que les
+  sources sont notées avec leur nom (« d'après Toto ») et visibles par
+  la personne concernée : ce qu'on raconte sur un autre membre peut
+  lui être montré dans sa fiche.
 - Mémoire : un membre ne peut plus prendre le nom Discord d'un autre
   (pseudo, nom d'utilisateur ou ancien pseudo) comme surnom dans sa
   fiche. Ce surnom est ignoré dans la liste des membres : Rika ne note

+ 1 - 0
tests/test_memory.py

@@ -463,6 +463,7 @@ class ConfirmationTextsTest(MemoryTestCase):
         self.assertIn("Activer la mémoire", [item.label for item in card.view().children])
         text = await self.question(target, "ask_enable")
         self.assertIn("ce que d'autres membres lui racontent", text)
+        self.assertIn("noté dans sa fiche avec ton nom", text)  # ses propres propos, montrés aux autres
         self.assertIn("administrateurs du serveur peuvent la voir", text)
         interaction = mock.Mock()
         interaction.response.edit_message = mock.AsyncMock()