Метод banChatMember

Метод для блокировки пользователя в чате с возможностью удаления его сообщений и установки срока бана.

Описание

Используйте этот метод, чтобы забанить пользователя в группе, супергруппе или канале. В случае супергрупп и каналов пользователь не сможет вернуться в чат самостоятельно, используя пригласительные ссылки и т.д., если сначала не будет unbanChatMember. Бот должен быть администратором в чате для работы этого метода и иметь соответствующие права администратора. Возвращает True при успешном выполнении.

Параметр Тип Обязательный Описание
chat_id Integer или String Да Уникальный идентификатор целевой группы или имя пользователя целевой супергруппы или канала (в формате @channelusername)
user_id Integer Да Уникальный идентификатор целевого пользователя
until_date Integer Опционально Дата, когда пользователь будет разбанен; Unix-время. Если пользователь забанен более чем на 366 дней или менее чем на 30 секунд от текущего времени, он считается забаненным навсегда. Применяется только для супергрупп и каналов.
revoke_messages Boolean Опционально Передайте True, чтобы удалить все сообщения из чата для удаляемого пользователя. Если False, пользователь сможет видеть сообщения в группе, отправленные до его удаления. Всегда True для супергрупп и каналов.

Примеры

php

<?php

$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";

// Данные для бана пользователя
$chatId = -1001234567890; // ID группы/супергруппы/канала или @username
$userId = 123456789; // ID пользователя, которого нужно забанить
$untilDate = time() + 3600; // Бан на 1 час (текущее время + 3600 секунд)
$revokeMessages = true; // Удалить сообщения пользователя

// Подготовка параметров
$params = [
    'chat_id' => $chatId,
    'user_id' => $userId,
    'until_date' => $untilDate,
    'revoke_messages' => $revokeMessages
];

// Отправка запроса
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'banChatMember');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($response === false) {
    echo 'Ошибка cURL: ' . curl_error($ch);
} else {
    $result = json_decode($response, true);
    
    if ($result['ok']) {
        echo "Пользователь успешно забанен!";
    } else {
        echo "Ошибка: " . $result['description'];
    }
}

curl_close($ch);

// Альтернативный вариант с использованием file_get_contents
/*
$query = http_build_query($params);
$response = file_get_contents($apiUrl . 'banChatMember?' . $query);
$result = json_decode($response, true);

if ($result['ok']) {
    echo "Пользователь успешно забанен!";
} else {
    echo "Ошибка: " . $result['description'];
}
*/

?>

python

import asyncio
from telegram import Bot
from datetime import datetime, timedelta

async def ban_user_example():
    # Инициализация бота с вашим токеном
    bot = Bot(token="YOUR_BOT_TOKEN")
    
    # Пример 1: Бан пользователя навсегда в группе/супергруппе
    await bot.ban_chat_member(
        chat_id=-1001234567890,  # ID чата или @username
        user_id=123456789,        # ID пользователя для бана
        revoke_messages=True      # Удалить все сообщения пользователя
    )
    
    # Пример 2: Бан пользователя на определенный срок
    # Бан на 7 дней (Unix timestamp)
    until_date = int((datetime.now() + timedelta(days=7)).timestamp())
    
    await bot.ban_chat_member(
        chat_id="@mygroup",       # Используем username
        user_id=987654321,
        until_date=until_date,    # Дата разбана
        revoke_messages=True
    )
    
    # Пример 3: Бан в канале
    await bot.ban_chat_member(
        chat_id=-1005555555555,   # ID канала
        user_id=555555555,
        revoke_messages=True      # Для каналов всегда True
    )

# Запуск асинхронной функции
if __name__ == "__main__":
    asyncio.run(ban_user_example())

История изменений

  • API 5.3. Добавлен метод banChatMember

Дополнительно

  • unbanChatMember - Метод снимает бан с пользователя в супергруппе или канале, позволяя ему присоединиться по ссылке, но не возвращая автоматически.
Комментарии