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_message의 channel 재정의를 사용하세요.

설정

1. Bot 애플리케이션 생성

  1. Discord Developer Portal을 열고 New Application을 클릭합니다.
  2. Bot → Reset 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회 편집으로 속도가 제한됩니다. DiscordGateway는 streamDefaultIntervalMs = 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을 사용하세요.

참조

목차