EnotPRO Logo EnotPRO

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: 7d
  • revoke_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

🔗 Ссылка на официальную документацию

banChatMember — Telegram Bot API

© 2025 EnotPRO. Все права защищены.