Skip to content

A simple Discord chat exporter for Python Discord bots.

License

Notifications You must be signed in to change notification settings

Alpha62579/DiscordChatExporterPy

 
 

Repository files navigation

DiscordChatExporterPy

version license language

DiscordChatExporterPy-but-Discord.Client is a fork of mahtoid's chat exporter (https://github.com/mahtoid/DiscordChatExporterPy). This is intended to work with discord.Client() rather than commands.Bot().

The following instructions are for mahtoid's repo, but it'll work for this too. (Don't forget to change the repo link to this repo.)

Installing

To install the library to your bot, run the command:

pip install chat-exporter

To install the repository, run the command:

git clone https://github.com/mahtoid/DiscordChatExporterPy

Usage

Basic Usage

import discord
import chat_exporter
from discord.ext import commands

intents = discord.Intents.default()
intents.members = True

bot = commands.Bot(command_prefix="!", intents=intents)


@bot.event
async def on_ready():
    print("Live: " + bot.user.name)
    chat_exporter.init_exporter(bot)


@bot.command()
async def save(ctx):
    await chat_exporter.quick_export(ctx)

if __name__ == "__main__":
    bot.run("BOT_TOKEN_HERE")

Optional: If you want the transcript to display Members (Role) Colours then enable the Members Intent.

Customisable Usage

import io

...

@bot.command()
async def save(ctx, limit: int, tz_info):
    transcript = await chat_exporter.export(ctx.channel, limit, tz_info)

    if transcript is None:
        return

     transcript_file = discord.File(io.BytesIO(transcript.encode()),
                                    filename=f"transcript-{ctx.channel.name}.html")

    await ctx.send(file=transcript_file)

Optional: limit and tz_info are both optional, but can be used to limit the amount of messages transcribed or set a 'local' (pytz) timezone for the bot to transcribe message times to.

Raw Usage

import io

...

@bot.command()
async def purge(ctx, tz_info):
    deleted_messages = await ctx.channel.purge()

    transcript = await chat_exporter.raw_export(ctx.channel, deleted_messages, tz_info)

    if transcript is None:
        return

     transcript_file = discord.File(io.BytesIO(transcript.encode()),
                                    filename=f"transcript-{ctx.channel.name}.html")

    await ctx.send(file=transcript_file)

Optional: tz_info is optional, but can be used to set a 'local' (pytz) timezone for the bot to transcribe message times to.

Screenshots

https://raw.githubusercontent.com/mahtoid/DiscordChatExporterPy/master/.screenshots/channel_output.png

https://raw.githubusercontent.com/mahtoid/DiscordChatExporterPy/master/.screenshots/html_output.png

Links

Attributions

This project borrows CSS and HTML code from Tyrrrz's C# DiscordChatExporter repository.

About

A simple Discord chat exporter for Python Discord bots.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 72.2%
  • HTML 27.8%