#Não consigo usar os slash commands (do openclaw) no discord.
1 messages · Page 1 of 1 (latest)
Isso normalmente cai em duas causas bem diferentes no Discord — e dá pra checar rápido qual é a sua.
1) Permissão do Discord (não é do OpenClaw)
Se a mensagem efêmera aparece “instantânea” e parece do próprio Discord, confira no canal onde você roda o comando:
- Editar Canal → Permissões → “Usar comandos de aplicativo (Use Application Commands)”
- garanta que não está em “Negar” pra você / seu cargo / @everyone.
- Configurações do Servidor → Integrações → (seu app/bot)
- veja se os comandos não estão restritos a um cargo específico.
Mesmo sendo owner, um deny explícito em permissões do canal pode causar exatamente esse “você não tem permissão”.
2) Autorização do OpenClaw para comandos (bem comum)
O OpenClaw pode deixar você conversar normal por mensagem, mas bloquear slash commands se você não estiver na allowlist de comandos.
Pontos pra checar na config:
(A) Você tem commands.allowFrom definido?
Se você configurou commands.allowFrom e seu usuário não está lá, todo slash command vai dar “sem permissão”.
Exemplo (permitindo seu user id no Discord):
{
commands: {
allowFrom: {
discord: ["user:<SEU_USER_ID>"]
}
}
}
Docs: https://docs.openclaw.ai/tools/slash-commands (seção Config, commands.allowFrom)
(B) Você está tentando usar comandos em servidor (guild)?
Pra usar bem em guild, normalmente você precisa allowlistar o servidor/usuário:
{
channels: {
discord: {
groupPolicy: "allowlist",
guilds: {
<SEU_SERVER_ID>: {
users: ["<SEU_USER_ID>"],
requireMention: false
}
}
}
}
}
Docs: https://docs.openclaw.ai/channels/discord.md (seção “Recommended: Set up a guild workspace”)
Me diz 3 coisas e eu fecho o diagnóstico
- Você está rodando o slash command em DM com o bot ou num canal do servidor?
- Qual sua versão?
openclaw --version - Cole aqui apenas (com tokens redigidos) os trechos
commandsechannels.discorddo seuopenclaw.json.
(Importante: não poste o channels.discord.token.)
- Em um canal do servidor
- 2026.3.1
- Não sei onde encontrar isso
Beleza — como você está tentando num canal do servidor e a versão está ok, o próximo passo é só achar onde está a config ativa do OpenClaw e checar a allowlist de comandos.
Onde achar o openclaw.json (caminho da config)
No terminal da máquina onde o Gateway está rodando, rode:
openclaw config file
Isso imprime o caminho do arquivo de config que o Gateway/CLI estão usando (por padrão costuma ser algo como ~/.openclaw/openclaw.json).
Docs: https://docs.openclaw.ai/cli/config
O que você deve me mandar (sem vazar token)
Rode estes comandos e cole o output aqui:
openclaw config get commands --json
openclaw config get channels.discord.groupPolicy --json
openclaw config get channels.discord.guilds --json
(Obs: não manda channels.discord.token.)
O conserto mais provável
Se no commands aparecer allowFrom, ele vira a única allowlist para slash commands. Aí, se seu user id não estiver lá, o bot responde “você não tem permissão”.
Você pode:
- ou adicionar seu usuário em
commands.allowFrom.discord(formatouser:<SEU_USER_ID>) - ou remover
commands.allowFrompra voltar a usar as allowlists do canal/guild
Depois de qualquer mudança:
openclaw gateway restart
Extra (lado Discord, só pra eliminar dúvida)
No canal: Editar Canal → Permissões → “Usar comandos de aplicativo”: garanta que não está “Negar”.
Se você colar aqui o output dos 3 config get acima, eu te digo exatamente qual linha ajustar.
O primeiro comando deu isso:
native: auto
nativeSkills: auto
restart: true
OwnerDisplay: raw
O segundo deu
opeb
O terceiro
Config path not found
Seu output está batendo com um cenário bem comum:
channels.discord.guilds→ não existe (“Config path not found”)- e esse “opeb” muito provavelmente é
open(groupPolicy = open)
Nesse modo, o bot pode até responder “normal” em mensagens, mas os slash commands ficam bloqueados porque o OpenClaw trata comandos como algo que exige autorização explícita.
Vamos resolver em 2 jeitos — o Jeito A é o mais rápido.
Primeiro: ache o arquivo de config ativo
No terminal da máquina que roda o Gateway:
openclaw config file
(se isso falhar, manda o erro aqui)
Jeito A (rápido): permitir slash commands só pro seu usuário
-
Pegue seu Discord User ID (Developer Mode → clique direito no seu usuário → “Copy User ID”)
-
Rode (substitui
<...>):
openclaw config set commands.allowFrom.discord '["user:<SEU_USER_ID>"]' --strict-json
openclaw gateway restart
Isso libera slash commands só pra você, sem mexer no resto.
Docs do commands.allowFrom: https://docs.openclaw.ai/tools/slash-commands
Jeito B (recomendado pra servidor privado): allowlist do servidor
Se você quer que o Discord vire um “workspace” certinho:
openclaw config set channels.discord.groupPolicy '"allowlist"' --strict-json
openclaw config set 'channels.discord.guilds["<SEU_SERVER_ID>"]' '{ requireMention: false, users: ["<SEU_USER_ID>"] }' --strict-json
openclaw gateway restart
Docs: https://docs.openclaw.ai/channels/discord.md
Só pra confirmar (importante)
Essa mensagem efêmera “você não tem permissão” aparece com o avatar/nome do seu bot (OpenClaw), ou parece uma mensagem “do próprio Discord”?
- Se for do bot → as configs acima resolvem.
- Se for do Discord → aí é permissão do canal (“Usar comandos de aplicativo / Use Application Commands”) e a gente ajusta do lado do Discord.
Me manda o resultado de:
openclaw config file
openclaw config get channels.discord.groupPolicy
e me diz se a efêmera é do bot ou do Discord.
A primeira retorna
~/.openclaw/openclaw.json
A segunda retorna
Open
Perfeito — channels.discord.groupPolicy = "Open" explica o comportamento.
No modo Open, o bot pode responder mensagens no servidor, mas slash commands ficam bloqueados porque o OpenClaw exige um “sender autorizado” pra rodar comandos (por segurança).
Você tem 2 caminhos:
Opção 1 (recomendada): colocar o servidor em allowlist (workspace “certo”)
- Pegue os IDs:
- Server ID: Developer Mode ligado → clique direito no ícone do servidor → Copy Server ID
- User ID: clique direito no seu usuário → Copy User ID
- Aplique a config:
openclaw config set channels.discord.groupPolicy '"allowlist"' --strict-json
openclaw config set 'channels.discord.guilds["<SEU_SERVER_ID>"]' '{ requireMention: false, users: ["<SEU_USER_ID>"] }' --strict-json
openclaw gateway restart
Depois disso, os slash commands devem funcionar no servidor.
Docs: https://docs.openclaw.ai/channels/discord.md
Opção 2 (mais rápida, sem mexer no groupPolicy): allowlist só de comandos
Se você quiser manter Open, mas liberar slash commands só pra você:
openclaw config set commands.allowFrom.discord '["user:<SEU_USER_ID>"]' --strict-json
openclaw gateway restart
Docs: https://docs.openclaw.ai/tools/slash-commands
Se você colar aqui apenas seu Server ID e User ID (só números, isso não é secreto), eu te devolvo os comandos já prontos pra copiar/colar.
do servidor: 1338620596577374301
meu: 830859997432119306
quero que mencionar para ativar a resposta ainda seja necessário
Ótimo — então vamos pelo modo allowlist e manter mention obrigatório.
Roda isso no host do Gateway:
openclaw config set channels.discord.groupPolicy '"allowlist"' --strict-json
openclaw config set 'channels.discord.guilds["1338620596577374301"]' '{ requireMention: true, users: ["830859997432119306"] }' --strict-json
openclaw gateway restart
O que isso faz:
- Só esse servidor fica “liberado” (allowlist)
- O bot só responde mensagens normais quando for mencionado (
requireMention: true) - Seus slash commands devem passar porque você está na lista
users
Se depois do restart ainda aparecer “você não tem permissão”, me manda o output de:
openclaw config get commands.allowFrom
openclaw config get commands.useAccessGroups
(às vezes alguém setou commands.allowFrom e isso sobrepõe tudo).
Deu erro: Config token difers from token service...
Além disso os outros dois comandos deram: Config path not found
Esse “Config token differs from token service…” não tem a ver com Discord em si — é o OpenClaw avisando que o token do Gateway que está no ~/.openclaw/openclaw.json é diferente do token que ficou “gravado” no serviço/daemon quando ele foi instalado.
Isso costuma aparecer quando:
- você mudou
gateway.auth.tokenem algum momento ou - o serviço foi instalado com um token e depois o config ficou diferente.
1) Primeiro: confirma que sua config do Discord foi gravada mesmo
Roda:
openclaw config get 'channels.discord.guilds["1338620596577374301"]'
openclaw config get channels.discord.groupPolicy
Você deve ver algo como allowlist e o objeto com requireMention: true + seu user.
2) Agora: reiniciar o serviço “do jeito certo” (e corrigir o aviso do token)
Eu recomendo reinstalar o serviço do gateway (isso só reescreve a configuração do daemon; não apaga seus dados):
openclaw gateway install --force
openclaw gateway restart
Depois disso, testa de novo um slash command (ex: /status).
Docs do gateway service: https://docs.openclaw.ai/cli/gateway
3) Se ainda não funcionar
Manda aqui o output de:
openclaw gateway status
(esse comando geralmente mostra exatamente onde está a divergência “Config (cli)” vs “Config (service)” e fica fácil dizer qual token/config o serviço está usando.)
Quando os slash commands funcionarem, você ainda vai manter o comportamento que você quer: responder só quando mencionar (porque requireMention: true continua valendo).
Fiz tudo isso mas continua o mesmo problema. Não precisa mais ajuda, acho que eu instalei o bot para resolver problemas e não para eu ficar resolvendo problemas dele o dia todo. Obrigado