电报机器人速率限制是什么?

问题描述 投票:0回答:1

来自 telegram api 这里

如果您要向多个用户发送批量通知,则 API 不允许每秒发送超过 30 条消息左右。考虑将通知分散在 8-12 小时的较长时间间隔内,以获得最佳效果。

但是如果我的机器人有很多用户,假设有 1000 个用户同时向我发送消息,我会同时回复他们。是否会被视为广播?我会达到速率限制吗?如果不是,Telegram 如何理解我回复用户的交互而不是广播?我使用 grammyY 库的

reply
但在幕后,它使用
sendMessage
api 调用。它如何理解它的回复?

顺便说一句,我正在使用这种模式来处理 grammy.js:

app.post(`/bot/${myBot.bot.token}`, async (req, res, next) => {
 myBot.bot.handleUpdate(req.body).catch((err: BotError) => {
  if (isBotFlowError(err.error)) {
   if (err.error.sendErrorMessageToUser) {
    const message = err.error.message;
    err.ctx.answerCallbackQuery(message);
   } else {
    logger.error(err);
   }
  }
 });

 res.sendStatus(200); // answer OK HTTP
});

我立即返回响应,然后处理收到的消息。

node.js telegram telegram-bot grammy
1个回答
0
投票

根据我的理解,批量通知意味着向多个用户发送相同的消息(更新)。无论如何,您的系统应该能够以预防性方式(速率限制,又称客户端限制)和反应性方式(延迟后重试 429 错误)处理速率限制。在Java生态系统中可以使用resilience4j。对于 python,hyx 是一个类似的库,对于 NodeJS,我听说过 mollitia,但从未使用过它。希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.