Build on the supported package contract
Use @absolutejs/meeting-discord through its supported public entry points.
@absolutejs/meeting-discordv0.0.1-beta.17betaVoice & MediaDiscord voice source adapter for @absolutejs/meeting — a bot joins a Discord voice channel and streams per-participant audio (speakers known, no diarization needed) into the meeting core for live transcription + analysis
bun add @absolutejs/meeting-discordThe hosted AbsoluteJS.ai platform uses createDiscordMeetingSourceFactory to bind the bot and guild configuration once. Each governed Meeting session supplies its voice channel id dynamically, so installation never logs in or joins a channel.
Discord voice source adapter for @absolutejs/meeting. A bot joins a Discord voice channel and streams each participant's audio into the meeting core, so the @absolutejs/voice scribe can transcribe the conversation live.
Discord gives one audio stream per user, so speakers are known exactly — each transcript turn is labelled with the real Discord user, no diarization needed.
@discordjs/voice exposes a per-user Opus stream for everyone speaking. This adapter subscribes to each, decodes Opus → PCM (48 kHz stereo) and downmixes to mono pcm_s16le, and emits it as audio tagged with the Discord user id.
Pass a pre-built, logged-in client instead of token to share one Discord client across features.
createDiscordMeetingSource(options) → MeetingSource.
start() logs in (if given a token), joins the voice channel, and
subscribes to each speaker.
stop() leaves the channel + destroys the client it created.
DISCORD_AUDIO_FORMAT — the mono 48 kHz pcm_s16le format it emits.
stereoToMono(buf) — the downmix helper (exported for reuse/testing).
Outcomes
Use @absolutejs/meeting-discord through its supported public entry points.
Hardening checklist
Follow in order
Working example for Usage.
import { createMeeting } from "@absolutejs/meeting";
import { createDiscordMeetingSource } from "@absolutejs/meeting-discord";
import { deepgram } from "@absolutejs/voice-deepgram";
const source = createDiscordMeetingSource({
token: process.env.DISCORD_BOT_TOKEN!,
guildId: "123…", // server id
channelId: "456…", // voice channel id
});
const meeting = await createMeeting({
source,
stt: deepgram({ apiKey: process.env.DEEPGRAM_API_KEY! }),
sessionId: crypto.randomUUID(),
});
meeting.on("turn", (turn) => console.log(turn.participant?.name, turn.text));
await meeting.start(); // bot joins the channel + starts listening
// …
await meeting.stop(); // bot leaves@discordjs/voice exposes a per-user Opus stream for everyone speaking. This adapter subscribes to each, decodes Opus → PCM (48 kHz stereo) and downmixes to mono pcm_s16le, and emits it as audio tagged with the Discord user id.
Discord voice channel ──(per-user Opus)──▶ adapter (decode + downmix) ──▶ @absolutejs/meeting ──▶ scribe ──▶ per-speaker turnsSupported entry points declared by this package manifest.
Package entry point declared in package.json.
Scripts declared by this package manifest.
Search the declarations exported by the current package type files. Expand a symbol to inspect its source-backed signature.