---
title: "Como agendar mensagens automáticas no Discord com bot"
description: "Agende mensagens automáticas no Discord: anúncios de evento, lembretes diários e avisos recorrentes no horário certo. Código pronto com node-schedule e cron, mais opção sem programar."
url: "https://streethosting.com.br/guias/bots-discord/bot-discord-agendar-mensagens-discord"
category: "bots-discord"
slug: "bot-discord-agendar-mensagens-discord"
datePublished: "2026-06-18"
dateModified: "2026-08-26"
author: "Equipe StreetHosting"
difficulty: "intermediario"
language: "pt-BR"
keywords:
  - "bot discord agendar mensagens automaticas"
  - "discord bot mensagem agendada javascript"
  - "node-schedule discord bot"
  - "mensagem automatica recorrente discord"
---

# Agendar mensagens automáticas no Discord com bot

Mensagens agendadas são ótimas para anúncios de evento, lembretes de votação e avisos recorrentes. Veja como implementar com node-schedule no bot Node.js e boas práticas de agendamento.

> **Resposta rápida**
>
> Instale o **node-schedule** com `npm install node-schedule`, use `schedule.scheduleJob(regra, callback)` com sintaxe cron para agendamentos recorrentes. Sempre especifique o fuso horário com a opção `tz: 'America/Sao_Paulo'` para evitar confusão de horário.

## Instalar node-schedule

O node-schedule é a biblioteca mais usada para agendamentos em bots Discord com Node.js. Para instalar no projeto do bot:

`npm install node-schedule`

E importe no arquivo do bot:

`const schedule = require('node-schedule');`

> **Dica**
>
> Coloque os agendamentos dentro do evento `client.once('ready', ...)` para garantir que o bot está conectado ao Discord antes de tentar acessar canais e enviar mensagens.

## Mensagem em horário específico

Para enviar uma mensagem em uma data e hora específica:

```
client.once('ready', () => {
  const canal = client.channels.cache.get('ID_DO_CANAL');

  // Agendar para 25 de dezembro às 00:00 no horário de Brasília
  const data = new Date('2026-12-25T00:00:00-03:00');

  schedule.scheduleJob(data, () => {
    canal.send('Feliz Natal! 🎄');
  });
});
```

O agendamento é cancelado automaticamente após a execução. Para datas passadas, o job não executa.

> **Dica**
>
> Mensagem agendada dispara sozinha, então o texto precisa estar pronto antes. Para aviso de manutenção, contagem regressiva ou data comemorativa, escreva no writecord e cole a string direto no callback do job.

## Mensagem recorrente (diária/semanal)

Use sintaxe cron para agendamentos que se repetem. O formato é:

`segundo minuto hora dia-mês mês dia-semana`

```
client.once('ready', () => {
  const canal = client.channels.cache.get('ID_DO_CANAL');

  // Todo dia às 9h no horário de Brasília
  schedule.scheduleJob(
    { rule: '0 9 * * *', tz: 'America/Sao_Paulo' },
    () => {
      canal.send('Bom dia! Lembre-se de votar no servidor hoje. 🗳️');
    }
  );

  // Toda segunda-feira às 10h
  schedule.scheduleJob(
    { rule: '0 10 * * 1', tz: 'America/Sao_Paulo' },
    () => {
      canal.send('É segunda! Novidades da semana no #anuncios 📢');
    }
  );
});
```

- `0 9 * * *` — todo dia às 9h
- `0 12 * * 1` — toda segunda-feira ao meio-dia
- `0 0 1 * *` — no dia 1 de cada mês à meia-noite
- `*/30 * * * *` — a cada 30 minutos

## Cancelar agendamentos

Para cancelar um agendamento, guarde a referência do job e chame o método cancel():

```
const job = schedule.scheduleJob('0 9 * * *', () => {
  canal.send('Mensagem diária');
});

// Cancelar quando necessário
job.cancel();
```

> **Atenção**
>
> Ao reiniciar o bot, todos os agendamentos em memória são perdidos. Para persistência, salve os dados de agendamento em banco e recarregue os jobs no evento `ready`.

## Boas práticas de agendamento

- Sempre especifique o fuso com `tz: 'America/Sao_Paulo'` para evitar surpresas
- Verifique se o canal existe antes de enviar: `if (!canal) return;`
- Use try/catch dentro do callback do job para erros silenciosos não derrubarem o processo
- Evite muitas mensagens automáticas: usuários podem silenciar ou sair do servidor
- Teste o agendamento com um horário próximo antes de colocar em produção

Para o bot funcionar sem interrupções e os agendamentos executarem corretamente, é essencial uma hospedagem estável. Veja como [hospedar o bot 24/7](https://streethosting.com.br/guias/bots-discord/hospedagem-bot-discord-24-7) e como configurar o [PM2 para manter o processo ativo](https://streethosting.com.br/guias/bots-discord/deploy-bot-discord-nodejs-pm2).

## Perguntas frequentes

### Qual biblioteca usar para agendar mensagens no Discord bot?

node-schedule é a mais usada para bots Discord em Node.js. Ela suporta tanto horários únicos (Date específica) quanto recorrentes com sintaxe cron. node-cron é uma alternativa mais simples para quem prefere sintaxe cron pura.

### As mensagens agendadas funcionam se o bot reiniciar?

Não por padrão. Os agendamentos são feitos em memória e são perdidos quando o processo reinicia. Para agendamentos que precisam sobreviver a reinicializações, salve os dados em banco (SQLite, MongoDB) e recarregue os jobs ao iniciar o bot.

### Posso agendar mensagem para um canal específico?

Sim. Busque o canal pelo ID com client.channels.cache.get('ID_DO_CANAL') e use channel.send() dentro do callback do agendamento. Certifique-se que o bot tem permissão de Enviar Mensagens no canal.

### Qual o fuso horário padrão do node-schedule?

Por padrão o node-schedule usa o fuso horário do servidor onde o bot está rodando. Para especificar um fuso fixo, use o parâmetro tz nas opções do agendamento, como tz: 'America/Sao_Paulo' para horário de Brasília.

## Guias relacionados

- [Deploy de bot Discord Node.js com PM2: variáveis de ambiente e restart automático](https://streethosting.com.br/guias/bots-discord/deploy-bot-discord-nodejs-pm2.md)
- [Hospedagem de bot Discord 24/7 no Brasil](https://streethosting.com.br/guias/bots-discord/hospedagem-bot-discord-24-7.md)
- [Como usar webhook do Discord para alertas de servidor](https://streethosting.com.br/guias/bots-discord/webhook-discord-alertas-servidor.md)

## Produtos citados

- https://streethosting.com.br/bots

## Dados estruturados

```json
[
  {
    "@context": "https://schema.org",
    "@type": [
      "Article",
      "TechArticle"
    ],
    "headline": "Agendar mensagens automáticas no Discord com bot",
    "name": "Como agendar mensagens automáticas no Discord com bot",
    "abstract": "Mensagens agendadas são ótimas para anúncios de evento, lembretes de votação e avisos recorrentes. Veja como implementar com node-schedule no bot Node.js e boas práticas de agendamento.",
    "description": "Agende mensagens automáticas no Discord: anúncios de evento, lembretes diários e avisos recorrentes no horário certo. Código pronto com node-schedule e cron, mais opção sem programar.",
    "datePublished": "2026-06-18",
    "dateModified": "2026-08-26",
    "author": {
      "@type": "Organization",
      "name": "Equipe StreetHosting"
    },
    "publisher": {
      "@type": "Organization",
      "name": "StreetHosting",
      "url": "https://streethosting.com.br"
    },
    "inLanguage": "pt-BR",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://streethosting.com.br/guias/bots-discord/bot-discord-agendar-mensagens-discord"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Qual biblioteca usar para agendar mensagens no Discord bot?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "node-schedule é a mais usada para bots Discord em Node.js. Ela suporta tanto horários únicos (Date específica) quanto recorrentes com sintaxe cron. node-cron é uma alternativa mais simples para quem prefere sintaxe cron pura."
        }
      },
      {
        "@type": "Question",
        "name": "As mensagens agendadas funcionam se o bot reiniciar?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Não por padrão. Os agendamentos são feitos em memória e são perdidos quando o processo reinicia. Para agendamentos que precisam sobreviver a reinicializações, salve os dados em banco (SQLite, MongoDB) e recarregue os jobs ao iniciar o bot."
        }
      },
      {
        "@type": "Question",
        "name": "Posso agendar mensagem para um canal específico?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sim. Busque o canal pelo ID com client.channels.cache.get('ID_DO_CANAL') e use channel.send() dentro do callback do agendamento. Certifique-se que o bot tem permissão de Enviar Mensagens no canal."
        }
      },
      {
        "@type": "Question",
        "name": "Qual o fuso horário padrão do node-schedule?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Por padrão o node-schedule usa o fuso horário do servidor onde o bot está rodando. Para especificar um fuso fixo, use o parâmetro tz nas opções do agendamento, como tz: 'America/Sao_Paulo' para horário de Brasília."
        }
      }
    ]
  }
]
```
