EnotPRO Logo EnotPRO

RestrictChatMember

RestrictChatMember — метод используется для ограничения доступа пользователя в супергруппе.

Назначение

Позволяет временно или постоянно ограничить возможности участника: запретить отправку определённых типов сообщений, приглашение новых участников, изменение информации о чате и т.д.

Параметры

Параметр Тип Обязательный Описание
chat_id Integer/String ✅ Да ID чата или @username группы
user_id Integer ✅ Да ID пользователя для ограничения
until_date String ❌ Нет Срок снятия ограничений. Пустое значение — ограничение навсегда

Права (разрешения)

Все параметры прав имеют тип Boolean и являются опциональными.

Отправка сообщений

Параметр Описание Значение по умолчанию
can_send_messages Разрешена отправка текста, контактов, розыгрышей, списков победителей, счетов, мест и объектов false
can_send_audios Разрешена отправка аудио false
can_send_documents Разрешена отправка документов false
can_send_photos Разрешена отправка фото false
can_send_videos Разрешена отправка видео false
can_send_video_notes Разрешена отправка видеосообщений («кружков») false
can_send_voice_notes Разрешена отправка голосовых сообщений false
can_send_polls Разрешена отправка опросов и чек-листов false
can_send_other_messages Разрешена отправка анимаций, игр, стикеров и использование встроенных ботов false
can_add_web_page_previews Разрешено добавление превью веб-страниц к сообщениям false

Управление чатом

Параметр Описание Значение по умолчанию
can_change_info Разрешено изменение названия, фото и других настроек чата. Не применяется в публичных супергруппах false
can_invite_users Разрешено приглашение новых пользователей false
can_pin_messages Разрешено закрепление сообщений. Не применяется в публичных супергруппах false
can_manage_topics Разрешено создание тем форума. По умолчанию равно значению can_pin_messages false

⚠️ Важно: Если параметр не указан, он считается запрещённым (false). Чтобы разрешить действие, установите параметр в true.

Параметр use_independent_chat_permissions

Передайте значение true, если разрешения чата установлены независимо. В противном случае разрешения can_send_other_messages и can_add_web_page_previews будут подразумевать разрешения:

  • can_send_messages
  • can_send_audios
  • can_send_documents
  • can_send_photos
  • can_send_videos
  • can_send_video_notes
  • can_send_voice_notes

Разрешение can_send_polls будет подразумевать разрешение can_send_messages.

📅 Формат 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 Право ограничивать участников (обязательно)

⚠️ Важно: Без права can_restrict_members реакция вызовет ошибку.

🧪 Примеры использования

Пример 1: Бессрочное ограничение (только текст)

Задача: Разрешить пользователю отправлять только текстовые сообщения, запретить всё остальное.

Параметры RestrictChatMember:

  • chat_id: ${chat.id}
  • user_id: ${user.id}
  • can_send_messages: true
  • (остальные права не указаны — false по умолчанию)

Пример 2: Временное ограничение на 1 час

Задача: Запретить пользователю отправлять медиа на 1 час.

Параметры RestrictChatMember:

  • chat_id: ${chat.id}
  • user_id: ${user.id}
  • until_date: 1h
  • can_send_photos: false
  • can_send_videos: false
  • can_send_audios: false
  • can_send_documents: false
  • can_send_voice_notes: false
  • can_send_video_notes: false

Пример 3: Полная блокировка отправки сообщений (только чтение)

Задача: Запретить пользователю отправлять любые сообщения на 7 дней.

Параметры RestrictChatMember:

  • chat_id: ${chat.id}
  • user_id: ${user.id}
  • until_date: 7d
  • can_send_messages: false
  • can_send_other_messages: false

Пример 4: Разрешить только текстовые сообщения и ссылки

Задача: Пользователь может писать текст и вставлять ссылки, но не может отправлять медиа.

Параметры RestrictChatMember:

  • chat_id: ${chat.id}
  • user_id: ${user.id}
  • can_send_messages: true
  • can_add_web_page_previews: true
  • can_send_photos: false
  • can_send_videos: false
  • can_send_audios: false
  • can_send_documents: false
  • can_send_voice_notes: false
  • can_send_video_notes: false

🔄 Особенности поведения

Ситуация Поведение
Параметр не указан Считается false (запрещено)
Бот не администратор Реакция вызовет ошибку
У бота нет права can_restrict_members Реакция вызовет ошибку
Публичная супергруппа can_change_info и can_pin_messages не применяются
until_date в прошлом Реакция завершается ошибкой, ограничение не применяется
until_date короче 30 секунд или длиннее 366 дней Telegram ограничивает участника навсегда
until_date пустой Ограничение навсегда
Попытка ограничить владельца чата Невозможно (Telegram запрещает)

⚠️ Частые ошибки и их решение

Ошибка 1: Ограничение не применяется

Причина: Бот не является администратором чата или у него нет права can_restrict_members.

Решение: Добавьте бота в администраторы чата и убедитесь, что у него есть право ограничивать участников.

Ошибка 2: Неверный формат until_date

Причина: Значение не подходит ни под один из поддерживаемых форматов — например, написано 2 часа, 1D или 0.

Решение: Используйте один из форматов из таблицы выше, например 2h. Реакция при неверном формате завершается ошибкой, которая видна в логах бота.

Ошибка 3: Ограничение выдано навсегда вместо временного

Причина: Значение until_date оказалось пустым. Так бывает, если срок подставляется переменной, которой нет, или макросом времени, который не отработал — например, из-за незнакомой единицы в plus.

Решение: Проверьте, что подстановка возвращает непустое значение. Проще всего указать срок прямо в поле — 7d вместо макроса.

🔗 Связанные реакции

Реакция Назначение
BanChatMember Полная блокировка пользователя
UnBanChatMember Снятие блокировки
GetChatMember Проверка статуса пользователя
SetChatPermissions Глобальные разрешения для всех участников

🔗 Связанные разделы

Раздел Описание
Чаты/Каналы в админке Управление чатами через интерфейс
Макрос time Генерация until_date
Обработчики «Вход/выход» Отслеживание изменений статуса

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

restrictChatMember — Telegram Bot API

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