{
  "schemaVersion": "1.0",
  "path": "/guias/bots-discord/bot-discord-agendar-mensagens-discord",
  "url": "https://streethosting.com.br/guias/bots-discord/bot-discord-agendar-mensagens-discord",
  "markdownUrl": "https://streethosting.com.br/guias/bots-discord/bot-discord-agendar-mensagens-discord.md",
  "jsonUrl": "https://streethosting.com.br/guias/bots-discord/bot-discord-agendar-mensagens-discord.json",
  "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.",
  "category": "bots-discord",
  "topics": [
    "automacao",
    "deploy"
  ],
  "difficulty": "intermediario",
  "datePublished": "2026-06-18",
  "dateModified": "2026-08-26",
  "readingMinutes": 3,
  "h1": "Agendar mensagens automáticas no Discord com bot",
  "excerpt": "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.",
  "author": "Equipe StreetHosting",
  "wordCount": 470,
  "categoryLabel": "Bots Discord",
  "topicLabels": [
    "Automação e webhooks",
    "Deploy e execução de apps"
  ],
  "primaryKeyword": "bot discord agendar mensagens automaticas",
  "secondaryKeywords": [
    "discord bot mensagem agendada javascript",
    "node-schedule discord bot",
    "mensagem automatica recorrente discord"
  ],
  "toc": [
    {
      "id": "node-schedule",
      "label": "Instalar node-schedule"
    },
    {
      "id": "mensagem-unica",
      "label": "Mensagem em horário específico"
    },
    {
      "id": "recorrente",
      "label": "Mensagem recorrente (diária/semanal)"
    },
    {
      "id": "cancelar",
      "label": "Cancelar agendamentos"
    },
    {
      "id": "boas-praticas",
      "label": "Boas práticas de agendamento"
    }
  ],
  "faqs": [
    {
      "question": "Qual biblioteca usar para agendar mensagens no Discord bot?",
      "answer": "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."
    },
    {
      "question": "As mensagens agendadas funcionam se o bot reiniciar?",
      "answer": "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."
    },
    {
      "question": "Posso agendar mensagem para um canal específico?",
      "answer": "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."
    },
    {
      "question": "Qual o fuso horário padrão do node-schedule?",
      "answer": "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."
    }
  ],
  "howToSteps": [],
  "relatedProducts": [
    "https://streethosting.com.br/bots"
  ],
  "relatedGuides": [
    "https://streethosting.com.br/guias/bots-discord/deploy-bot-discord-nodejs-pm2",
    "https://streethosting.com.br/guias/bots-discord/hospedagem-bot-discord-24-7",
    "https://streethosting.com.br/guias/bots-discord/webhook-discord-alertas-servidor"
  ],
  "content": {
    "format": "markdown",
    "body": "> **Resposta rápida**\n>\n> 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.\n\n## Instalar node-schedule\n\nO node-schedule é a biblioteca mais usada para agendamentos em bots Discord com Node.js. Para instalar no projeto do bot:\n\n`npm install node-schedule`\n\nE importe no arquivo do bot:\n\n`const schedule = require('node-schedule');`\n\n> **Dica**\n>\n> 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.\n\n## Mensagem em horário específico\n\nPara enviar uma mensagem em uma data e hora específica:\n\n```\nclient.once('ready', () => {\n  const canal = client.channels.cache.get('ID_DO_CANAL');\n\n  // Agendar para 25 de dezembro às 00:00 no horário de Brasília\n  const data = new Date('2026-12-25T00:00:00-03:00');\n\n  schedule.scheduleJob(data, () => {\n    canal.send('Feliz Natal! 🎄');\n  });\n});\n```\n\nO agendamento é cancelado automaticamente após a execução. Para datas passadas, o job não executa.\n\n> **Dica**\n>\n> 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.\n\n## Mensagem recorrente (diária/semanal)\n\nUse sintaxe cron para agendamentos que se repetem. O formato é:\n\n`segundo minuto hora dia-mês mês dia-semana`\n\n```\nclient.once('ready', () => {\n  const canal = client.channels.cache.get('ID_DO_CANAL');\n\n  // Todo dia às 9h no horário de Brasília\n  schedule.scheduleJob(\n    { rule: '0 9 * * *', tz: 'America/Sao_Paulo' },\n    () => {\n      canal.send('Bom dia! Lembre-se de votar no servidor hoje. 🗳️');\n    }\n  );\n\n  // Toda segunda-feira às 10h\n  schedule.scheduleJob(\n    { rule: '0 10 * * 1', tz: 'America/Sao_Paulo' },\n    () => {\n      canal.send('É segunda! Novidades da semana no #anuncios 📢');\n    }\n  );\n});\n```\n\n- `0 9 * * *` — todo dia às 9h\n- `0 12 * * 1` — toda segunda-feira ao meio-dia\n- `0 0 1 * *` — no dia 1 de cada mês à meia-noite\n- `*/30 * * * *` — a cada 30 minutos\n\n## Cancelar agendamentos\n\nPara cancelar um agendamento, guarde a referência do job e chame o método cancel():\n\n```\nconst job = schedule.scheduleJob('0 9 * * *', () => {\n  canal.send('Mensagem diária');\n});\n\n// Cancelar quando necessário\njob.cancel();\n```\n\n> **Atenção**\n>\n> 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`.\n\n## Boas práticas de agendamento\n\n- Sempre especifique o fuso com `tz: 'America/Sao_Paulo'` para evitar surpresas\n- Verifique se o canal existe antes de enviar: `if (!canal) return;`\n- Use try/catch dentro do callback do job para erros silenciosos não derrubarem o processo\n- Evite muitas mensagens automáticas: usuários podem silenciar ou sair do servidor\n- Teste o agendamento com um horário próximo antes de colocar em produção\n\nPara 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)."
  }
}
