Guide & Référence API

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
Compatibilité Frameworks : Fonctionne de manière identique avec discord.py, disnake, pycord et nextcord sans adapter le code d'export.

2. Intégration dans un Bot Discord

Exemple d'une commande Slash simple pour exporter un salon en fichier HTML.

main.py
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.

export(channel, **kwargs)

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.

chat_export(channel, **kwargs)

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.

AttachmentToDataURIHandler
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.

Timezone Setup
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).