MINARA
Minara 사용하기클라이언트 및 인터페이스메시징 플랫폼

Discord

단일 채널 Bot 토큰 설정, 스트리밍 가능한 게이트웨이, 2,000자 제한, 커뮤니티 서버에 적합합니다.

🟢 런타임 준비 완료 : 게이트웨이는 메시지 편집 엔드포인트를 통한 스트리밍 편집을 지원합니다 (아직 실제 호출자가 연결하지 않았습니다. 아래 내용을 참조하세요). Bot 모드 전용이며, Discord 웹훅은 라이브 스트리밍에 필요한 편집 API를 제공하지 않습니다.

제공 기능

  • 스트리밍 편집, PATCH /channels/{channel}/messages/{id} 경유 (채널당 5초에 5회 편집 속도 제한을 준수하기 위해 1초 단위로 스로틀링). createStreamSink가 구동하며, send_message 자체는 단발성(one-shot)입니다.
  • 첨부 파일, payload_json + files[n] 파트로 구성된 단일 멀티파트 POST /channels/{cid}/messages 엔드포인트를 통해 이미지, 파일, 오디오를 전송합니다. 음성 첨부 파일은 플레이어가 포함된 오디오 파일로 표시됩니다(파형이 있는 네이티브 음성 메시지 UI는 후속 작업으로 예정).
  • 메시지당 2,000자 제한, send_message는 도구 경계에서 더 긴 텍스트를 거부하며, 스트림 싱크는 스트리밍 중간에 … (truncated) 마커와 함께 잘라냅니다.
  • 게이트웨이당 단일 채널, 여러 채널에 게시하려면 send_messagechannel 재정의를 사용하세요.

설정

1. Bot 애플리케이션 생성

  1. Discord Developer Portal을 열고 New Application을 클릭합니다.
  2. BotReset Token으로 이동하여 토큰을 복사합니다(최초 1회만 표시됨).
  3. Privileged Gateway Intents 아래에서 Message Content으로 유지합니다. Minara는 메시지를 전송하기만 하며 읽지 않습니다.
  4. OAuth2 → URL Generator에서 Bot의 설치 URL을 복사합니다. Scopes에서 bot을, Bot Permissions에서 Send Messages를 체크한 뒤, URL을 브라우저에 붙여넣어 Bot을 서버에 추가합니다.

2. 대상 채널 ID 확인

Discord 클라이언트에서 사용자 설정 → 고급 → 개발자 모드 = ON으로 설정한 뒤, 채널을 우클릭하고 채널 ID 복사를 선택합니다. 1234567890123456789와 같은 형식의 숫자형 스노우플레이크입니다.

3. Minara 설정

간편 방법:

"채널 1234567890에 Discord 알림을 설정해줘"

수동 방법:

minara auth messaging add discord

또는 프로젝트 루트의 .env 파일에 직접 입력합니다.

DISCORD_BOT_TOKEN=<bot token>
DISCORD_CHANNEL_ID=1234567890123456789

4. 테스트

minara auth messaging test discord

스트리밍 동작

Discord의 메시지 편집 엔드포인트는 채널당 5초에 5회 편집으로 속도가 제한됩니다. DiscordGatewaystreamDefaultIntervalMs = 1000을 공시하므로, createStreamSink는 처음 5초 동안 최대 약 5회 편집을 실행한 뒤 1Hz로 계속됩니다. 호출자는 createStreamSink(gw, msg, { intervalMs: 1500 })를 통해 스로틀을 넓힐 수 있습니다. 이는 호출자 측 옵션이며 send_message 도구 인수가 아닙니다. 스트리밍 자체는 배선 준비가 완료되었으나 아직 어떤 프로덕션 코드 경로에서도 호출되지 않습니다.

2,000자를 초과하는 응답은 분할되지 않고 잘립니다. Discord는 각 chat.postMessage를 원자적으로 처리하며, 스트리밍 중간에 분할하면 편집 체인을 읽기 어렵기 때문입니다.

채널 재정의

send_message({
  provider: "discord",
  channel: "9876543210987654321",
  text: "Critical: position liquidation imminent",
})

문제 해결

"Missing Access (50001)"

  • Bot이 서버 멤버가 아니거나 채널을 볼 권한이 없습니다. OAuth 설치 URL과 채널의 역할 권한을 다시 확인하세요.

"Missing Permissions (50013)"

  • Bot이 서버에 있지만 해당 채널에서 Send Messages 또는 Embed Links 권한이 없습니다. 채널 권한을 편집하여 Bot의 역할에 Send Messages를 부여하세요.

"Cannot send empty message (50006)"

  • 콘텐츠 검수 과정에서 메시지 본문이 제거되었습니다. Discord는 마크업처럼 보이는 일부 일반 텍스트 패턴을 차단합니다. 구두점을 약간 바꾸어 같은 메시지를 다시 시도해보세요.

"스트리밍이 끊기는 느낌"

  • 기본 스로틀은 1,000ms입니다. Discord의 5/5 속도 제한이 상한선이므로, 일시적인 429 오류 위험 없이는 더 빠르게 할 수 없습니다. 현재 주기를 수용하거나 라이브 스트리밍에는 Telegram을 사용하세요.

참조

목차