问题描述
我用 php 编写电报机器人.我保存用户 chatid 以发送消息;使用此命令发送消息:
I write telegram bot with php . I save users chatid for send message ; use this command for send message :
/admin sendall:hellow
并在 php 应用程序中使用此代码:
and in php app use this code :
case '/admin':
if ($chat_id == 'my chatid') {
$array = str_replace('/admin', '', $message);
$array = trim($array);
$array = explode(':', $array);
$Admin = new AdminCommand();
$Admin->getCommand($array[0], $array[1]);
} else {
sendMessage($chat_id, 'block ');
}
break;
AdminCommand 类:
AdminCommand class:
class AdminCommand extends Database {
public function getCommand($command, $action = null) {
switch ($command) {
case 'sendall':
$this->sendall($action);
break;
default:
# code...
break;
}
}
public function sendall($message) {
$sql = $this->con->prepare('SELECT * FROM `users`');
$sql->execute();
$res = $sql->fetchAll();
foreach ($res as $row) {
sendMessage($row['chatid'], $message);
}
exit();
}
}
发送消息函数:
function sendMessage($chatId, $message) {
$url = WEBSITE . "/sendMessage?chat_id=" . $chatId . "&text=" . urlencode($message);
file_get_contents($url);
}
大多数时候它工作正常,但有时在向所有用户发送消息后会一遍又一遍地重复,只要我删除数据库就不会停止.有什么问题?
Most of the times it's work fine but sometimes after send message to all users repeats that again and again and don't stop As long as i'm delete database .what's the problem ?
推荐答案
正如我在这个 answer 和 机器人电报网站中的常见问题页面:
As i explained in this answer and in Bots FAQ page in telegram site:
如何一次向我的机器人的所有订阅者发送消息?
不幸的是,目前我们没有发送批量消息的方法,例如通知.我们将来可能会按照这些方式添加一些内容.
为了避免在发送大量通知时达到我们的限制,请考虑将它们分散到更长的时间间隔,例如8-12 小时. API 不允许每秒向不同用户发送超过 30 条消息,如果超过这个时间,您将开始收到 429 条错误消息.您不能以这种方式向所有用户发送消息.
和机器人常见问题页面中的解决方案:
and solution in Bots FAQ page:
我的机器人达到了限制,我该如何避免?
在特定聊天中发送消息时,避免每秒发送超过一条消息.我们可能允许超过此限制的短时间突发,但最终您将开始收到 429 个错误.
如果您向多个用户发送批量通知,API 将不允许每秒超过 30 条消息.考虑在 8 到 12 小时的大间隔内分散通知以获得最佳效果.
另请注意,您的机器人每分钟将无法向同一群组发送超过 20 条消息.
这篇关于在电报机器人中发送消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!