> ## Content Index
> Fetch the complete content index at: https://admin.kod.ru/llms.txt
> Use this file to discover other available public pages before exploring further.

# Боты Telegram могут без разрешения удалять подписчиков в канале. Как с этим бороться?
- URL: https://admin.kod.ru/boty-telegram-udalenie-podpischikov/
- Published: 2023-10-02T10:22:27.000Z
- Updated: 2023-10-02T13:23:40.000Z
- Description: При добавлении в канал бота нельзя ограничить его в правах на удаление подписчиков.
- Author: Влад Войтенко
- Tags: Полезное

При добавлении в канал бота нельзя ограничить его в правах на удаление подписчиков, [рассказал](https://habr.com/ru/articles/764608/?ref=admin.kod.ru) на «Хабре» пользователь @Asen, исследующий механизмы работы различных приложений.

По его словам, любые боты в Telegram-канале, которые технически в мессенджере разрешено добавлять только как администраторов, может «вычистить всю аудиторию канала за считаные минуты».

![](https://admin.kod.ru/content/images/2023/10/--------1.png)

- Обычно каналы используют ботов для различных действий, например, планирования постов, сбора аналитики и автоматизации публикаций рекламы.
- Часто используются и боты от сервисов по типу Telemetr, Telepost. Администраторы каналов уверены, что боты будут выполнять только заявленные действия.
- Исследователь уверяет, что даже забрав у бота все права, он всё ещё будет оставаться администратором и иметь возможность читать любую информацию о канале, которая доступна администраторам.

Кроме того, у него останется и возможность удалять подписчиков:

> С точки зрения Telegram API удаление подписчика из чата выглядит как блокировка с помощью API-метода [editBanned](https://core.telegram.org/method/channels.editBanned?ref=admin.kod.ru). То есть технически у всех ботов, которые попадают в канал, есть «несгораемые» права по блокировке участников. Самое странное в этой ситуации то, что в Telegram API присутствует [«скрытая» возможность](https://core.telegram.org/constructor/chatAdminRights?ref=admin.kod.ru) отнимать у ботов права на удаление подписчиков, но в официальной версии Telegram она скрыта из интерфейса.

![](https://admin.kod.ru/content/images/2023/10/--------2.png)

Исследователь объяснил, что если сделать этот API-запрос вручную, «насильно» выставив настройку `ban_users`, то можно обнаружить, что сервера Telegram проигнорируют её:

> Скорее всего, из-за этого настройка и отсутствует в официальных клиентах, хотя появилась она очень давно — можно посмотреть по [истории TL Layer](https://core.telegram.org/constructor/chatAdminRights?ref=admin.kod.ru).

### Действительно ли всё так плохо?

Константин Цуканов, технический директор конструктора ботов [Botmother](https://botmother.com/ru?ref=admin.kod.ru) подтвердил «Коду Дурова», что соответствующей настройки при добавлении бота действительно нет — удаление пользователей и правда остаётся ему доступно:

![](https://admin.kod.ru/content/images/2023/10/--------3.png)

Галочка на право блокировки у бота в группе

> Если посмотреть в логах недавних действий администраторов, то бот добавляется с правами блокировки, даже если выключить все переключатели. При этом, если добавлять бота администраторов **в группу, а не канал**, там переключатель на запрет блокировки пользователей будет.

![](https://admin.kod.ru/content/images/2023/10/--------6.png)

Бот добавлен без прав, но право блокировки у него осталось 

Цуканов подчеркнул, что можно легко выяснить, какой бот начал удалять пользователей из канала, посетив логи (раздел «Недавние действия» в меню «Администраторы»). Такие пользователи появляются в списке заблокированных на канале — «с проблемами, но их можно оттуда достать».

### Как решается проблема?

Технический директор конструктора ботов Botmother Константин Цуканов заявил «Коду Дурова», что для подстраховки можно создать собственного бота, который будет собирать идентификаторы всех пользователей, которые подписываются на канал:

> В случае появления бота, который устроит массовый бан, можно заметить его в логах и удалить, а затем при помощи своего бота по этой базе разблокировать попавших под удаление пользователей через [Telegram Bot API](https://core.telegram.org/bots/api?ref=admin.kod.ru).

В своей заметке @Asen подчеркнул, что Telegram API сегодня не позволяет одним ботам блокировать других ботов. Именно поэтому скрипт мониторинга необходимо запускать от имени Telegram-пользователя:

> К счастью, банить подписчиков боты могут только пачками по 200 (ограничение Telegram на просмотр последних подписчиков канала), поэтому как только какой-то бот забанит первого подписчика, такого бота можно незамедлительно выбрасывать из канала. Это позволит не потерять всех подписчиков за несколько секунд.

Исследователь тоже советует добавить в канал своего бота, который будет мониторить удаления подписчиков другими ботами. Если было обнаружено удаление, следует удалить обнаруженного бота от имени второго аккаунта — пользователя.

Примерный код с использованием библиотеки [Pyrogram ](https://docs.pyrogram.org/?ref=admin.kod.ru)для защиты канала:

`# аккаунт бота`  
`bot = Client(...)`

`async def banBastard(channelId, botId):`  
` # запускаем аккаунт пользователя для удаления паршивца`  
` user = Client(...)`  
` async with user:`  
` await user.ban_chat_member(channelId, botId)`

`# callback получения нотификаций об удалении пользователей в каналах, куда добавлен бот`  
`@bot.on_chat_member_updated()`  
`async def onMemberHandler(client, update):`  
` banned = update.new_chat_member.status == enums.ChatMemberStatus.BANNED`  
` byBot = update.new_chat_member.restricted_by.is_bot`  
` if banned and byBot:`  
` await banBastard(update.chat.id,` `update.new_chat_member.restricted_by.id)`

`# запускаем бота для прослушивания нотификаций об удалении пользователей`  
`async def main():`  
` async with bot:`  
` while True:`  
` await asyncio.sleep(1)`

`bot.run(main())`