O status Não Perturbe do Discord silencia todas as notificações e alertas. Alternar manualmente para DND antes de cada reunião é tedioso e fácil de esquecer. Este artigo explica como automatizar essa troca usando integração com o Microsoft 365 Calendar e ferramentas de automação de terceiros. Você aprenderá as etapas exatas para configurar uma automação que ativa o Discord DND quando um evento da agenda começa e o desativa quando o evento termina.
Principais Conclusões: Automatize o DND do Discord com Eventos da Agenda
- Discord Rich Presence + Microsoft 365 Calendar: Permite ver o status da reunião, mas não alterna o DND automaticamente.
- Microsoft Power Automate + Discord Webhook: Envia um webhook para um bot do Discord que altera seu status com base no início e fim do evento.
- Bot do Discord personalizado com Google Calendar API: Consulta o Google Calendar a cada minuto e define o status DND via API do Discord quando um evento está ativo.
Por que o Discord Não Alterna o DND Automaticamente de Forma Nativa
O recurso Rich Presence do Discord pode mostrar o status do seu calendário do Microsoft 365 como “Em uma Reunião” ou “Disponível” no seu perfil. No entanto, esse recurso apenas exibe o status visualmente. Ele não altera seu status real do Discord para Não Perturbe. As notificações ainda chegam. Para silenciar completamente as notificações durante as reuniões, você deve usar uma ferramenta de automação de terceiros que chame a API do Discord para alterar seu status. Dois métodos confiáveis são o Microsoft Power Automate com um webhook do Discord e um bot do Discord personalizado com a API do Google Calendar.
Pré-requisitos para Ambos os Métodos
Antes de começar, confirme que você tem o seguinte:
- Uma conta do Discord com permissão Gerenciar Servidor se quiser o bot em um servidor, ou apenas sua conta de usuário para um bot de usuário
- Acesso ao Microsoft 365 Calendar (conta corporativa ou de estudante) ou Google Calendar
- Uma licença do Microsoft Power Automate (o nível gratuito funciona para execuções limitadas) ou capacidade de hospedar um pequeno script de bot
- Familiaridade básica em copiar URLs e colar em campos de configuração
Método 1: Microsoft Power Automate + Discord Webhook
Este método usa o Microsoft Power Automate para monitorar sua agenda. Quando um evento começa ou termina, o Power Automate envia uma solicitação HTTP para uma URL de webhook do Discord. O webhook aciona um bot do Discord que altera seu status. Essa abordagem funciona melhor se você usa o Microsoft 365 Calendar para todas as suas reuniões.
Passo 1: Criar um Bot do Discord e Obter seu Token
- Acesse o Portal do Desenvolvedor do Discord
Visite discord.com/developers/applications e clique em New Application. Nomeie o bot como “DND Auto Switcher” ou algo de sua preferência. - Crie o usuário do bot
No menu à esquerda, clique em Bot. Clique em Add Bot. Confirme. Na seção Token, clique em Copy. Salve este token em um arquivo de texto seguro. Você precisará dele mais tarde. - Ative intents privilegiados
Ainda nas configurações do Bot, ative Message Content Intent e Server Members Intent. Clique em Save Changes. - Convide o bot para seu servidor
No menu à esquerda, clique em OAuth2 > URL Generator. Em Scopes, marque bot. Em Bot Permissions, marque Send Messages e Manage Webhooks. Copie a URL gerada, abra-a em um navegador e convide o bot para o servidor onde você deseja que ele altere seu status.
Passo 2: Escrever o Script do Bot que Altera o Status
- Configure o ambiente Node.js
Instale o Node.js em nodejs.org. Crie uma nova pasta e executenpm init -yno terminal. Instale o Discord.js comnpm install discord.js. - Crie o arquivo do bot
Crie um arquivo chamadoindex.jse cole este código:const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers] });
client.on('ready', () => { console.log('Bot está online'); });
client.on('messageCreate', async (message) => {
if (message.content === '!dnd on') {
await message.member.user.setPresence({ status: 'dnd' });
message.reply('DND ativado');
}
if (message.content === '!dnd off') {
await message.member.user.setPresence({ status: 'online' });
message.reply('DND desativado');
}
});
client.login('SEU_TOKEN_DO_BOT');
SubstituaSEU_TOKEN_DO_BOTpelo token do Passo 1. - Execute o bot
No terminal, executenode index.js. Mantenha esta janela aberta. O bot agora escuta comandos em seu servidor.
Passo 3: Criar um Fluxo no Power Automate
- Faça login no Power Automate
Acesse make.powerautomate.com e faça login com sua conta corporativa ou de estudante do Microsoft 365. - Crie um fluxo agendado
Clique em Create > Scheduled cloud flow. Nomeie como “Discord DND Auto”. Defina para executar a cada 1 minuto. Clique em Create. - Adicione uma ação de calendário
Clique em New Step. Pesquise por “calendar” e selecione Get upcoming calendar items (V2) do Outlook. Defina Calendar Id como Calendar. Defina MaxItems como 1. Defina Look Ahead Time como 60 minutos. - Adicione uma condição para verificar o status do evento
Clique em New Step. Pesquise por “condition” e selecione Condition. Na caixa esquerda, selecione Start time do conteúdo dinâmico. Defina o operador como is less than. Na caixa direita, insira@{utcNow()}. Isso verifica se o evento começou. - Adicione ação HTTP para ativar DND
No ramo If yes, clique em Add an action. Pesquise por “HTTP” e selecione HTTP. Defina Method como POST. Defina URI como a URL do webhook do seu bot (você criará no próximo passo). Defina Headers comoContent-Type: application/json. Defina Body como{"content":"!dnd on"}. - Adicione ação HTTP para desativar DND
No ramo If no, clique em Add an action. Pesquise por “HTTP” e selecione HTTP. Defina Method como POST. Defina URI como a mesma URL do webhook. Defina Body como{"content":"!dnd off"}. - Salve e teste
Clique em Save. Depois clique em Test. Execute o fluxo manualmente para ver se ele envia o comando.
Passo 4: Criar um Webhook do Discord em Seu Servidor
- Abra as configurações do servidor
No Discord, clique com o botão direito no nome do servidor e selecione Server Settings. - Vá em Integrations
Clique em Integrations no menu à esquerda. Clique em Webhooks. Clique em Create Webhook. - Copie a URL do webhook
Nomeie o webhook como “Power Automate”. Selecione o canal onde o bot irá escutar. Clique em Copy Webhook URL. Cole esta URL nas ações HTTP do Power Automate.
Método 2: Bot do Discord Personalizado com Google Calendar API
Se você usa o Google Calendar, este método consulta sua agenda a cada minuto e define seu status do Discord via API. Requer um pouco mais de programação, mas oferece controle total.
Passo 1: Ativar a Google Calendar API
- Acesse o Google Cloud Console
Visite console.cloud.google.com. Crie um novo projeto. - Ative a Calendar API
No menu à esquerda, clique em APIs & Services > Library. Pesquise por “Google Calendar API” e clique em Enable. - Crie credenciais
Clique em Credentials > Create Credentials > OAuth client ID. Escolha Desktop app. Baixe o arquivo JSON. Renomeie paracredentials.jsone coloque na pasta do seu bot.
Passo 2: Escrever o Script do Bot
- Instale os pacotes necessários
Na pasta do bot, executenpm install googleapis discord.js. - Crie o arquivo do bot
Crieindex.jscom esta estrutura:const { Client, GatewayIntentBits } = require('discord.js');
const { google } = require('googleapis');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
const SCOPES = ['https://www.googleapis.com/auth/calendar.readonly'];
const TOKEN_PATH = 'token.json';
// Adicione lógica OAuth2 e loop de consulta aqui - Implemente o loop de consulta
Escreva uma função que busca eventos do Google Calendar a cada 60 segundos. Se um evento estiver ativo, chameclient.user.setPresence({ status: 'dnd' }). Caso contrário, defina o status como'online'. Use um intervalo simples:setInterval(checkCalendar, 60000). - Execute o bot
Executenode index.js. Autorize com sua conta do Google quando solicitado. O bot agora alternará o DND automaticamente com base no seu Google Calendar.
Problemas Comuns e Limitações
O Bot Pode Alterar Apenas o Próprio Status
Um bot do Discord usando a API padrão só pode alterar sua própria presença. Para alterar o status de um usuário específico, você precisa de um token de conta de usuário, o que viola os Termos de Serviço do Discord. Os métodos acima funcionam fazendo o bot enviar um comando para si mesmo ou usando um webhook que aciona o bot para alterar seu próprio status. Se você quiser alterar o status da sua conta pessoal, deve usar um bot de usuário, o que é contra as regras do Discord e pode resultar no banimento da sua conta.
Limites do Nível Gratuito do Power Automate
O plano gratuito do Microsoft Power Automate permite 500 execuções por mês. Se você tiver muitas reuniões curtas, pode exceder esse limite. Considere atualizar para um plano pago ou reduzir a frequência do fluxo para a cada 2 minutos.
Cota da Google Calendar API
A Google Calendar API tem uma cota de 1.000.000 de solicitações por dia. Consultar a cada minuto usa 1.440 solicitações por dia por calendário, bem dentro do limite. No entanto, se você consultar vários calendários, ajuste conforme necessário.
Bot Fica Offline Após o Computador Dormir
Se você executar o bot em sua máquina local, ele para quando o computador dorme. Para mantê-lo funcionando 24/7, hospede o bot em um serviço de nuvem como Heroku, AWS EC2 ou um Raspberry Pi em casa.
Power Automate vs Bot Personalizado: Qual Método Escolher
| Item | Power Automate + Webhook | Bot Personalizado + Google Calendar API |
|---|---|---|
| Suporte a calendários | Apenas Microsoft 365 Calendar | Apenas Google Calendar |
| Complexidade de configuração | Baixa a média | Média a alta |
| Custo | Nível gratuito (500 execuções/mês) ou pago | Gratuito (cota da API do Google) |
| Hospedagem necessária | Não (Power Automate roda na nuvem) | Sim (bot deve ficar 24/7) |
| Latência | Até 1 minuto de atraso | Até 1 minuto de atraso |
Ambos os métodos alcançam o mesmo resultado: status DND automático durante eventos da agenda. Escolha o Power Automate se você usa o Microsoft 365 e deseja o mínimo de programação. Escolha um bot personalizado se você usa o Google Calendar e está confortável com Node.js. Após a configuração, teste com um evento curto para confirmar que o status muda corretamente. Para usuários avançados, adicione lógica para ignorar eventos marcados como “Privado” ou eventos com duração inferior a 15 minutos.