написал бота который должен блокировать абсолютно всех ново вступивших в чат (исключая тех username которых есть в базе)
Вот мой код:
$data = json_decode(file_get_contents('php://input'));
if (isset($data->{'message'}->{'chat'}->{'type'}) && $data->{'message'}->{'chat'}->{'type'} == 'supergroup')
{
$id_user = $data->{'message'}->{'new_chat_members'}->{'id'};
$id_chat = $data->{'message'}->{'chat'}->{'id'};
$username_chat = $data->{'message'}->{'chat'}->{'username'};
$username_user = $data->{'message'}->{'new_chat_members'}->{'username'};
$query_count = mysqli_query($connect, "SELECT * FROM `telegram` WHERE `chat_username` = '".$username_chat."' AND `username` = '".$username_user."'");
$query_count = mysqli_num_rows($query_count);
if (!($query_count))
file_get_contents("https://api.telegram.org/botHASH/restrictChatMember?chat_id=".$id_chat."&user_id=".$id_user);
}
Проблема в том что она не понятно работает, тех кто есть в базе он не банит четко, а вот обычных юзеров через раз, то забанит, то нет.
В чем тут проблема ?
Заранее спасибо!
Это потому, что вы берете только один invite, а вы должны принимать более 1 invite одновременно.
$data->message->new_chat_members - массив, в этом массиве все users которые были приглашены.
Исправил ваш код:
if (isset($data->message->chat->type) && $data->message->chat->type === 'supergroup')
{
$id_chat = $data->message->chat->id;
$username_chat = $data->message->chat->username;
foreach ($data->message->new_chat_members as $value)
{
$query_count = mysqli_query($connect, "SELECT * FROM `tm` WHERE `chat_username` = '".$username_chat."' AND `username` = '".$value->username."'");
$query_count = mysqli_num_rows($query_count);
if (!($query_count))
file_get_contents("https://api.telegram.org/botHASH/restrictChatMember?chat_id=".$id_chat."&user_id=".$value->id);
}
}
Достаточно сложно ответить причину без логирования в данном случае.
Я бы действовал следующим образом:
Проверил что присылает база на этот запрос. может статься что вы не все знаете о данных которые хранятся у вас базе :-)
$username_user = 'тут имя пользователя которого не забанили хотя должны были';
$username_chat = 'тут соответственно чат пользователя имя которого написали выше';
$query_count = mysqli_query($connect, "SELECT * FROM `telegram` WHERE `chat_username` = '".$username_chat."' AND `username` = '".$username_user."'");
// и дальше смотрим что нам приезжает из базы. если Ваш if не отрабатывает значит база шлет какие-то данные, надо понять что там, следовательно var_dump в помощь.
var_dump($query_count);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вот тут по сути алгоритм один и тот жеПодключил библиотеку, которая работает с изображениями
Мне нужно програмно изменить текст в QTextEditИ не знаю как к нему обратится, точнее к его тексту