Описание
Используйте этот метод, чтобы забанить пользователя в группе, супергруппе или канале. В случае супергрупп и каналов пользователь не сможет вернуться в чат самостоятельно, используя пригласительные ссылки и т.д., если сначала не будет 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 - Метод снимает бан с пользователя в супергруппе или канале, позволяя ему присоединиться по ссылке, но не возвращая автоматически.