UnBanChatMember
UnBanChatMember — разблокирует ранее заблокированного пользователя в чате/канале.
📝 Назначение
Используется для снятия блокировки с пользователя, который был забанен через BanChatMember. После разблокировки пользователь может вернуться в чат (по ссылке-приглашению или через повторное добавление).
Когда это нужно:
- Истекло время наказания — снять блокировку
- Администратор решил помиловать пользователя
- Ошибочная блокировка — отменить её
⚠️ Важно: По умолчанию эта реакция удаляет пользователя из чата, если он там есть. Если нужно только снять блокировку, но не удалять из чата, используйте параметр
only_if_banned.
⚙️ Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat.id | Integer/String | ✅ Да | ID чата/канала или @username |
| user.id | Integer | ✅ Да | ID пользователя для разблокировки |
| only_if_banned | Boolean | ❌ Нет | Если true — разблокирует только забаненных пользователей, не удаляя из чата |
🔐 Требуемые права бота
| Право | Описание |
|---|---|
| Бот — администратор чата | Обязательное условие |
| can_restrict_members | Право блокировать и разблокировать участников |
💡 Совет: Без права
can_restrict_membersреакция вызовет ошибку.
⚠️ Особенности поведения (параметр only_if_banned)
Telegram API по умолчанию ведёт себя специфически:
Без only_if_banned |
С only_if_banned: true |
|---|---|
| Снимает блокировку | Снимает блокировку |
| Удаляет пользователя из чата (если он там есть) | Не удаляет пользователя из чата |
| Пользователь может вернуться по ссылке | Пользователь остаётся в чате (если был участником) |
💡 Совет: Если вы хотите просто разблокировать пользователя (например, после временного бана), используйте
only_if_banned: true. Если хотите удалить пользователя из чата и снять блокировку — не указывайте этот параметр.
🧪 Примеры использования
Пример 1: Простая разблокировка (с удалением из чата)
Задача: Разблокировать пользователя и удалить его из чата (он сможет вернуться по ссылке).
Параметры UnBanChatMember:
chat.id:${chat.id}user.id:${user.id}
Пример 2: Разблокировка без удаления из чата
Задача: Снять блокировку, но оставить пользователя в чате (если он там есть).
Параметры UnBanChatMember:
chat.id:${chat.id}user.id:${user.id}only_if_banned:true
Пример 3: Разблокировка после временного бана
Задача: Автоматически разблокировать пользователя после истечения срока бана.
Обработчик: Расписание или отложенное действие
Реакции:
UnBanChatMember→
chat.id:${chat.id}user.id:${user.id}only_if_banned:true
SendMessage→ (в личку пользователю)Вы разблокированы в чате.
Пример 4: Разблокировка по команде администратора
Задача: Администратор может разблокировать пользователя командой /unban @username.
Обработчик: Команда /unban @username
Реакции:
TakeUser→ получить ID пользователя по usernameUnBanChatMember→
chat.id:${chat.id}user.id:${target.from.id}only_if_banned:true
SendMessage→ текст:Пользователь разблокирован.
Пример 5: Разблокировка всех забаненных пользователей
Задача: Снять бан со всех пользователей, которые были забанены (требуется предварительно получить список).
Реакции:
GetChatAdministrators→ (или загрузить список из кэша)- (Цикл по забаненным пользователям)
UnBanChatMember→ для каждого пользователя сonly_if_banned: true
🔄 Особенности поведения
| Ситуация | Поведение |
|---|---|
| Пользователь не забанен | Реакция может не иметь эффекта или удалить из чата (без only_if_banned) |
| Пользователь не в чате | Реакция просто снимает бан (пользователь сможет войти по ссылке) |
| Бот не администратор | Реакция вызовет ошибку |
| У бота нет права can_restrict_members | Реакция вызовет ошибку |
| only_if_banned: true для незабаненного | Ничего не делает |
🔗 Связанные реакции
| Реакция | Назначение |
|---|---|
| BanChatMember | Заблокировать пользователя |
| RestrictChatMember | Ограничить пользователя (не блокировать) |
| GetChatMember | Проверить статус пользователя (забанен или нет) |
🔗 Связанные разделы
| Раздел | Описание |
|---|---|
| Чаты/Каналы в админке | Управление чатами через интерфейс |