Этот бот-телеграмма пытается заблокировать заранее определенные идентификаторы пользователей при каждом добавлении в группу. Идентификаторы перечислены в файле. Я использую этот класс бота для телеграммы и метод webhook .
$telegram = new Telegram($bot_id);
$chat_id = $telegram->ChatID();
$button = $telegram->text();
if ($button == "DoBan"){
$fn = fopen("ids.txt","r");
while(! feof($fn)) {
$result = fgets($fn);
$int_result = (int)$result;
$content = array('chat_id' => $chat_id, 'user_id' => "$int_result");
$telegram->kickChatMember($content);
}
fclose($fn);
$content2 = array('chat_id' => $chat_id, 'text' => "ban done! ");
$telegram->sendMessage($content2);
die();
}
Но здесь есть две проблемы:
1. Если идентификаторы указаны в наш файл не был забанен до того, как бот группы был добавлен, бот не может забанить ни одного из них. Дело в том, что если вы забаните идентификаторы вручную в любой другой группе и выполните бан для бота, один раз вы сможете забанить эти идентификаторы в любой другой группе после этого.
2. Когда бот получает «DoBan» после того, как он заканчивает бан он застревает в каком-то l oop и печатает "бан сделан!" снова и снова, как будто он делает бан снова и снова.
ОБНОВЛЕНИЕ:
На основании дальнейших исследований есть две причины для двух выраженных проблем
Для первой проблемы: если ваш бот не видел пользователя ID, прежде чем он не может забанить его. Поэтому бот должен где-то сначала увидеть пользователя, либо запустив бот, либо увидев этого пользователя в одной группе с ботом
Для второй проблемы: В случае неудачного запроса API-интерфейс бота telegram считает, что что-то не так с вашим сервером и повторяет запросы каждые несколько секунд, поэтому вам нужно добавить header("HTTP/1.1 200 OK");
к вашему сценарию или сделать приращение на update_id
Так что это обновленный код
$telegram = new Telegram($bot_id);
header("HTTP/1.1 200 OK");
http_response_code(200);
$chat_id = $telegram->ChatID();
$result = $telegram->getData();
$text = $result['message'] ['text'];
$update = $result ['update_id'];
$result ['update_id'] = ++$update;
if ($button == "DoBan"){
$fn = fopen("ids.txt","r");
while(! feof($fn)) {
$result = fgets($fn);
$int_result = (int)$result;
$content = array('chat_id' => $chat_id, 'user_id' => "$int_result");
$telegram->kickChatMember($content);
}
fclose($fn);
$content2 = array('chat_id' => $chat_id, 'text' => "ban done! ");
$telegram->sendMessage($content2);
die();
}
Так Мне нужно знать, как мне точно увеличить update_id
или как правильно добавить header("HTTP/1.1 200 OK");
, потому что проблемы все еще существуют.