我想知道是否可以在 telegram bot api 上使用我的机器人向多个 chat_id 发送消息,但我无法弄清楚。这完全是因为 telegram api 太难理解了。 我用它来向一个 chat_id 发送消息:
https://api.telegram.org/botTOKKEN/sendMessage?chat_id=xxxxxxx&text=Hi+John
没有办法让机器人向多个聊天 ID 发送消息,但现在有一个技巧可以解决这个问题:)
为什么不向每个聊天 ID 发送一条消息?!
让我们用 PHP 来看看这个例子:
<?php
$message = "Hi John";
$chatIds = array("xxx","xxx","xxx"); // AND SOME MORE
foreach($chatIds as $chatId) {
// Send Message To chat id
file_get_contents("https://api.telegram.org/botTOKKEN/sendMessage?chat_id=$chatId&text=".$message);
}
?>
除了 @farsad 的答案之外:在 foreach 循环中添加 sleep(NUMBER_OF_SECONDS); 以免被电报禁止。因为 Telegram API 中的机器人每秒发送的消息数量限制为 30 条
foreach 或任何其他大量 sendMessage 的问题是 API 不允许每秒向不同用户发送超过 30 条消息。
根据电报网站中的机器人常见问题解答:
我如何一次向我的机器人的所有订阅者发送消息?
不幸的是,目前我们没有发送批量消息的方法,例如通知。我们将来可能会添加一些类似的内容。
为了避免在发送大量通知时达到极限,请考虑将它们分散到更长的时间间隔,例如8-12 小时。 API 不允许每秒向不同用户发送超过 30 条消息,如果超出这个范围,您将开始收到 429 错误。 您无法通过这种方式向所有用户发送消息。
以及机器人常见问题解答页面中的解决方案:
我的机器人已达到极限,我该如何避免这种情况?
在特定聊天中发送消息时,请避免每秒发送多于一条消息。我们可能允许超过此限制的短突发,但最终您将开始收到 429 错误。
如果您要向多个用户发送批量通知,则 API 不允许每秒发送超过 30 条消息左右。考虑将通知分散在 8-12 小时的较长时间间隔内,以获得最佳效果。
另请注意,您的机器人每分钟无法向同一组发送超过 20 条消息。
您的代码检查有错误 应该是这样的
<?php
$message = "Hi John";
$chatIds = array("xxx","xxx","xxx"); // AND SOME MORE
foreach($chatIds as $chatId) {
// Send Message To chat id
file_get_contents("https://api.telegram.org/botTOKKEN/sendMessage?chat_id=" . $chatId . "&text=".$message);
}
?>
?>
仅供您参考。
我们可以将chat_ids输入数据库。查询并循环消息部分,以便使用 sleep() 将消息发送到多个 chat-id。
我不是程序员。所以我无法举例。