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 애플리케이션 생성
- Discord Developer Portal을 열고 New Application을 클릭합니다.
- Bot → Reset Token으로 이동하여 토큰을 복사합니다(최초 1회만 표시됨).
- Privileged Gateway Intents 아래에서 Message Content를 끔으로 유지합니다. Minara는 메시지를 전송하기만 하며 읽지 않습니다.
- 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=12345678901234567894. 테스트
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을 사용하세요.