Skip to content

🚀 This new wiki is in beta! Please double-check for any issue and report them on the GitHub

TranSkript

TranSkript is a powerful module that generates Discord-like website transcripts of conversations. You can recreate and save conversations forever, including replies, attachments, colors, references, embeds, reactions, and much more!

  • Java 16 or higher
  • DiSky v4.21.0 or higher

TranSkript captures nearly every aspect of Discord messages:

  • Text Content: Formatted text with bold, italic, and other Discord markdown
  • Code: Code blocks and inline code snippets
  • Formatting: Spoilers and quote blocks
  • Media: Attachments and embedded images
  • Embeds: Complete embed structures
  • Reactions: Reaction emojis with their counts
  • References: Referenced/replied-to messages
  • Commands: Slash command invocations
  • User Types: Webhook and bot messages
  • Components: Buttons and other interactive elements

Simple discussion featuring mentions, role colors, and a bot

Simple discussion, featuring mentions, role’s colors, and a bot.

Several links and their rendering

Several links and their rendering.

Threads and post creation

Threads/post creation.

Message replies

Replies.

Button components

Buttons.

  1. Get Patreon Access

    Subscribe to ItsTheSky’s Patreon to access premium modules.

  2. Download TranSkript

    Download the latest version from the Patreon resources page.

  3. Verify Requirements

    Ensure you’re running Java 16+ and DiSky v4.21.0+.

  4. Install the Module

    Place the JAR file in your plugins/DiSky/modules/ directory.

  5. Restart Your Server

    Restart your server to load the module.

TranSkript provides one main effect that can be used in two different contexts:

Generate a transcript of the last 100 messages (Discord’s maximum) from a channel:

# Generate transcript from a channel
set {_channel} to event-channel # can be any messaging channel, including DMs
generate transcript from channel {_channel} and store it in "plugins/transcripts/chat.html"

If you have a specific list of messages you want to include:

# Generate transcript from specific messages
set {_messages::*} to ... # your message list
generate transcript from messages {_messages::*} and store it in "plugins/transcripts/conversation.html"

TranSkript uses Discord’s default “airy” theme and dark mode by default. You can customize the appearance by enabling compact mode and/or light theme.

# Compact mode only
set {_opts} to new transcript options with compact mode
# Light theme only
set {_opts} to new transcript options with light theme
# Both compact mode and light theme
set {_opts} to new transcript options with compact mode and light theme

Use the options when generating transcripts:

# Create custom options
set {_opts} to new transcript options with compact mode and light theme
# Generate transcript with custom options
generate transcript from channel {_channel} with {_opts} and store it in "plugins/transcripts/chat.html"

Create a transcript when a support ticket is closed:

# When a ticket is closed
discord command close:
prefixes: !
trigger:
# Check if this is a ticket channel
if {ticket::%discord id of event-channel%} is not set:
reply with "This is not a ticket channel!"
stop
# Generate transcript
set {_opts} to new transcript options with light theme
generate transcript from channel event-channel with {_opts} and store it in "plugins/transcripts/ticket-%discord id of event-channel%.html"
# Send confirmation
reply with "Ticket transcript saved! Closing channel in 5 seconds..."
# Wait and close
wait 5 seconds
delete event-channel

Save transcripts of channels before deletion:

# Before deleting a channel
on channel delete:
# Generate a transcript for record-keeping
generate transcript from channel event-channel and store it in "plugins/transcripts/deleted-%discord id of event-channel%-%now%.html"
# Log the deletion
send "Channel transcript saved before deletion" to console

Archive important conversations for future reference:

discord command archive:
prefixes: !
roles: Moderator
trigger:
# Generate transcript
set {_timestamp} to now
set {_filename} to "plugins/transcripts/%discord id of event-channel%-%{_timestamp}%.html"
generate transcript from channel event-channel and store it in {_filename}
# Upload the transcript file
reply with file {_filename} with message "Here's the conversation archive!"

Export a custom range of messages:

discord command export <integer> [<integer>]:
prefixes: !
trigger:
# arg-1 is the number of messages or start ID
# arg-2 (optional) is the end ID
set {_limit} to arg-1
if {_limit} is greater than 100:
reply with "Can only export up to 100 messages at a time!"
stop
# Retrieve messages from the channel
set {_messages::*} to last {_limit} messages from event-channel
# Generate transcript
set {_opts} to new transcript options with compact mode
generate transcript from messages {_messages::*} with {_opts} and store it in "plugins/transcripts/export-%now%.html"
reply with file "plugins/transcripts/export-%now%.html" with message "Export complete!"

Use TranSkript with DiSky’s message events:

# Archive conversations when specific keywords are mentioned
on message received:
if message contains "!archive":
# Check permissions
if event-member has permission administrator:
# Generate and upload transcript
generate transcript from channel event-channel and store it in "plugins/temp/archive.html"
send file "plugins/temp/archive.html" to event-channel

Create automatic daily archives:

# Daily archive at midnight
every day at 00:00:
loop all text channels tagged with "archive":
set {_channel} to loop-value
set {_date} to now
set {_filename} to "plugins/archives/%discord id of {_channel}%-%{_date}%.html"
generate transcript from channel {_channel} and store it in {_filename}

The default dark theme matches Discord’s dark mode appearance, providing a familiar experience for users who prefer dark themes.

# Default dark theme
generate transcript from channel {_channel} and store it in "dark-theme.html"

Enable light theme for a brighter appearance:

# Light theme
set {_opts} to new transcript options with light theme
generate transcript from channel {_channel} with {_opts} and store it in "light-theme.html"

Compact mode reduces spacing for a more condensed view:

# Compact mode
set {_opts} to new transcript options with compact mode
generate transcript from channel {_channel} with {_opts} and store it in "compact.html"

Create an organized folder structure:

# Organize by date and channel
set {_date} to now formatted as "yyyy-MM-dd"
set {_channel-name} to name of event-channel
set {_folder} to "plugins/transcripts/%{_date}%/"
# Ensure folder exists
create directories {_folder}
# Generate transcript with organized path
set {_file} to "%{_folder}%%{_channel-name}%.html"
generate transcript from channel event-channel and store it in {_file}

Implement automatic cleanup of old transcripts:

# Clean transcripts older than 30 days
every day at 03:00:
loop files in "plugins/transcripts/":
if modification date of loop-file was more than 30 days ago:
delete loop-file

Java Version

  • TranSkript requires Java 16 or higher
  • Check your Java version with /version in console

DiSky Version

  • Ensure you’re running DiSky v4.21.0 or higher
  • Update DiSky if necessary

File Permissions

  • Verify that your server has write permissions to the target directory
  • Check that the plugins/transcripts folder exists

Missing Messages

  • Remember that only the last 100 messages can be retrieved from a channel
  • For specific ranges, store messages as they arrive

Ensure the target directory exists:

# Create directory before saving
on load:
create directories "plugins/transcripts/"

For channels with many embeds or attachments:

  1. Regular Archives: Archive important channels regularly to maintain conversation history
  2. Storage Management: Implement cleanup routines to prevent excessive disk usage
  3. Permissions: Only allow trusted users to generate transcripts
  4. File Naming: Use descriptive, timestamped filenames for easy organization
  5. Theme Selection: Choose themes that match your users’ preferences or your brand
# For performance, limit the number of messages
if arg-1 is greater than 50:
reply with "Please request fewer than 50 messages for optimal performance."
stop
set {_messages::*} to last arg-1 messages from event-channel
generate transcript from messages {_messages::*} and store it in "transcript.html"

Consider offloading transcript generation:

# Inform user that generation may take time
reply with "Generating transcript... This may take a moment."
# Generate transcript
generate transcript from channel event-channel and store it in {_file}
# Notify completion
send file {_file} to event-user with message "Transcript ready!"
EffectDescription
generate transcript from channel %channel% [with %-transcriptoptions%] and store it in %string%Generate transcript from a channel’s recent messages
generate transcript from messages %messages% [with %-transcriptoptions%] and store it in %string%Generate transcript from specific messages
ExpressionReturn TypeDescription
new transcript options with compact modeTranscriptOptionsCreate options with compact mode enabled
new transcript options with light themeTranscriptOptionsCreate options with light theme
new transcript options with compact mode and light themeTranscriptOptionsCreate options with both compact mode and light theme

Need help with TranSkript? Get support: