节点电报机器人 api - 禁止处理机器人启动前发送的更新

Node telegram bot api - disable processing of updates sent before the bot starts

我遇到了这个问题:当我启动机器人时,它会立即开始寻找更新。但是,在我的特殊情况下(尤其是在开发过程中),这可能会非常令人沮丧和不舒服。有没有办法告诉机器人处理机器人本身启动后发送的更新?

谢谢

您需要告诉 Telegram“忘记”这些更新。你会这样做:

  1. 发送请求至:https://api.telegram.org/bot$TELEGRAM_TOKEN/getUpdates
  2. 获取结果数组的最后一个元素(pop)的message_id
  3. 发送另一个请求 https://api.telegram.org/bot$TELEGRAM_TOKEN/getUpdates?offset=$OFFSET 其中 $OFFSET 是 message_id + 1

这是一种无状态清除待处理请求的方式。您可以使用 curl、浏览器或请求库(推荐)来执行此操作。您可以使用 node-telegram-bot-api 执行此操作,但我不推荐,因为您必须创建 2 个机器人实例、1 个轮询和 1 个非轮询来清除更新,这不是一个好的做法,因为 ntba 不会解耦其方法在不同的 class.

所以在伪代码代码中:

const TOKEN = 'MY_TOKEN'

async function clearUpdates(token) {
  const { result } = await request.get(`https://api.telegram.org/bot${token}/getUpdates`).json()
  
  return await request.get(`https://api.telegram.org/bot${token}/getUpdates?offset=${result[result.length - 1].message_id + 1}`)
}

现在 运行 在启动你的机器人之前清除更新。