我想创建一个基于Telegraf的Telegram机器人。我希望该机器人通过启动命令来调度并向用户发送消息。
例如,我希望它可以作为一门课程使用:选择课程后,您每天都会上课。
我尝试使用node-cron(请参见下面的示例),但是它通过启动bot开始发送消息。
const cron = require('node-cron');
const schedule = cron.schedule('*/5 * * * * *', async () => {
bot.telegram.sendMessage(chatId, 'Hello World');
});
bot.command('/launch', ctx => {
schedule.launch();
});
bot.command('/stop', ctx => {
schedule.stop();
});
请提出实现此类机器人的方法。 如果您知道现有的带源代码的Telegraf机器人,请告诉我。
答案 0 :(得分:1)
您有两种选择。
let timer = null;
bot.onText(/\/start/, message => {
timer = setInterval(() => {
if(new Date().getSeconds() === 1) {
bot.sendMessage(message.chat.id, "responce");
}
}, 1000)
});
bot.onText(/\/stop/, message => {
clearInterval(timer);
})
import schedule from "node-schedule";
let job;
bot.onText(/\/start/, message => {
job = schedule.scheduleJob('1 * * * * *', () => {
bot.sendMessage(message.chat.id, "responce");
});
});
bot.onText(/\/stop/, message => {
if (job) {
job.cancel()
}
});
我更喜欢第二种选择,因为它更灵活。
答案 1 :(得分:0)
如果这是我的项目,我将编写一个独立的程序(使用nodejs或其他语言)以运行操作系统cron subsystem(而不是nodejs)经常调用的程序。该程序不能作为Web服务器运行,而可以独立运行。
独立程序将连接到您的用户数据库,检索它需要发送的消息列表,然后使用电报发送。
发送完成后将退出,因为知道操作系统的cron将在时间到来时再次启动它。