changelog.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. CHANGELOG — Chatbot Discord
  2. ===========================
  3. Version 5.7 — 30/10/2026
  4. ------------------------
  5. Nouveautés
  6. - Quand Rika passe absente ou en « Ne pas déranger » (ou part dormir) en
  7. pleine conversation, elle prévient son salon dans un court message, en
  8. accord avec son statut. Elle ne le fait que si quelqu'un y a écrit dans
  9. les 3 dernières minutes, et après avoir fini sa réponse en cours ; elle
  10. s'en souvient ensuite.
  11. Version 5.6 — 30/10/2026
  12. ------------------------
  13. Nouveautés
  14. - Statut Discord : sous son pseudo, Rika regarde un anime, écoute de la
  15. musique, joue à un jeu, affiche une pensée du moment, ou passe en « Ne pas
  16. déranger » ou absente.
  17. - Chances de chaque statut : anime 20 %, musique 20 %, pensée 10 %, jeu
  18. 20 %, en ligne sans activité 20 %, Ne pas déranger 5 %, absente 5 %
  19. (PRESENCE_WEIGHTS dans le .env). Chaque statut a sa propre durée, tirée
  20. au sort ; à la fin, un nouveau statut est tiré, jamais le même que le
  21. précédent.
  22. - Animes : un titre (romaji) au hasard dans le top 500 d'AniList. Rika
  23. regarde 1 à 5 épisodes à la suite, à partir d'un épisode précis, à la
  24. durée réelle d'un épisode (un film compte pour un épisode).
  25. - Musiques : 6 à 20 titres au hasard dans le Top Worldwide, le Top France
  26. et le Top Japan de Deezer, chacun à sa durée réelle.
  27. - Jeux : un jeu au hasard dans toute la boutique Steam (clé STEAM_API_KEY ;
  28. sans elle, pas de statut « joue à »), pendant 45 min à 2 h. Les jeux
  29. pour adultes sont écartés, et Rika connaît la présentation du jeu sur la
  30. boutique.
  31. - En ligne sans activité : 15 à 45 min.
  32. - Pensée du moment (30 à 90 min), raison d'une absence (10 à 60 min) ou
  33. d'un Ne pas déranger (30 à 90 min) : écrites par Claude avec la
  34. personnalité du bot, selon l'heure et la durée, sans reprendre les
  35. dernières.
  36. - De 2 h à 6 h, Rika est automatiquement absente (PRESENCE_NIGHT), quoi
  37. qu'elle soit en train de faire.
  38. - Quand on lui parle, Rika sait ce qu'elle est en train de faire, et pour
  39. combien de temps encore.
  40. - PRESENCE_SPEED=10 rend tous les statuts 10 fois plus courts, pour tester.
  41. - Les listes sont téléchargées au démarrage puis une fois par jour, et
  42. gardées dans presence_sources.json (à côté de l'historique) au cas où
  43. un site ne répondrait plus.
  44. - Absente (et la nuit), Rika ne répond plus avant son retour ; en « Ne pas
  45. déranger », elle répond au bout de 5 à 15 minutes, ou dès qu'elle change
  46. de statut.
  47. - Dans son salon, tous les messages arrivés entre-temps reçoivent une
  48. seule réponse groupée. Ailleurs, elle répond à chaque mention avec
  49. « Répondre », pour qu'on sache à quel message elle répond.
  50. - Elle sait qu'elle répond en retard, et pourquoi (absente, Ne pas
  51. déranger, la nuit, avec la raison affichée).
  52. - Elle ne réagit pas aux stickers ni aux emojis seuls pendant ce temps.
  53. - Les messages en attente sont gardés dans waiting_messages.json (à côté
  54. de l'historique) : après un redémarrage, Rika y répond quand même.
  55. Version 5.5 — 29/10/2026
  56. ------------------------
  57. Corrections
  58. - Les avertissements de discord.py sur le vocal (PyNaCl et davey non
  59. installés) n'apparaissent plus à chaque démarrage : le bot n'utilise pas
  60. le vocal.
  61. - Réflexion affichée : avec Sonnet 5.5 et EFFORT=high, le modèle écrivait
  62. parfois sa réflexion dans sa réponse (faux appel d'outil
  63. <invoke name="think">…, raisonnement entre balises <reasoning>…), quand il
  64. choisissait de ne pas réfléchir. Ça n'arrive plus avec EFFORT=medium :
  65. c'est le réglage conseillé.
  66. - Les consignes ajoutées automatiquement à la personnalité suivent les
  67. recommandations d'Anthropic contre ces fuites : plus d'interdiction de
  68. commenter les recherches web (ce commentaire n'est de toute façon jamais
  69. affiché), et une consigne générale contre les balises internes.
  70. - Au démarrage, le log indique le modèle, la réflexion, l'effort et la
  71. recherche web réellement utilisés.
  72. - Logs : chaque requête HTTP vers l'API d'Anthropic n'est plus journalisée
  73. (le SDK 2.x passe par httpx2, qui n'était pas rendu silencieux).
  74. Version 5.4.0 — 29/10/2026
  75. --------------------------
  76. Nouveautés
  77. - Changement de modèle facile : il suffit de modifier CLAUDE_MODEL dans le
  78. .env (claude-sonnet-5-5, claude-haiku-5-5 ou claude-opus-5-5) et de
  79. redémarrer le bot.
  80. - THINKING=off coupe la réflexion de la façon propre à chaque modèle
  81. (auparavant, tout autre modèle que Sonnet 5.5 était refusé par l'API).
  82. - Sur Opus 5.5, la réflexion ne peut pas être coupée : régler EFFORT=low.
  83. - Les tarifs utilisés pour le coût estimé dans les logs suivent le modèle
  84. choisi ; PRICE_INPUT_PER_MTOK et PRICE_OUTPUT_PER_MTOK ne sont plus à
  85. renseigner que pour un autre modèle (à vider dans le .env existant).
  86. - Messages transférés : dans le salon dédié, le bot lit le message transféré
  87. (son texte et son image).
  88. - Discussion entre bots : le bot répond aux autres bots quand ils le
  89. mentionnent ou répondent à l'un de ses messages ; le reste de ce qu'ils
  90. postent est toujours ignoré.
  91. - Messages regroupés : dans le salon dédié, les messages envoyés pendant que
  92. le bot répond ne reçoivent plus chacun leur réponse ; ils lui sont transmis
  93. ensemble (avec leurs images) et il y répond en une seule fois.
  94. Corrections
  95. - Les messages système (arrivée d'un membre, message épinglé, boost, fil
  96. créé…) et les messages sans rien à lire (sondages…) ne déclenchent plus de
  97. réponse payante de Claude.
  98. - /reset vidait mal la mémoire s'il était lancé pendant une réponse : l'échange
  99. en cours y était réécrit juste après. Le reset attend désormais la fin de la
  100. réponse avant de tout effacer.
  101. - Mentions moins chères : le contexte lu pour répondre à une mention n'est
  102. plus écrit dans le cache de prompt (surcoût de 25 %), puisqu'il change à
  103. chaque mention et n'y était jamais relu.
  104. - Mentions : l'image jointe à la mention elle-même est maintenant lue (seule
  105. celle du message cité l'était). Si les deux en ont une, c'est celle de la
  106. mention qui est envoyée à Claude.
  107. Version 5.3.0 — 29/10/2026
  108. --------------------------
  109. Nouveautés
  110. - Accès à Internet (désactivé par défaut) : avec WEB_SEARCH=on dans le .env,
  111. le bot peut faire des recherches web et lire les liens partagés dans la
  112. conversation (outils web_search et web_fetch d'Anthropic).
  113. - Il ne cherche que si la question porte sur l'actualité ou une info qu'il
  114. ne connaît pas, et nomme sa source dans sa réponse (sans lien).
  115. - WEB_MAX_USES limite le nombre de recherches (et de pages lues) par message.
  116. - Seule la réponse finale est envoyée sur Discord, sans les commentaires
  117. écrits pendant les recherches.
  118. - Dans la mémoire, une mention indique au bot qu'il a réellement cherché,
  119. pour qu'il ne croie pas avoir inventé sa réponse au message suivant.
  120. - Avec la recherche activée, prévoir API_TIMEOUT=90.
  121. Améliorations
  122. - Cache de prompt : la personnalité, les outils et l'historique sont relus
  123. depuis le cache à 10 % du prix (pendant 5 minutes, prolongées à chaque
  124. message). Avec la recherche web activée, un message simple passe d'environ
  125. 0,015 $ à 0,002 $.
  126. - Le coût estimé dans les logs tient compte du cache (tokens lus et écrits)
  127. et des recherches web (PRICE_WEB_SEARCH_PER_1000).
  128. Version 5.2.0 — 28/10/2026
  129. --------------------------
  130. Nouveautés
  131. - Fichiers texte : le bot lit un fichier .txt joint au message et en tient
  132. compte dans sa réponse.
  133. - Un fichier .txt par message (en plus d'une éventuelle image), 100 Ko maximum.
  134. - Fonctionne dans le salon dédié et en mode mention.
  135. - Encodage UTF-8 ou Windows (Bloc-notes) reconnu automatiquement.
  136. - Dans la mémoire, seul le nom du fichier est conservé, pas son contenu
  137. (comme pour les images), pour ne pas faire grimper le coût des messages
  138. suivants.
  139. - Personnalité perso : les fichiers *.local.txt sont exclus de GitHub
  140. (.gitignore). On peut y mettre une personnalité contenant des infos privées
  141. (ex. PERSONALITY_FILE=personality_prompt.local.txt dans le .env) ;
  142. personality_prompt.txt reste la personnalité par défaut publiée sur GitHub.
  143. Améliorations
  144. - Le bot n'utilise plus la fonction « Répondre » de Discord pour ses réponses :
  145. il écrit simplement à la suite dans le salon, comme un humain.
  146. - Les messages d'erreur (fichier non pris en charge, image en trop, etc.)
  147. restent en « Répondre », pour qu'on sache à qui ils s'adressent.
  148. Version 5.1.0 — 27/10/2026
  149. --------------------------
  150. Nouveautés
  151. - Réponses aux messages : quand on utilise « Répondre » sur un message, même
  152. ancien, le bot lit le message cité et en tient compte dans sa réponse.
  153. - Si le message cité vient du bot, il sait qu'il s'agit de sa propre réponse.
  154. - Le texte cité est limité à 500 caractères.
  155. - Si le message cité contient une image, elle est aussi envoyée à Claude,
  156. sauf si la réponse contient déjà sa propre image (celle-ci est prioritaire).
  157. - Fonctionne dans le salon dédié et en mode mention.
  158. - En mode mention, le bot peut maintenant voir une image, celle du message cité.
  159. Améliorations
  160. - Le téléchargement et la préparation des images passent par une seule
  161. fonction, partagée entre le salon dédié et les messages cités.
  162. - Une image citée illisible ou trop lourde est simplement ignorée (avertissement
  163. dans bot.log) au lieu de bloquer la réponse.
  164. - La commande /reset est réservée aux modérateurs (permission « Gérer les
  165. messages ») et aux administrateurs du serveur.
  166. - Elle est masquée pour les autres membres et n'est plus disponible en
  167. messages privés.
  168. - Si un administrateur l'ouvre à tous dans les paramètres du serveur, le bot
  169. refuse quand même la commande (réponse visible uniquement par l'auteur) et
  170. note la tentative dans bot.log.
  171. Divers
  172. - discord.py 2.5 minimum est désormais requis (requirements.txt).
  173. - README : ajout de la fonctionnalité « Réponses ».
  174. - README : précision sur les droits nécessaires pour /reset.
  175. Version 5.0.0 — 27/10/2026
  176. --------------------------
  177. Nouveautés
  178. - Passage de Mistral à Claude (Anthropic) pour générer les réponses.
  179. - Réécriture complète du Bot.
  180. Migration depuis la version 4 (Mistral)
  181. - L'ancien conversation_history.json est converti automatiquement au premier
  182. lancement (les images sont remplacées par un marqueur texte).
  183. - Dans le .env : MISTRAL_API_KEY devient ANTHROPIC_API_KEY, et MISTRAL_MODEL
  184. devient CLAUDE_MODEL.
  185. - L'intent Discord « Presence » n'est plus nécessaire.