Recursos

Transcript

Nosso sistema de transcrição automática.

Gere lindas transcrições HTML de canais de texto do Discord usando Discord.js.

Leve, personalizável e fácil de usar.


Recursos

  • Gera transcrições HTML completas com interface no estilo Discord
  • Suporte a localidade (locale) e fuso horário
  • Suporte a templates Mustache personalizados
  • Busca rápida de mensagens com agrupamento de mensagens
  • Incorporação de mídia — armazena imagens e vídeos em base64 para arquivos HTML sem dependência de CDN
  • Feito para Discord.js
  • Suporte a TypeScript

Instalação

npm install @kazami-devs/transcripts

Uso Básico

const { createTranscript } = require('@kazami-devs/transcripts')
const { AttachmentBuilder } = require('discord.js')

const transcript = await createTranscript(channel)

const attachment = new AttachmentBuilder(
  Buffer.from(transcript.html, 'utf-8'),
  { name: transcript.fileName }
)

await interaction.reply({
  content: 'Transcrição criada com sucesso!',
  files: [attachment],
})

Uso Avançado

const transcript = await createTranscript(channel, {
  guildName: interaction.guild.name,
  locale: 'pt-BR',
  timezone: 'America/Sao_Paulo',
  limit: -1, // busca todas as mensagens
  embedMedia: true, // incorpora imagens em base64 (HTML autocontido)
})

Opções

OpçãoTipoPadrãoDescrição
limitnumber100Número de mensagens a buscar (-1 = todas)
guildNamestringNome do servidor exibido na transcrição
localestringen-USLocalidade usada na formatação de datas
timezonestringUTCFuso horário para os timestamps
returnTypestring"string"Tipo de retorno: "string" ou "buffer"
embedMediabooleanfalseIncorpora imagens e vídeos como data URIs em base64 (HTML autocontido)
embedTypesstring[]["image","video"]Tipos de mídia a incorporar: "image", "video", ou ambos. Usado apenas quando embedMedia é true
maxFileSizenumber26214400Tamanho máximo do arquivo HTML em bytes (25 MB). Usado apenas quando embedMedia é true

Valor de Retorno

{
  fileName: string
  html: string | Buffer
}

Incorporação de Mídia

Quando embedMedia: true está habilitado, a biblioteca irá:

  1. Buscar cada anexo de mídia no CDN do Discord
  2. Convertê-lo em um data URI base64
  3. Incorporá-lo diretamente no arquivo HTML

Isso torna o arquivo HTML autocontido — ele não depende de URLs do CDN do Discord, que expiram.

Tipos de Mídia Suportados

TipoExtensõesLimite por Arquivo
Imagenspng, jpg, gif, webp, bmp, svg, avif30% do orçamento
Vídeosmp4, webm, mov, mkv, avi, m4v15% do orçamento

Limites de Tamanho

O Discord tem um limite de upload de arquivo de 25 MB. O algoritmo de incorporação usa uma margem de segurança de 80% (alvo de 20 MB) para garantir que o HTML final possa ser enviado por qualquer usuário.

  • Incorporado: Mídia que cabe dentro do orçamento por arquivo e total
  • Ignorado (Skipped): Arquivos que excederiam os limites permanecem como links do CDN
  • Fallback gracioso: Se um arquivo não puder ser buscado, ele permanece como link do CDN
// Incorpora toda a mídia, respeitando o limite de 25 MB do Discord
const transcript = await createTranscript(channel, {
  embedMedia: true,
  maxFileSize: 25 * 1024 * 1024, // opcional, padrão de 25 MB
})

// Incorpora apenas imagens (ignora vídeos)
const transcript = await createTranscript(channel, {
  embedMedia: true,
  embedTypes: ['image'],
})

// Incorpora apenas vídeos (ignora imagens)
const transcript = await createTranscript(channel, {
  embedMedia: true,
  embedTypes: ['video'],
})

Dependências de Pares (Peer Dependencies)

discord.js ^14.0.0

Nesta página