gpt4 book ai didi

node.js - Telegram 机器人 - 每天向用户发送消息

转载 作者:行者123 更新时间:2023-12-02 02:54:54 40 4
gpt4 key购买 nike

我想创建一个基于 Telegraf 的 Telegram 机器人。我希望机器人通过启动命令来安排并向用户发送消息。

例如,我希望它作为一门类(class):一旦您选择了一门类(class),您每天都会上课。

我尝试使用node-cron(请参见下面的示例),但它通过启动机器人来开始发送消息。

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 机器人及其源代码,请告诉我。

最佳答案

您可以通过两种方式执行此操作。

  1. 使用 setInterval() 函数并检查函数体中的日期。我检查秒,但你可以检查小时或天。
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);
})
  • 使用外部 npm 包 node-schedule 或类似的东西。
  • 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()
    }
    });

    我更喜欢第二种选择,因为它更灵活。

    关于node.js - Telegram 机器人 - 每天向用户发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61331462/

    40 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com