Estoy tratando de hacer un bot de discordia que te dé recordatorios semanales . Estoy usando momentjs para obtener el tiempo. Además de usar discord.js-commando . Encontré que la mejor manera de llamar a una función varias veces es usar setInterval .
const moment = require('moment'); const Commando = require('discord.js-commando'); const bot = new Commando.Client(); bot.on('ready', function () { var day = moment().format('dddd'); var time = moment().format('h:mm a'); function Tuesday() { if (day == 'Tuesday' && time == '6:30 pm') { const channel = bot.channels.get('933047404645724234'); console.log('Sending Message'); channel.send('Reminder: You have a week to complete your To-Do List!'); } else { console.log('Not Sending Message'); } } console.log('Bot is now ready!'); setInterval(Tuesday, 100); }); Noté que el problema con setInterval es que solo se llama una vez. También intenté usar una función asíncrona pero también falló.
Bueno, ejecutar una función cada 100 ms no es del todo óptimo. No sé cuál es la razón para ejecutar solo una vez (debería ejecutarse infinitamente), pero hay una mejor manera de hacer lo que necesita.
Necesitará el paquete llamado "programa de nodo". Es muy útil para esas cosas.
Aquí hay un ejemplo:
const schedule = require("node-schedule"); schedule.scheduleJob({hour: 18, minute: 30, dayOfWeek: 2}, function(){ // your code here });Puede leer más en la documentación de node-schedule aquí .