【发布时间】:2023-12-02 02:09:01
【问题描述】:
你好,所以我正在尝试向我的电报机器人添加广播命令,该命令向我的所有机器人订阅者广播特定消息,其 id 保存在 mysql 数据库中,但循环似乎永远不会结束并在随机发送消息后重新启动
例如:机器人开始发送消息,然后在 987 个用户处停止,然后 一遍又一遍地重新启动循环,或者重新启动不同数量的用户
这是我正在使用的代码:
<?php
http_response_code(200);
$admin_id = ''; // my id
$bot_token = ''; // my bot token
$message_object = json_decode(file_get_contents("php://input"),true);
$message_text = $message_object['message']['text'];
if(startsWith($message_text, '/broadcast') !== false){
$text_to_send = trim(str_replace('/broadcast','',$message_text));
$start_message = sendmessage($admin_id, 'Broadcasting Started', $bot_token, 'markdown');
$start_message_id = $start_message['result']['message_id'];
$query = mysqli_query($con, "SELECT * FROM users");
if($query and mysqli_num_rows($query) >= 1){
$all_users = mysqli_fetch_all($query,MYSQLI_ASSOC);
$sent = 0;
foreach($all_users as $user){
$user_id = $user['userid'];
$sent += 1;
sendmessage($user_id,$text_to_send,$bot_token,'markdown');
sleep(1);
editmessage($admin_id,"Messages Sent : $sent",$bot_token,$start_message_id);
}
sendmessage($admin_id,'finished broadcasting '.$sent.' messages',$bot_token,'markdown');
}
}
?>
而且我从来没有设法到达循环的末尾以获取广播完成消息并陷入无限循环
当我尝试导入超过 50 项的数据量时会发生同样的问题,因此 mysql 数据库使用与广播一相同的方法
【问题讨论】:
标签: php telegram telegram-bot php-telegram-bot telegram-webhook