Canal Discord do OpenClaw
Conecte o OpenClaw ao Discord usando a API Bot Gateway do discord.js. Crie um bot no Developer Portal do Discord, ative os intents necessários, convide o bot para seu servidor e seu assistente de IA estará ativo no Discord. Suporta mensagens diretas, conversas em canais de servidor, reações, threads, comandos slash e mídia rica. Um dos canais mais fáceis de configurar.
Discord Recursos suportados
Mensagens de texto
Suportado
Mídia e arquivos
Suportado
Reações
Suportado
Threads
Suportado
Mensagens de voz
Não suportado
Chat em grupo
Suportado
Discord Pré-requisitos
- Uma conta Discord com acesso ao Discord Developer Portal
- Um Bot Token do Discord Developer Portal (Applications → New Application → Bot)
- Message Content Intent ativado em Privileged Gateway Intents
- OpenClaw Gateway em execução e configurado
Discord Configuração rápida
Criar bot no Discord e ativar intents
Acesse o Discord Developer Portal (discord.com/developers), crie uma New Application, adicione um usuário Bot e copie o Bot Token. Em Privileged Gateway Intents, ative 'Message Content Intent' (obrigatório) e 'Server Members Intent' (recomendado para consulta de membros).
Adicionar configuração do canal Discord
Adicione a configuração do canal Discord em ~/.openclaw/openclaw.json. Defina o token (ou use a variável de ambiente DISCORD_BOT_TOKEN) e configure dm.policy para controlar quem pode enviar mensagens diretas ao bot.
Convidar bot para o servidor e testar
No Developer Portal, acesse OAuth2 → URL Generator. Selecione os escopos 'bot' e 'applications.commands'. Escolha as permissões: View Channels, Send Messages, Read Message History, Embed Links, Attach Files, Add Reactions. Abra a URL gerada para convidar o bot ao seu servidor. Envie '@NomeDoBot olá' para testar.
Discord Exemplo de configuração
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_DISCORD_BOT_TOKEN",
"dm": {
"policy": "pairing"
}
}
}
}Discord Documentação Detalhada
Visão Geral da Arquitetura
Criando Seu Bot
Políticas de DM
{
"channels": {
"discord": {
"dm": {
"policy": "pairing",
"allowFrom": ["123456789012345678"]
}
}
}
}Configuração de Canais de Servidor
{
"channels": {
"discord": {
"groupPolicy": "open",
"guilds": {
"YOUR_GUILD_ID": {
"slug": "my-server",
"requireMention": true,
"channels": {
"CHANNEL_ID": {
"allow": true,
"requireMention": false,
"systemPrompt": "You are a helpful assistant in this channel."
}
}
}
}
}
}
}Reações e Confirmações
{
"channels": {
"discord": {
"messages": {
"ackReaction": "👀",
"removeAckAfterReply": true
},
"guilds": {
"GUILD_ID": {
"reactionNotifications": "own"
}
}
}
}
}Formatação e Fragmentação de Mensagens
{
"channels": {
"discord": {
"textChunkLimit": 2000,
"chunkMode": "newline",
"historyLimit": 20
}
}
}Comandos Slash e Ações de Ferramentas
Mídia e Manipulação de Arquivos
Integração com PluralKit
{
"channels": {
"discord": {
"pluralkit": {
"enabled": true,
"token": "pk_live_..."
}
}
}
}Aprovações de Execução (Interface de Botões)
{
"channels": {
"discord": {
"execApprovals": {
"enabled": true,
"approvers": ["USER_ID_1", "USER_ID_2"],
"agentFilter": [],
"sessionFilter": []
}
}
}
}Portões de Ação
Resolução e Correspondência de Lista de Permissão
Discord Referência de Configuração
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Ativar ou desativar o canal Discord |
| token | string | "" | Bot Token do Discord. Também pode usar a variável de ambiente DISCORD_BOT_TOKEN |
| dm.policy | string | "pairing" | Controla quem pode enviar DM ao bot. Opções: pairing, allowlist, open, disabled |
| dm.allowFrom | string[] | [] | IDs de usuários Discord autorizados a enviar DM ao bot (quando dm.policy é allowlist) |
| groupPolicy | string | "allowlist" | Política de tratamento de canais de servidor. Opções: open, disabled, allowlist |
| guilds | object | {} | Configuração por servidor identificada por guild ID. Inclui slug, users, channels, requireMention, etc. |
| requireMention | boolean | true | Se o bot requer @menção para responder em canais de servidor |
| messages.ackReaction | string | "" | Emoji para reagir como confirmação de mensagem durante o processamento |
| messages.removeAckAfterReply | boolean | false | Remover a reação de confirmação após a IA responder |
| textChunkLimit | number | 2000 | Máximo de caracteres por fragmento de mensagem (limite do Discord é 2000) |
| chunkMode | string | "length" | Como dividir respostas longas. Opções: length (limite rígido de caracteres), newline (limites de parágrafo) |
| historyLimit | number | 20 | Número de mensagens recentes do servidor para incluir como contexto da IA |
| mediaMaxMb | number | 8 | Tamanho máximo de arquivo de mídia em megabytes para uploads |
| replyToMode | string | "off" | Modo de encadeamento de respostas. Opções: off, first (encadear apenas o primeiro fragmento), all (encadear todos os fragmentos) |
| configWrites | boolean | true | Permitir atualizações de config iniciadas pelo Discord via comandos /config set|unset |
| allowBots | boolean | false | Se deve processar mensagens de outros bots. Use com cautela para evitar loops |
| retry.attempts | number | 3 | Número de tentativas de retry para chamadas falhas à API do Discord |
| retry.minDelayMs | number | 500 | Atraso mínimo em milissegundos entre tentativas de retry |
| retry.maxDelayMs | number | 30000 | Atraso máximo em milissegundos entre tentativas de retry |
| retry.jitter | number | 0.1 | Fator de jitter aplicado aos atrasos de retry para aleatorização |
| dm.enabled | boolean | true | Se deve aceitar mensagens diretas |
| dm.groupEnabled | boolean | false | Ativar tratamento de DMs em grupo |
| dm.groupChannels | string[] | [] | Lista de permissão de canais de DM em grupo |
| dmHistoryLimit | number | - | Substituição do limite de histórico de DM por usuário |
| maxLinesPerMessage | number | 17 | Limite flexível de contagem de linhas por fragmento de mensagem |
| commands.native | string | boolean | "auto" | Registro de comandos slash nativos. Opções: auto (ativado para Discord), true, false |
| commands.text | object | {} | Configuração de comandos de texto que requerem mensagens /... independentes |
| commands.useAccessGroups | boolean | false | Se deve impor verificações de grupo de acesso para comandos |
| actions.* | boolean | varies | Portões de ação de ferramentas. A maioria ativada por padrão; roles, moderation e presence são desativados por padrão |
| pluralkit.enabled | boolean | false | Ativar resolução de mensagens proxy do PluralKit |
Ativar ou desativar o canal Discord
Bot Token do Discord. Também pode usar a variável de ambiente DISCORD_BOT_TOKEN
Controla quem pode enviar DM ao bot. Opções: pairing, allowlist, open, disabled
IDs de usuários Discord autorizados a enviar DM ao bot (quando dm.policy é allowlist)
Política de tratamento de canais de servidor. Opções: open, disabled, allowlist
Configuração por servidor identificada por guild ID. Inclui slug, users, channels, requireMention, etc.
Se o bot requer @menção para responder em canais de servidor
Emoji para reagir como confirmação de mensagem durante o processamento
Remover a reação de confirmação após a IA responder
Máximo de caracteres por fragmento de mensagem (limite do Discord é 2000)
Como dividir respostas longas. Opções: length (limite rígido de caracteres), newline (limites de parágrafo)
Número de mensagens recentes do servidor para incluir como contexto da IA
Tamanho máximo de arquivo de mídia em megabytes para uploads
Modo de encadeamento de respostas. Opções: off, first (encadear apenas o primeiro fragmento), all (encadear todos os fragmentos)
Permitir atualizações de config iniciadas pelo Discord via comandos /config set|unset
Se deve processar mensagens de outros bots. Use com cautela para evitar loops
Número de tentativas de retry para chamadas falhas à API do Discord
Atraso mínimo em milissegundos entre tentativas de retry
Atraso máximo em milissegundos entre tentativas de retry
Fator de jitter aplicado aos atrasos de retry para aleatorização
Se deve aceitar mensagens diretas
Ativar tratamento de DMs em grupo
Lista de permissão de canais de DM em grupo
Substituição do limite de histórico de DM por usuário
Limite flexível de contagem de linhas por fragmento de mensagem
Registro de comandos slash nativos. Opções: auto (ativado para Discord), true, false
Configuração de comandos de texto que requerem mensagens /... independentes
Se deve impor verificações de grupo de acesso para comandos
Portões de ação de ferramentas. A maioria ativada por padrão; roles, moderation e presence são desativados por padrão
Ativar resolução de mensagens proxy do PluralKit
Discord Perguntas Frequentes
Discord Solução de Problemas
O Message Content Intent não está ativado, o bot não tem permissões no canal, ou os requisitos de menção estão mal configurados.
O tratamento de DM pode estar desativado no config, ou a aprovação de pareamento está pendente.
O escopo 'applications.commands' não foi incluído na URL de convite OAuth2 do bot.
Os limites de taxa da API do Discord foram atingidos, ou a conexão do gateway está em estado ruim.
groupPolicy tem como padrão 'allowlist', então o bot só responde em servidores/canais explicitamente configurados.
execApprovals não está ativado, ou o ID Discord do usuário não está listado no array approvers.