Como Ativar o Status Não Perturbe do Discord Automaticamente com Eventos da Agenda
🔍 WiseChecker

Como Ativar o Status Não Perturbe do Discord Automaticamente com Eventos da Agenda

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.

ADVERTISEMENT

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

ADVERTISEMENT

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

  1. 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.
  2. 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.
  3. Ative intents privilegiados
    Ainda nas configurações do Bot, ative Message Content Intent e Server Members Intent. Clique em Save Changes.
  4. 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

  1. Configure o ambiente Node.js
    Instale o Node.js em nodejs.org. Crie uma nova pasta e execute npm init -y no terminal. Instale o Discord.js com npm install discord.js.
  2. Crie o arquivo do bot
    Crie um arquivo chamado index.js e 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');

    Substitua SEU_TOKEN_DO_BOT pelo token do Passo 1.
  3. Execute o bot
    No terminal, execute node index.js. Mantenha esta janela aberta. O bot agora escuta comandos em seu servidor.

Passo 3: Criar um Fluxo no Power Automate

  1. Faça login no Power Automate
    Acesse make.powerautomate.com e faça login com sua conta corporativa ou de estudante do Microsoft 365.
  2. 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.
  3. 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.
  4. 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.
  5. 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 como Content-Type: application/json. Defina Body como {"content":"!dnd on"}.
  6. 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"}.
  7. 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

  1. Abra as configurações do servidor
    No Discord, clique com o botão direito no nome do servidor e selecione Server Settings.
  2. Vá em Integrations
    Clique em Integrations no menu à esquerda. Clique em Webhooks. Clique em Create Webhook.
  3. 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

  1. Acesse o Google Cloud Console
    Visite console.cloud.google.com. Crie um novo projeto.
  2. Ative a Calendar API
    No menu à esquerda, clique em APIs & Services > Library. Pesquise por “Google Calendar API” e clique em Enable.
  3. Crie credenciais
    Clique em Credentials > Create Credentials > OAuth client ID. Escolha Desktop app. Baixe o arquivo JSON. Renomeie para credentials.json e coloque na pasta do seu bot.

Passo 2: Escrever o Script do Bot

  1. Instale os pacotes necessários
    Na pasta do bot, execute npm install googleapis discord.js.
  2. Crie o arquivo do bot
    Crie index.js com 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
  3. Implemente o loop de consulta
    Escreva uma função que busca eventos do Google Calendar a cada 60 segundos. Se um evento estiver ativo, chame client.user.setPresence({ status: 'dnd' }). Caso contrário, defina o status como 'online'. Use um intervalo simples: setInterval(checkCalendar, 60000).
  4. Execute o bot
    Execute node index.js. Autorize com sua conta do Google quando solicitado. O bot agora alternará o DND automaticamente com base no seu Google Calendar.

ADVERTISEMENT

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.

ADVERTISEMENT