Skip to main content

API Reference

createTranscript(channel, options?)

Grabs messages from a discord.js TextChannel and turns them into an HTML transcript.

Parameters:

  • channel - A discord.js TextChannel instance
  • options - CreateTranscriptOptions (optional, see Options)

Returns: Promise<TranscriptResult>

interface TranscriptResult {
html: string; // Full HTML document
buffer: Buffer; // Ready for discord.js file uploads
filename: string; // e.g. "transcript-general-2026-03-15.html"
messageCount: number;
}

Usage

import { createTranscript } from "@getoeteter/discord-transcripts";

// Basic
const result = await createTranscript(channel);

// With options
const result = await createTranscript(channel, {
limit: 1000,
theme: "dark",
enableSearch: true,
showUserStats: true,
});

// Send as file
await interaction.editReply({
files: [{ attachment: result.buffer, name: result.filename }],
});

generateTranscriptHtml(data, options?)

Takes raw transcript data and gives you back a complete HTML document. Doesn't need discord.js.

Parameters:

Returns: string (complete HTML document)

Usage

import {
generateTranscriptHtml,
type TranscriptData,
} from "@getoeteter/discord-transcripts";

const data: TranscriptData = {
channel: { id: "123", name: "general", type: 0 },
messages: [/* ... */],
roles: {},
channels: {},
memberRoles: {},
};

const html = generateTranscriptHtml(data, { theme: "dark" });

// Write to file
import { writeFileSync } from "fs";
writeFileSync("transcript.html", html);

Exports

Here's everything you can import:

// Functions
export { createTranscript } from "./lib/discord-adapter";
export { generateTranscriptHtml } from "./lib/generator";

// Types
export type {
TranscriptData,
TranscriptOptions,
CreateTranscriptOptions,
DiscordMessage,
DiscordUser,
DiscordEmbed,
DiscordAttachment,
DiscordComponent,
DiscordReaction,
DiscordThread,
DiscordSticker,
DiscordPoll,
DiscordPollAnswer,
DiscordPollMedia,
DiscordInteraction,
DiscordVoiceMessage,
// ...and more
};