Documentation Officielle
Tout ce dont vous avez besoin pour intégrer et configurer DiscordTranscript dans votre bot Python.
1. Installation & Prérequis
Requis : Python 3.10 ou supérieur.
DiscordTranscript s'installe directement via PyPI et ne possède aucune dépendance binaire lourde.
pip install DiscordTranscript
2. Intégration dans un Bot Discord
Exemple d'une commande Slash simple pour exporter un salon en fichier HTML.
import discord
from discord.ext import commands
from DiscordTranscript import export
bot = commands.Bot(command_prefix="!", intents=discord.Intents.default())
@bot.tree.command(name="transcript", description="Exporte le salon actuel en transcript HTML")
async def transcript_command(interaction: discord.Interaction):
await interaction.response.defer(thinking=True)
# Génère le transcript sous forme de fichier discord.File
transcript_file = await export(interaction.channel)
# Envoie le fichier HTML autonome dans le salon
await interaction.followup.send(
content="📄 Voici l'archive HTML du salon :",
file=transcript_file
)
bot.run("VOTRE_TOKEN_BOT")
3. Méthodes d'Exportation (`export` vs `chat_export`)
Choisissez la méthode adaptée à votre cas d'usage.
Fichier discord.File prêt à envoyer
Lit l'historique d'un salon et renvoie directement un objet discord.File contenant le code HTML généré. Idéal pour répondre à une commande bot.
Export Personnalisé / Stream
Offre un contrôle bas niveau sur la génération du transcript ou l'export à partir d'une liste personnalisée de messages.
4. Pièces Jointes & Handlers (DataURI & Compression)
Rendez vos fichiers 100% autonomes ou réduisez la consommation réseau.
Par défaut, Discord utilise des URLs temporaires CDN pour les images. Grâce aux Handlers intégrés, vous pouvez convertir et héberger les pièces jointes directement dans le HTML.
from DiscordTranscript import export, AttachmentToDataURIHandler
# Convertit toutes les pièces jointes/images en Base64 (DataURI)
# Le fichier HTML fonctionne même sans accès Internet ou si le salon est supprimé !
transcript_file = await export(
interaction.channel,
attachment_handler=AttachmentToDataURIHandler()
)
5. Fuseaux Horaires & Formatage (pytz)
Ajustez l'affichage de l'heure des messages selon votre région.
from DiscordTranscript import export
# Définissez votre fuseau horaire préféré (ex: Europe/Paris, America/New_York)
transcript_file = await export(
interaction.channel,
timezone="Europe/Paris",
date_format="%d/%m/%Y %H:%M"
)
6. Optimisation & Limites de Taille Discord (8MB / 25MB)
Évitez l'erreur de dépassement de taille lors de l'envoi du fichier HTML sur Discord.
-
Minification automatique des assets : Les fichiers HTML générés excluent le CSS superflu et optimisent le DOM pour une empreinte ultra-réduite (~100 Ko pour 1000 messages texte).
-
Gestion du DataURI sur salons volumineux : Si le salon contient des centaines d'images, le mode DataURI peut générer un fichier de plusieurs dizaines de mégaoctets. Dans ce cas, privilégiez le mode par défaut ou
AttachmentToProxyURLHandler.
7. Référence des Arguments de `export()`
Tableau récapitulatif des paramètres acceptés par la fonction principale d'export.
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
| channel | TextChannel | Obligatoire | Le salon Discord à exporter. |
| limit | int | None | None | Nombre maximum de messages à inclure (None = tout le salon). |
| tz | str | pytz.timezone | "UTC" | Fuseau horaire pour le rendu des dates. |
| attachment_handler | BaseHandler | None | Handler de conversion des pièces jointes (ex: AttachmentToDataURIHandler). |