changelog.txt 11 KB

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