BanChatMember
BanChatMember — блокирует пользователя в чате/канале.
📝 Назначение
Используется для модерации: блокировка нарушителей, автоматические баны по условиям, временная изоляция пользователя.
Эффект от блокировки:
- Пользователь не может отправлять сообщения
- Пользователь не может просматривать историю чата (если настроено соответствующим образом)
- При указании
revoke_messages— история переписки группы будет скрыта для пользователя при повторном вступлении.
💡 Совет: Для снятия блокировки используйте реакцию UnBanChatMember.
⚙️ Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Integer/String | ✅ Да | ID чата или @username канала |
| user_id | Integer | ✅ Да | ID пользователя для блокировки |
| until_date | String | ❌ Нет | Срок снятия блокировки. Пустое значение — блокировка навсегда |
| revoke_messages | Boolean | ❌ Нет | Безвозвратно скрывает все сообщения для пользователя в базовой группе. |
📅 Формат until_date
Параметр принимает срок в том же формате, что «Динамическая отсрочка» отложенных действий. Макрос для этого не нужен — достаточно написать срок прямо в поле.
| Формат | Пример | Результат |
|---|---|---|
| Относительный срок | 1h, 30m, 7d |
Через указанное время |
| Комбинированный | 1d2h30m15s |
Через день, 2 часа, 30 минут и 15 секунд |
| Полная дата и время | 12.05.2025 15:30 |
В указанный момент |
| Дата без года | 12.05 15:30 |
Ближайшее 12 мая |
| Только время | 15:30 |
Сегодня в 15:30, а если время уже прошло — завтра |
| Особые значения | завтра 08:00, выходной 10:00, будний 09:00 |
В указанный момент |
| День недели | понедельник 09:30, пн 09:30 |
Ближайший такой день |
| Unix-время | 1748880000 |
Конкретный момент, в секундах |
Единицы относительного срока: s — секунды, m — минуты, h — часы, d — дни. Можно и кириллицей: с, м, ч, д — например 1ч30м.
💡 Совет: Оставьте поле пустым, чтобы заблокировать навсегда.
⚠️ Важно: Срок в прошлом реакция не примет — она завершится ошибкой, которая видна в логах бота.
⚠️ Ограничение Telegram: Срок короче 30 секунд или длиннее 366 дней Telegram считает блокировкой навсегда. Ошибки при этом не будет.
Если срок вычисляется макросом времени, подойдёт !{time|value:now; plus:1D; output_format:unix}. Учтите, что макрос при ошибке возвращает пустую строку, а пустой until_date означает блокировку навсегда.
🔐 Требуемые права бота
| Право | Описание |
|---|---|
| Администратор чата | Бот должен быть администратором чата |
| can_restrict_members | Право блокировать участников (обязательно) |
💡 Совет: Проверить права бота можно через реакцию
GetChatMemberдля самого бота или в разделе/adm→ Чаты/Каналы.
🧪 Примеры использования
Пример 1: Бессрочная блокировка с удалением сообщений
Задача: Забанить пользователя навсегда и удалить все его сообщения.
Параметры BanChatMember:
chat_id:${chat.id}user_id:${user.id}revoke_messages:true
Пример 2: Временная блокировка на 1 час
Задача: Забанить пользователя на 1 час без удаления сообщений.
Параметры BanChatMember:
chat_id:${chat.id}user_id:${user.id}until_date:1h
Пример 3: Блокировка на 7 дней с удалением сообщений
Задача: Забанить пользователя на неделю и удалить все его сообщения.
Параметры BanChatMember:
chat_id:${chat.id}user_id:${user.id}until_date:7drevoke_messages:true
Пример 4: Блокировка другого пользователя (администратор)
Задача: Администратор наказывает пользователя по команде /ban @username 2h.
Параметры BanChatMember:
chat_id:${chat.id}user_id:${target_user.id}(извлечён из команды черезTakeUser)until_date:2h
🔄 Особенности поведения
| Ситуация | Поведение |
|---|---|
| Блокировка пользователя, которого уже нет в чате | Пользователь будет заблокирован, но не сможет вернуться до снятия блокировки |
| Блокировка владельца чата | Невозможна. Telegram не позволяет забанить создателя чата |
| Блокировка администратора другим администратором | Возможно только если у бота есть право can_restrict_members и уровень прав достаточен |
| Блокировка бота | Невозможна (Telegram запрещает) |
| until_date в прошлом | Реакция завершается ошибкой, блокировка не применяется |
| until_date короче 30 секунд или длиннее 366 дней | Telegram блокирует навсегда |
| until_date пустой | Блокировка навсегда |
🔗 Связанные реакции
| Реакция | Назначение |
|---|---|
| UnBanChatMember | Снять блокировку |
| RestrictChatMember | Ограничить, но не блокировать |
| BanBotUser | Заблокировать пользователя в боте (не в чате) |
🔗 Связанные разделы
| Раздел | Описание |
|---|---|
| Обработчики «Вход/выход» | Отслеживание банов |
| Макрос time | Генерация until_date |