|
|
3 өдөр өмнө | |
|---|---|---|
| .github | 5 өдөр өмнө | |
| bot | 3 өдөр өмнө | |
| .dockerignore | 4 өдөр өмнө | |
| .env.exemple | 4 өдөр өмнө | |
| .gitignore | 4 өдөр өмнө | |
| Dockerfile | 5 өдөр өмнө | |
| README.md | 3 өдөр өмнө | |
| changelog.txt | 3 өдөр өмнө | |
| main.py | 5 өдөр өмнө | |
| personality_prompt.txt | 6 өдөр өмнө | |
| requirements.txt | 4 өдөр өмнө |
Bot Discord qui discute avec les membres du serveur grâce à Claude (Anthropic).
CHANNEL_ID, avec une mémoire des derniers échanges, sauvegardée entre deux redémarrages. Un message modifié ou supprimé sur Discord l'est aussi dans la mémoire..txt, .md, .csv, .json, .log, sous-titres, code…, un par message, 100 Ko maximum), dans le salon dédié et en mode mention. Seul le nom du fichier est gardé en mémoire, pas son contenu.PDF_MAX_PAGES, 0 pour refuser les PDF) et 20 Mo ; les PDF protégés par un mot de passe sont refusés. Chaque page coûte souvent plusieurs milliers de tokens. Seul le nom du fichier est gardé en mémoire.:hap:) ; le bot les remplace par l'emoji avant l'envoi. Les emojis animés sont compris (un bot n'a pas besoin de Nitro) ; seuls ceux réservés à des rôles que le bot n'a pas sont exclus. Un emoji ajouté ou retiré du serveur est pris en compte tout de suite : la personnalité dit seulement quand en mettre (par exemple « Tu termines chaque message par un seul emoji du serveur »), sans recopier la liste.PRESENCE_* du .env), le bot est absent la nuit, et il sait ce qu'il est en train de faire quand on lui parle. Absent, il ne répond qu'à son retour ; en « Ne pas déranger », au bout de 5 à 15 minutes. S'il change de statut en pleine conversation (message dans son salon depuis moins de 3 minutes), il prévient d'abord qu'il s'absente. Les messages reçus entre-temps reçoivent une réponse groupée dans le salon dédié, et une réponse à chaque mention ailleurs (gardés dans waiting_messages.json, même après un redémarrage). Les listes sont téléchargées au démarrage puis une fois par jour, et gardées dans presence_sources.json à côté de l'historique./reset : efface la mémoire du salon (réservé aux modérateurs et administrateurs).personality_prompt.txt, prise en compte sans redémarrer. Pour une personnalité perso, crée personality_prompt.local.txt et indique-le dans PERSONALITY_FILE du .env : les fichiers *.local.txt ne sont jamais envoyés sur GitHub.bot.log, avec le coût estimé de chaque appel.Il faut Python 3.10 ou plus récent.
Ouvre un terminal dans ce dossier et crée un environnement virtuel :
python -m venv .venv
Puis active-le : .venv\Scripts\activate sous Windows, source .venv/bin/activate sous macOS et Linux.
Installe les dépendances :
pip install -r requirements.txt
Copie .env.example en .env et remplis au minimum DISCORD_TOKEN, ANTHROPIC_API_KEY et CHANNEL_ID.
La clé Anthropic se crée sur la console : https://platform.claude.com (rubrique API Keys). L'API est facturée à l'usage, séparément de l'abonnement Claude Pro.
Dans le portail développeur Discord (https://discord.com/developers/applications), onglet Bot, vérifie que Message Content Intent est activé. L'intent « Presence » n'est plus nécessaire, tu peux le désactiver.
Lance le bot :
python main.py
Voir les salons, Envoyer des messages, Lire l'historique des messages. Rien d'autre n'est nécessaire : le bot utilise uniquement les emojis et stickers du serveur.
personality_prompt.txt : il fonctionne tel quel.conversation_history.json est converti automatiquement au premier lancement (les images sont remplacées par « [image jointe] »)..env, remplace MISTRAL_API_KEY par ANTHROPIC_API_KEY et MISTRAL_MODEL par CLAUDE_MODEL.MAX_IMAGE_SIZE doit être abaissé à 3750000 (limite de l'API d'Anthropic).main.py lancement et logs
bot/config.py lecture et validation du .env
bot/claude_client.py appels à l'API de Claude
bot/history.py mémoire des conversations
bot/discord_bot.py événements Discord, réactions, /reset
bot/emojis.py emojis du serveur : liste pour Claude, noms remplacés à l'envoi
bot/presence.py statut Discord : tirage au sort et changements
bot/presence_sources.py animes, musiques et jeux (AniList, Deezer, Steam)
bot/text_files.py lecture des fichiers texte joints (.txt, .md, code…)
bot/pdf_files.py vérification des PDF joints (pages, mot de passe)
bot/text_utils.py découpage des longues réponses