我正在开发一个基于Telegraf
的Telegram机器人,试图执行基于cron
的脚本。我还使用MongoDB
存储用户数据。
const CronJob = require('cron').CronJob;
const job = new CronJob('*/5 * * * * *', async function() {
const user = await db.User.findOne({chat_id: ctx.chat.id});
await bot.telegram.sendMessage(user.chat_id, 'Hello World');
})
bot.command('launch', async (ctx) => {
job.start()
})
bot.command('stop', async (ctx) => {
job.stop();
})
当用户与漫游器进行交互时,以这种方式从数据库中获取用户可以很好地处理内部事件,但不适用于诸如通知之类的外部事件,在这种情况下ctx
会丢失。
请建议如何使用chat_id
从数据库检索ctx
,或者建议不使用ctx
的另一种解决方法。