\u003cdiv data-theme-toc="true"\u003e \u003c/div\u003e\n\n# Como Funciona (Arquitetura)\n\nAntes de configurar isto, é importante entender que você não precisa hospedar um aplicativo de bot separado ou executar um script de “bot” (como um bot Node.js ou Python) no seu servidor.\n\n[details="Esta integração usa Interações do Discord (Webhooks) combinadas com Edições Progressivas para simular uma experiência de IA em streaming:"]\n1. Ação do Usuário: Um usuário digita /ask no seu servidor Discord.\n2. Webhook: O Discord envia uma solicitação HTTP POST diretamente para o seu servidor Discourse.\n3. Ack Imediato: O Discourse responde instantaneamente com um status de “Buscando…”. Isso evita o tempo limite de “Interação Falhou” do Discord.\n4. Resposta em Streaming: Um trabalho em segundo plano começa a gerar a resposta da IA. À medida que a IA produz texto, o Discourse envia solicitações HTTP PATCH frequentes para editar a mensagem do Discord em tempo real.\n\nResultado: Os usuários veem a resposta sendo digitada ao vivo, assim como no ChatGPT, em vez de esperar por um único bloco de texto estático.\n\nBenefício Principal: Como o Discourse lida com a lógica internamente, não há infraestrutura extra para manter. Se o seu fórum estiver online, seu bot estará online.\n\n[/details]\n\nEste guia detalha o processo completo para integrar o bot de IA do Discourse com um servidor Discord. Ele inclui instruções específicas para registrar manualmente comandos de barra (slash commands) via API, o que é atualmente necessário para contornar problemas de sincronização automática no plugin.\n\n## Pré-requisitos\n\n* Acesso de Administrador do Discourse: Você deve ser um administrador da sua instância Discourse auto-hospedada.\n* Acesso de Administrador do Discord: Você deve ter permissões de “Gerenciar Servidor” no servidor Discord de destino.\n* Acesso ao Terminal: Você precisará de um terminal para executar comandos curl.\n\n## 1. Crie o Aplicativo Discord\n\n1. Navegue até o Portal do Desenvolvedor do Discord.\n2. Clique em New Application (Novo Aplicativo) no canto superior direito.\n3. Dê um nome ao seu aplicativo (por exemplo, “Discourse Helper”) e clique em Create (Criar).\n4. Copie as Credenciais: Na página General Information (Informações Gerais), localize e salve o seguinte para mais tarde:\n\n[wrap=placeholder key="ApplicationId" description="O ID do seu Aplicativo Discord"][/wrap]\n[wrap=placeholder key="PublicKey" description="A Chave Pública do seu Discord"][/wrap]\n[wrap=placeholder key="ForumUrl" description="A URL do seu site (será usada mais tarde)"][/wrap]\n\n
AI Discord app ID: Cole =ApplicationId=\n * AI Discord app public key: Cole =PublicKey=\n \n\n5. Permita seu Servidor Discord:\n * Abra seu aplicativo Discord e ative o Modo Desenvolvedor (User Settings → Advanced → Developer Mode).\n * Clique com o botão direito no ícone do seu servidor na barra lateral e selecione Copy Server ID (Copiar ID do Servidor).\n * Nas Configurações do Discourse, cole este ID no campo AI Discord allowed guilds.\n\n# 4. Defina o Endpoint de Interações\n\n1. Construa sua URL de endpoint: https://=ForumUrl=/discourse-ai/discord/interactions\n2. Retorne ao Portal do Desenvolvedor do Discord.\n3. Na página General Information, role até Interactions Endpoint URL.\n4. Cole sua URL e clique em Save Changes (Salvar Alterações).\n * Sucesso: O Discord enviará um sinal de teste. Se salvar sem erro, sua instância Discourse verificou a assinatura com sucesso.\n * Falha: Se você receber um erro, certifique-se de que AI Discord app ID e AI Discord app public key estejam salvos corretamente nas Configurações do Discourse.\n\n# 5. Convide o Bot\n\n1. No Portal do Desenvolvedor, clique em Installation (Instalação) na barra lateral.\n2. Scopes: Marque as caixas para bot e applications.commands.\n3. Permissões do Bot: Marque o seguinte:\n * Send Messages (Enviar Mensagens)\n * Embed Links (Incorporar Links)\n * Attach Files (Anexar Arquivos)\n * Read Message History (Ler Histórico de Mensagens)\n4. Copie o Installation Link (Link de Instalação) no topo da página.\n5. Abra este URL em uma aba do navegador e autorize o bot a entrar no seu servidor.\n\n\n\n# 6. Registre o Comando de Barra (Chamada de API Manual)\n\nImportante: O nome do parâmetro do comando DEVE ser query.\n\n## Para Mac / Linux (Bash)\n\n\ncurl -X POST \"https://discord.com/api/v10/applications/=ApplicationId=/commands\" \\\n -H \"Authorization: Bot =BotToken=\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"ask\",\n \"description\": \"Pergunte algo à IA\",\n \"options\": [\n {\n \"name\": \"query\",\n \"description\": \"Qual é a sua pergunta?\",\n \"type\": 3,\n \"required\": true\n }\n ]\n}'\n\n\n* Resposta de Sucesso: Você deve receber uma resposta JSON contendo o ID do novo comando.\n* Erro 401? Certifique-se de ter mantido a palavra Bot (com um espaço) antes do seu token no cabeçalho Authorization.\n\n# 7. Verificação\n\n1. Abra seu Servidor Discord.\n2. Digite /ask em um canal de texto.\n3. O menu de comandos deve aparecer. Selecione /ask e digite uma pergunta no campo query.\n4. Comportamento Esperado:\n * Imediatamente: O bot responde “Buscando…”\n * Após alguns segundos: A mensagem é atualizada com a resposta da IA.\n\n# Solução de Problemas\n\n| Erro | Causa | Solução |\n| ----- | ----- | -------- |\n| 401 Unauthorized (no Curl) | Formato de Token Incorreto | Certifique-se de que o cabeçalho seja Authorization: Bot =BotToken=. Use o token da aba Bot, não da aba Geral. |\n| Job Exception: context must be an instance of BotContext | Payload Incorreto | Certifique-se de estar atualizado, isso foi corrigido em FIX: Discord Bot crash due to missing BotContext in PersonaReplier by devtekve · Pull Request #36429 · discourse/discourse · GitHub |"}




