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_messagescan_send_audioscan_send_documentscan_send_photoscan_send_videoscan_send_video_notescan_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:1hcan_send_photos:falsecan_send_videos:falsecan_send_audios:falsecan_send_documents:falsecan_send_voice_notes:falsecan_send_video_notes:false
Пример 3: Полная блокировка отправки сообщений (только чтение)
Задача: Запретить пользователю отправлять любые сообщения на 7 дней.
Параметры RestrictChatMember:
chat_id:${chat.id}user_id:${user.id}until_date:7dcan_send_messages:falsecan_send_other_messages:false
Пример 4: Разрешить только текстовые сообщения и ссылки
Задача: Пользователь может писать текст и вставлять ссылки, но не может отправлять медиа.
Параметры RestrictChatMember:
chat_id:${chat.id}user_id:${user.id}can_send_messages:truecan_add_web_page_previews:truecan_send_photos:falsecan_send_videos:falsecan_send_audios:falsecan_send_documents:falsecan_send_voice_notes:falsecan_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 |
| Обработчики «Вход/выход» | Отслеживание изменений статуса |