Discord (Bot API)
상태: 공식 Discord 봇 게이트웨이를 통해 다이렉트 메시지와 길드 텍스트 채널을 지원할 준비가 되어 있습니다.빠른 설정 (초보자)
- Discord 봇을 생성하고 봇 토큰을 복사합니다.
- Discord 앱 설정에서 Message Content Intent 를 활성화합니다 (허용 목록 또는 이름 조회를 사용할 계획이라면 Server Members Intent 도 함께 활성화합니다).
- OpenClaw 에 토큰을 설정합니다:
- 환경 변수:
DISCORD_BOT_TOKEN=... - 또는 설정:
channels.discord.token: "...". - 둘 다 설정된 경우 설정이 우선합니다 (환경 변수 폴백은 기본 계정 전용입니다).
- 환경 변수:
- 메시지 권한과 함께 봇을 서버에 초대합니다 (다이렉트 메시지만 원한다면 개인 서버를 생성합니다).
- Gateway(게이트웨이) 를 시작합니다.
- 첫 접촉 시 페어링 코드를 승인합니다.
목표
- Discord 다이렉트 메시지 또는 길드 채널을 통해 OpenClaw 와 대화합니다.
- 다이렉트 채팅은 에이전트의 메인 세션으로 병합됩니다 (기본값
agent:main:main). 길드 채널은agent:<agentId>:discord:channel:<channelId>로 격리되며 (표시 이름은discord:<guildSlug>#<channelSlug>사용). - 그룹 다이렉트 메시지는 기본적으로 무시됩니다.
channels.discord.dm.groupEnabled로 활성화하고, 선택적으로channels.discord.dm.groupChannels로 제한할 수 있습니다. - 라우팅을 결정론적으로 유지합니다. 응답은 항상 수신된 채널로 되돌아갑니다.
동작 방식
- Discord 애플리케이션 → Bot 을 생성하고 필요한 인텐트 (DM + 길드 메시지 + 메시지 콘텐츠) 를 활성화한 뒤 봇 토큰을 가져옵니다.
- 사용하려는 위치에서 메시지를 읽고/보낼 수 있도록 필요한 권한과 함께 봇을 서버에 초대합니다.
- OpenClaw 를
channels.discord.token으로 설정합니다 (또는 폴백으로DISCORD_BOT_TOKEN). - Gateway(게이트웨이) 를 실행합니다. 토큰이 사용 가능하고 (설정 우선, 환경 변수 폴백)
channels.discord.enabled가false이 아닐 경우 Discord 채널이 자동으로 시작됩니다.- 환경 변수를 선호한다면
DISCORD_BOT_TOKEN을 설정합니다 (설정 블록은 선택 사항입니다).
- 환경 변수를 선호한다면
- 다이렉트 채팅: 전달 시
user:<id>(또는<@id>멘션) 을 사용합니다. 모든 턴은 공유된main세션으로 들어갑니다. Bare numeric IDs are ambiguous and rejected. - 길드 채널: 전달에
channel:<channelId>을 사용합니다. 기본적으로 멘션이 필요하며, 길드 또는 채널별로 설정할 수 있습니다. - 다이렉트 채팅: 기본적으로
channels.discord.dm.policy로 보안이 적용됩니다 (기본값:"pairing"). 알 수 없는 발신자는 페어링 코드를 받습니다 (1 시간 후 만료).openclaw pairing approve discord <code>로 승인합니다.- 이전의 ‘누구나 허용’ 동작을 유지하려면
channels.discord.dm.policy="open"와channels.discord.dm.allowFrom=["*"]을 설정합니다. - 강제 허용 목록을 사용하려면
channels.discord.dm.policy="allowlist"을 설정하고channels.discord.dm.allowFrom에 발신자를 나열합니다. - 모든 다이렉트 메시지를 무시하려면
channels.discord.dm.enabled=false또는channels.discord.dm.policy="disabled"을 설정합니다.
- 이전의 ‘누구나 허용’ 동작을 유지하려면
- 그룹 다이렉트 메시지는 기본적으로 무시됩니다.
channels.discord.dm.groupEnabled로 활성화하고, 선택적으로channels.discord.dm.groupChannels로 제한할 수 있습니다. - 선택적 길드 규칙: 길드 id (권장) 또는 슬러그를 키로 하는
channels.discord.guilds을 설정하고 채널별 규칙을 지정합니다. - 선택적 네이티브 명령어:
commands.native는 기본값이"auto"입니다 (Discord/Telegram 는 켜짐, Slack 은 꺼짐).channels.discord.commands.native: true|false|"auto"으로 재정의할 수 있으며,false은 이전에 등록된 명령을 제거합니다. 텍스트 명령은commands.text로 제어되며 단독/...메시지로 전송되어야 합니다. 명령에 대한 접근 그룹 검사를 우회하려면commands.useAccessGroups: false을 사용합니다.- 전체 명령 목록 및 설정: 슬래시 명령어
- 선택적 길드 컨텍스트 히스토리: 멘션에 응답할 때 마지막 N 개의 길드 메시지를 컨텍스트로 포함하려면
channels.discord.historyLimit(기본값 20,messages.groupChat.historyLimit로 폴백) 을 설정합니다. 비활성화하려면0을 설정합니다. - 반응: 에이전트는
discord도구를 통해 반응을 트리거할 수 있습니다 (channels.discord.actions.*로 제어).- 반응 제거 의미론: /tools/reactions 를 참고하십시오.
discord도구는 현재 채널이 Discord 인 경우에만 노출됩니다.
- 네이티브 명령은 공유된
main세션이 아니라 격리된 세션 키 (agent:<agentId>:discord:slash:<userId>) 를 사용합니다.
<@id> 멘션을 사용하십시오.
참고: 슬러그는 소문자이며 공백은 - 로 대체됩니다. 채널 이름은 선행 # 없이 슬러그화됩니다.
참고: 길드 컨텍스트의 [from:] 줄에는 핑 가능한 응답을 쉽게 만들기 위해 author.tag + id 가 포함됩니다.
설정 쓰기
기본적으로 Discord 는/config set|unset 에 의해 트리거되는 설정 업데이트를 작성할 수 있습니다 (commands.config: true 필요).
다음으로 비활성화합니다:
How to create your own bot
이는#help 와 같은 서버 (길드) 채널에서 OpenClaw 를 실행하기 위한 “Discord Developer Portal” 설정입니다.
1. Discord 앱 + 봇 사용자 생성
- Discord Developer Portal → Applications → New Application
- In your app:
- Bot → Add Bot
- Bot Token 을 복사합니다 (이를
DISCORD_BOT_TOKEN에 입력합니다)
2) OpenClaw 에 필요한 게이트웨이 인텐트 활성화
Discord 는 명시적으로 활성화하지 않으면 “권한 인텐트” 를 차단합니다. Bot → Privileged Gateway Intents 에서 다음을 활성화합니다:- Message Content Intent (대부분의 길드에서 메시지 텍스트를 읽는 데 필요하며, 없으면 “Used disallowed intents” 가 표시되거나 봇이 연결되지만 메시지에 반응하지 않습니다)
- Server Members Intent (권장; 길드에서 일부 멤버/사용자 조회 및 허용 목록 매칭에 필요)
setPresence 액션) 은 게이트웨이 OP3 를 사용하며 이 인텐트가 필요하지 않습니다. 다른 길드 멤버의 프레즌스 업데이트를 수신하려는 경우에만 필요합니다.
3. 초대 URL 생성 (OAuth2 URL Generator)
앱에서: OAuth2 → URL Generator Scopes- ✅
bot - ✅
applications.commands(네이티브 명령에 필요)
- ✅ 채널 보기
- ✅ 메시지 보내기
- ✅ 메시지 기록 읽기
- ✅ 링크 임베드
- ✅ 파일 첨부
- ✅ 반응 추가 (선택 사항이지만 권장)
- ✅ 외부 이모지 / 스티커 사용 (선택 사항; 필요할 경우에만)
4. id 가져오기 (길드/사용자/채널)
Discord 는 모든 곳에서 숫자 id 를 사용하며 OpenClaw 설정은 id 를 선호합니다.- Discord (데스크톱/웹) → User Settings → Advanced → Developer Mode 활성화
- 우클릭:
- 서버 이름 → Copy Server ID (길드 id)
- 채널 (예:
#help) → Copy Channel ID - 사용자 → Copy User ID
5) OpenClaw 설정
토큰
Set the bot token via env var (recommended on servers):DISCORD_BOT_TOKEN=...
name 를 사용하여 channels.discord.accounts 를 설정합니다. 공통 패턴은 gateway/configuration 를 참고하십시오.
허용 목록 + 채널 라우팅
예시 “단일 서버, 나만 허용, #help 만 허용”:requireMention: true은 멘션된 경우에만 봇이 응답함을 의미합니다 (공유 채널에 권장).agents.list[].groupChat.mentionPatterns(또는messages.groupChat.mentionPatterns) 도 길드 메시지에서 멘션으로 간주됩니다.- 다중 에이전트 재정의:
agents.list[].groupChat.mentionPatterns에 에이전트별 패턴을 설정합니다. channels이 존재하면 나열되지 않은 모든 채널은 기본적으로 거부됩니다.- 모든 채널에 기본값을 적용하려면
"*"채널 항목을 사용합니다. 명시적 채널 항목이 와일드카드를 재정의합니다. - 스레드는 부모 채널 설정 (허용 목록,
requireMention, skills, 프롬프트 등) 을 상속합니다. 스레드 채널 id 를 명시적으로 추가하지 않는 한 동일합니다. - 소유자 힌트: 길드별 또는 채널별
users허용 목록이 발신자와 일치하면 OpenClaw 는 시스템 프롬프트에서 해당 발신자를 소유자로 취급합니다. 채널 전역 소유자를 지정하려면commands.ownerAllowFrom를 설정합니다. - 봇이 작성한 메시지는 기본적으로 무시됩니다. 허용하려면
channels.discord.allowBots=true을 설정합니다 (자신의 메시지는 계속 필터링됩니다). - 경고: 다른 봇에 대한 응답을 허용하는 경우 (
channels.discord.allowBots=true),requireMention,channels.discord.guilds.*.channels.<id>.users허용 목록 및/또는AGENTS.md과SOUL.md의 가드레일을 사용하여 봇 간 응답 루프를 방지하십시오.
6. 동작 확인
- Gateway(게이트웨이) 를 시작합니다.
- 서버 채널에서
@Krill hello를 전송합니다 (또는 봇 이름). - 아무 반응이 없으면 아래 문제 해결 을 확인하십시오.
문제 해결
- 먼저
openclaw doctor과openclaw channels status --probe를 실행합니다 (조치 가능한 경고 + 빠른 감사). - “Used disallowed intents”: Developer Portal 에서 Message Content Intent (그리고 대개 Server Members Intent) 를 활성화한 뒤 Gateway(게이트웨이) 를 재시작하십시오.
- 봇이 연결되지만 길드 채널에서 응답하지 않음:
- Message Content Intent 누락, 또는
- 봇에 채널 권한 (보기/전송/기록 읽기) 이 없음, 또는
- Your config requires mentions and you didn’t mention it, or
- 길드/채널 허용 목록이 채널/사용자를 거부함.
requireMention: false이지만 여전히 응답 없음:groupPolicy: 길드 채널 처리 제어 (open|disabled|allowlist).allowlist는 채널 허용 목록이 필요합니다.DISCORD_BOT_TOKEN만 설정하고channels.discord섹션을 생성하지 않으면, 런타임은groupPolicy를open로 기본 설정합니다. 이를 잠그려면channels.discord.groupPolicy,channels.defaults.groupPolicy또는 길드/채널 허용 목록을 추가하십시오.
requireMention은channels.discord.guilds아래 (또는 특정 채널 아래) 에 있어야 합니다. 최상위의channels.discord.requireMention은 무시됩니다.- 권한 감사 (
channels status --probe) 는 숫자 채널 ID 만 검사합니다. 슬러그/이름을channels.discord.guilds.*.channels키로 사용하면 감사에서 권한을 검증할 수 없습니다. - 다이렉트 메시지가 동작하지 않음:
channels.discord.dm.enabled=false,channels.discord.dm.policy="disabled", 또는 아직 승인되지 않았습니다 (channels.discord.dm.policy="pairing"). - Discord 에서 exec 승인: Discord 는 다이렉트 메시지에서 exec 승인을 위한 버튼 UI 를 지원합니다 (한 번 허용 / 항상 허용 / 거부).
/approve <id> ...는 전달된 승인에만 해당하며 Discord 의 버튼 프롬프트를 해결하지 못합니다.❌ Failed to submit approval: Error: unknown approval id가 보이거나 UI 가 표시되지 않으면 다음을 확인하십시오:
기능 및 제한
- 다이렉트 메시지와 길드 텍스트 채널 (스레드는 별도 채널로 취급되며 음성은 지원되지 않음).
- 입력 중 표시기는 최선 노력으로 전송됩니다. 메시지 분할은
channels.discord.textChunkLimit(기본값 2000) 을 사용하며, 긴 응답은 줄 수 기준으로 분할됩니다 (channels.discord.maxLinesPerMessage, 기본값 17). - 선택적 줄바꿈 분할: 길이 분할 전에 빈 줄 (문단 경계) 기준으로 분할하려면
channels.discord.chunkMode="newline"을 설정합니다. - 파일 업로드는 설정된
channels.discord.mediaMaxMb까지 지원됩니다 (기본값 8 MB). - 기본적으로 멘션 기반 길드 응답을 사용하여 소음이 많은 봇을 방지합니다.
- 메시지가 다른 메시지를 참조하면 응답 컨텍스트가 주입됩니다 (인용된 콘텐츠 + id).
- 네이티브 답글 스레딩은 기본적으로 꺼져 있음.
channels.discord.replyToMode와 답글 태그로 활성화합니다.
재시도 정책
외부 Discord API 호출은 레이트 리밋 (429) 발생 시 Discordretry_after 가 사용 가능하면 이를 사용하여 지수 백오프와 지터로 재시도합니다. channels.discord.retry 로 설정합니다. 자세한 내용은 재시도 정책 을 참고하십시오.
설정
messages.ackReaction +
messages.ackReactionScope 으로 제어됩니다. 봇이 응답한 후
ack 반응을 제거하려면 messages.removeAckAfterReply 을 사용합니다.
dm.enabled: 모든 다이렉트 메시지를 무시하려면false로 설정합니다 (기본값true).dm.policy: 다이렉트 메시지 접근 제어 (pairing권장)."open"는dm.allowFrom=["*"]가 필요합니다.dm.allowFrom: 다이렉트 메시지 허용 목록 (사용자 id 또는 이름).dm.policy="allowlist"및dm.policy="open"검증에 사용됩니다. 마법사는 사용자 이름을 받아 봇이 멤버를 검색할 수 있을 때 id 로 해석합니다.dm.groupEnabled: 그룹 다이렉트 메시지 활성화 (기본값false).dm.groupChannels: 그룹 다이렉트 메시지 채널 id 또는 슬러그에 대한 선택적 허용 목록.channels.discord.groupPolicy의 기본값은 allowlist 입니다. 이를"open"로 설정하거나channels.discord.guilds아래에 길드 항목을 추가하십시오 (선택적으로channels.discord.guilds.<id> .channels아래에 채널을 나열하여 제한).guilds: 길드 id (권장) 또는 슬러그를 키로 하는 길드별 규칙.guilds."*": 명시적 항목이 없을 때 적용되는 길드별 기본 설정.guilds.<id>.slug: 표시 이름에 사용되는 선택적 친화적 슬러그.guilds.<id>.users: 선택적 길드별 사용자 허용 목록 (id 또는 이름).guilds.<id>.tools: 채널 재정의가 없을 때 사용되는 길드 수준의 선택적 도구 정책 재정의 (allow/deny/alsoAllow).guilds.<id>.toolsBySender: 채널 재정의가 없을 때 적용되는 길드 수준의 발신자별 선택적 도구 정책 재정의 ("*"와일드카드 지원).guilds.<id>.channels.<channel>.allow:groupPolicy="allowlist"인 경우 채널 허용/거부.guilds.<id>.channels.<channel>.requireMention: 채널에 대한 멘션 게이팅.guilds.<id>.channels.<channel>.tools: 채널별 선택적 도구 정책 재정의 (allow/deny/alsoAllow).guilds.<id>.channels.<channel>.toolsBySender: 채널 내 발신자별 선택적 도구 정책 재정의 ("*"와일드카드 지원).guilds.<id>.channels.<channel>.users: 채널별 선택적 사용자 허용 목록.guilds.<id>.channels.<channel>.skills: skill 필터 (생략 = 모든 skills, 비어 있음 = 없음).guilds.<id>.channels.<channel>.systemPrompt: 채널에 대한 추가 시스템 프롬프트. Discord 채널 주제는 신뢰되지 않은 컨텍스트로 주입됩니다 (시스템 프롬프트 아님).guilds.<id>.channels.<channel>.enabled:false로 설정하면 채널을 비활성화합니다.guilds.<id>.channels: 채널 규칙 (키는 채널 슬러그 또는 id).guilds.<id>.requireMention: 길드별 멘션 요구 사항 (채널별로 재정의 가능).guilds.<id>.reactionNotifications: 반응 시스템 이벤트 모드 (off,own,all,allowlist).textChunkLimit: 아웃바운드 텍스트 분할 크기 (문자). 기본값: 2000.chunkMode:length(기본값) 은textChunkLimit초과 시에만 분할합니다.newline는 길이 분할 전에 빈 줄 (문단 경계) 기준으로 분할합니다.maxLinesPerMessage: 메시지당 최대 줄 수 (소프트). 기본값: 17.mediaMaxMb: 디스크에 저장되는 인바운드 미디어를 제한합니다.historyLimit: 멘션에 응답할 때 컨텍스트로 포함할 최근 길드 메시지 수 (기본값 20;messages.groupChat.historyLimit로 폴백;0는 비활성화).dmHistoryLimit: 사용자 턴 기준 다이렉트 메시지 히스토리 제한. 사용자별 재정의:dms["<user_id>"].historyLimit.retry: 외부 Discord API 호출에 대한 재시도 정책 (시도 횟수, minDelayMs, maxDelayMs, jitter).pluralkit: PluralKit 프록시 메시지를 해석하여 시스템 멤버가 서로 다른 발신자로 표시되도록 합니다.actions: 액션별 도구 게이트. 생략하면 모두 허용합니다 (false로 비활성화).reactions(반응 + 반응 읽기 포함)stickers,emojiUploads,stickerUploads,polls,permissions,messages,threads,pins,searchmemberInfo,roleInfo,channelInfo,voiceStatus,eventschannels(채널 + 카테고리 + 권한 생성/편집/삭제)roles(역할 추가/제거, 기본값false)moderation(타임아웃/킥/밴, 기본값false)presence(봇 상태/활동, 기본값false)
execApprovals: Discord 전용 exec 승인 다이렉트 메시지 (버튼 UI).enabled,approvers,agentFilter,sessionFilter지원.
guilds.<id>.reactionNotifications 을 사용합니다:
off: 반응 이벤트 없음.own: 봇 자신의 메시지에 대한 반응 (기본값).all: 모든 메시지의 모든 반응.allowlist:guilds.<id>.users의 반응만 모든 메시지에 적용 (빈 목록은 비활성화).
PluralKit (PK) 지원
프록시 메시지가 기본 시스템 + 멤버로 해석되도록 PK 조회를 활성화합니다. 활성화되면 OpenClaw 는 허용 목록에 멤버 아이덴티티를 사용하고, 실수로 Discord 핑이 발생하지 않도록 발신자를Member (PK:System) 로 표시합니다.
dm.allowFrom,guilds.<id>.users또는 채널별users에서pk:<memberId>를 사용하십시오.- 멤버 표시 이름도 이름/슬러그로 매칭됩니다.
- 조회는 원본 Discord 메시지 ID (프록시 이전 메시지) 를 사용하므로, PK API 는 30 분 창 내에서만 이를 해석합니다.
- PK 조회가 실패하면 (예: 토큰이 없는 비공개 시스템),
프록시 메시지는 봇 메시지로 취급되어
channels.discord.allowBots=true가 없는 한 드롭됩니다.
도구 액션 기본값
| 액션 그룹 | 기본값 | 참고 자료 |
|---|---|---|
| reactions | enabled | 반응 + 반응 목록 + emojiList |
| stickers | enabled | 스티커 전송 |
| emojiUploads | enabled | Upload emojis |
| stickerUploads | enabled | 스티커 업로드 |
| polls | enabled | 투표 생성 |
| permissions | enabled | 채널 권한 스냅샷 |
| messages | enabled | 읽기/전송/편집/삭제 |
| threads | enabled | 생성/목록/답글 |
| pins | enabled | 고정/해제/목록 |
| search | enabled | 메시지 검색 (미리보기 기능) |
| memberInfo | enabled | 멤버 정보 |
| roleInfo | enabled | 역할 목록 |
| channelInfo | 활성화 | 채널 정보 + 목록 |
| channels | 활성화 | 채널/카테고리 관리 |
| voiceStatus | 활성화 | 음성 상태 조회 |
| events | 활성화 | 예약 이벤트 목록/생성 |
| 역할 | 비활성화 | 역할 추가/제거 |
| 모더레이션 | 비활성화 | 타임아웃/킥/밴 |
| presence | 비활성화 | 봇 상태/활동 (setPresence) |
replyToMode:off(기본값),first, 또는all. 모델에 답글 태그가 포함된 경우에만 적용됩니다.
답글 태그
스레드 답글을 요청하려면 모델 출력에 하나의 태그를 포함할 수 있습니다:[[reply_to_current]]— 트리거된 Discord 메시지에 답글합니다.[[reply_to:<id>]]— 컨텍스트/히스토리의 특정 메시지 id 에 답글합니다. 현재 메시지 id 는[message_id: …]로 프롬프트에 추가되며, 히스토리 항목에는 이미 id 가 포함되어 있습니다.
channels.discord.replyToMode 로 제어됩니다:
off: 태그를 무시합니다.first: 첫 번째 아웃바운드 청크/첨부만 답글로 전송합니다.all: 모든 아웃바운드 청크/첨부를 답글로 전송합니다.
allowFrom/users/groupChannels은 id, 이름, 태그 또는<@id>와 같은 멘션을 허용합니다.- 사용자 접두사
discord:/user:와 그룹 다이렉트 메시지 접두사channel:을 지원합니다. - 모든 발신자/채널을 허용하려면
*을 사용하십시오. guilds.<id>.channels이 있으면 나열되지 않은 채널은 기본적으로 거부됩니다.guilds.<id>.channels이 생략되면 허용 목록에 포함된 길드의 모든 채널이 허용됩니다.- 어떤 채널도 허용하지 않으려면
channels.discord.groupPolicy: "disabled"을 설정하십시오 (또는 빈 허용 목록 유지). - 설정 마법사는 공개 및 비공개
Guild/Channel이름을 받아 가능할 경우 ID 로 해석합니다. - 시작 시 OpenClaw 는 허용 목록의 채널/사용자 이름을 ID 로 해석하고 (봇이 멤버를 검색할 수 있을 때) 매핑을 로그에 기록합니다. 해석되지 않은 항목은 입력된 그대로 유지됩니다.
- 등록된 명령은 OpenClaw 의 채팅 명령을 미러링합니다.
- 네이티브 명령은 다이렉트 메시지/길드 메시지와 동일한 허용 목록을 따릅니다 (
channels.discord.dm.allowFrom,channels.discord.guilds, 채널별 규칙). - 슬래시 명령은 허용 목록에 없는 사용자에게도 Discord UI 에 표시될 수 있지만, 실행 시 OpenClaw 가 허용 목록을 강제하며 “권한 없음” 으로 응답합니다.
도구 액션
에이전트는 다음과 같은 액션으로discord 를 호출할 수 있습니다:
react/reactions(반응 추가 또는 목록)sticker,poll,permissionsreadMessages,sendMessage,editMessage,deleteMessage- 읽기/검색/고정 도구 페이로드에는 원본 Discord
timestamp와 함께 정규화된timestampMs(UTC epoch ms) 및timestampUtc이 포함됩니다. threadCreate,threadList,threadReplypinMessage,unpinMessage,listPinssearchMessages,memberInfo,roleInfo,roleAdd,roleRemove,emojiListchannelInfo,channelList,voiceStatus,eventList,eventCreatetimeout,kick,bansetPresence(봇 활동 및 온라인 상태)
[discord message id: …] 및 히스토리 줄) 에 노출되어 에이전트가 이를 대상으로 지정할 수 있습니다.
이모지는 유니코드 (예: ✅) 또는 <:party_blob:1234567890> 와 같은 커스텀 이모지 문법을 사용할 수 있습니다.
보안 및 운영
- 봇 토큰은 비밀번호처럼 취급하십시오. 감독되는 호스트에서는
DISCORD_BOT_TOKEN환경 변수를 선호하거나 설정 파일 권한을 잠그십시오. - 봇에 필요한 권한만 부여하십시오 (일반적으로 메시지 읽기/전송).
- 봇이 멈추었거나 레이트 리밋에 걸린 경우, 다른 프로세스가 Discord 세션을 소유하지 않는지 확인한 후 Gateway(게이트웨이) (
openclaw gateway --force) 를 재시작하십시오.