CHANGELOG — Chatbot Discord
===========================


Version 5.3.0 — 29/10/2026
--------------------------

Nouveautés
- Accès à Internet (désactivé par défaut) : avec WEB_SEARCH=on dans le .env,
  le bot peut faire des recherches web et lire les liens partagés dans la
  conversation (outils web_search et web_fetch d'Anthropic).
  - Il ne cherche que si la question porte sur l'actualité ou une info qu'il
    ne connaît pas, et nomme sa source dans sa réponse (sans lien).
  - WEB_MAX_USES limite le nombre de recherches (et de pages lues) par message.
  - Seule la réponse finale est envoyée sur Discord, sans les commentaires
    écrits pendant les recherches.
  - Dans la mémoire, une mention indique au bot qu'il a réellement cherché,
    pour qu'il ne croie pas avoir inventé sa réponse au message suivant.
  - Avec la recherche activée, prévoir API_TIMEOUT=90.

Améliorations
- Cache de prompt : la personnalité, les outils et l'historique sont relus
  depuis le cache à 10 % du prix (pendant 5 minutes, prolongées à chaque
  message). Avec la recherche web activée, un message simple passe d'environ
  0,015 $ à 0,002 $.
- Le coût estimé dans les logs tient compte du cache (tokens lus et écrits)
  et des recherches web (PRICE_WEB_SEARCH_PER_1000).


Version 5.2.0 — 28/10/2026
--------------------------

Nouveautés
- Fichiers texte : le bot lit un fichier .txt joint au message et en tient
  compte dans sa réponse.
  - Un fichier .txt par message (en plus d'une éventuelle image), 100 Ko maximum.
  - Fonctionne dans le salon dédié et en mode mention.
  - Encodage UTF-8 ou Windows (Bloc-notes) reconnu automatiquement.
  - Dans la mémoire, seul le nom du fichier est conservé, pas son contenu
    (comme pour les images), pour ne pas faire grimper le coût des messages
    suivants.

- Personnalité perso : les fichiers *.local.txt sont exclus de GitHub
  (.gitignore). On peut y mettre une personnalité contenant des infos privées
  (ex. PERSONALITY_FILE=personality_prompt.local.txt dans le .env) ;
  personality_prompt.txt reste la personnalité par défaut publiée sur GitHub.

Améliorations
- Le bot n'utilise plus la fonction « Répondre » de Discord pour ses réponses :
  il écrit simplement à la suite dans le salon, comme un humain.
  - Les messages d'erreur (fichier non pris en charge, image en trop, etc.)
    restent en « Répondre », pour qu'on sache à qui ils s'adressent.


Version 5.1.0 — 27/10/2026
--------------------------

Nouveautés
- Réponses aux messages : quand on utilise « Répondre » sur un message, même
  ancien, le bot lit le message cité et en tient compte dans sa réponse.
  - Si le message cité vient du bot, il sait qu'il s'agit de sa propre réponse.
  - Le texte cité est limité à 500 caractères.
  - Si le message cité contient une image, elle est aussi envoyée à Claude,
    sauf si la réponse contient déjà sa propre image (celle-ci est prioritaire).
  - Fonctionne dans le salon dédié et en mode mention.
- En mode mention, le bot peut maintenant voir une image, celle du message cité.

Améliorations
- Le téléchargement et la préparation des images passent par une seule
  fonction, partagée entre le salon dédié et les messages cités.
- Une image citée illisible ou trop lourde est simplement ignorée (avertissement
  dans bot.log) au lieu de bloquer la réponse.
- La commande /reset est réservée aux modérateurs (permission « Gérer les
  messages ») et aux administrateurs du serveur.
  - Elle est masquée pour les autres membres et n'est plus disponible en
    messages privés.
  - Si un administrateur l'ouvre à tous dans les paramètres du serveur, le bot
    refuse quand même la commande (réponse visible uniquement par l'auteur) et
    note la tentative dans bot.log.

Divers
- discord.py 2.5 minimum est désormais requis (requirements.txt).
- README : ajout de la fonctionnalité « Réponses ».
- README : précision sur les droits nécessaires pour /reset.


Version 5.0.0 — 27/10/2026
--------------------------

Nouveautés
- Passage de Mistral à Claude (Anthropic) pour générer les réponses.
- Réécriture complète du Bot.

Migration depuis la version 4 (Mistral)
- L'ancien conversation_history.json est converti automatiquement au premier
  lancement (les images sont remplacées par un marqueur texte).
- Dans le .env : MISTRAL_API_KEY devient ANTHROPIC_API_KEY, et MISTRAL_MODEL
  devient CLAUDE_MODEL.
- L'intent Discord « Presence » n'est plus nécessaire.
