Telegram 4.1. Новые инструменты для администраторов и не только.
Вышло обновление 4.1 для Telegram. Давайте разберёмся, какие новые сюрпризы преподнесла нам команда Павла Дурова!
Разграничение прав администраторов
Отныне стало возможным настраивать привилегии администраторов в группах и каналов. Например, если Алиса очень обидчива и банит всех направо-налево, просто запретите ей банить людей. Или, если, например, Михаил постоянно забывает снять галочку при закреплении сообщения, уберите у него такую возможность вообще. Удобно? Да! Кстати, разграничивать права можно не только людям, но ещё и ботам.
Администраторам канала тоже можно «обрезать крылья».
Ограничения для пользователей
Кто-то постоянно спамит стикерами? Запретите! Захламляет чат лишними сообщениями? Запретите! Отправляет гифки с расчлёненкой? Фу, запретите это немедленно!
Начиная с Telegram 4.1 создатель и администраторы группы могут запретить пользователям совершать определённые действия, при этом ограничения могут быть как постоянными, так и временными вплоть до конкретной минуты.
Идея для бота-борца со спамом: запрещать всем новоприбывшим отправлять сообщения в течение нескольких минут.
Журнал событий
Иван стал замечать, что в его группе, где постоянно велись оживлённые беседы и споры, стало подозрительно тихо. Он заглянул в свойства группы и ужаснулся, увидев трёхзначное число в графе «забаненные». Кто это сделал? Кто посмел размахивать мечом правосудия? “У меня двенадцать администраторов, угадывать бесполезно, допрашивать тоже…”
К счастью, новый журнал событий в Telegram уже спешит на помощь Ивану. Там вы сможете увидеть все события, произошедшие в группе/канале (удаление и редактирование сообщений, пришедшие и ушедшие пользователи, баны и ограничения, изменение описаний, закрепления сообщений и многое другое) за последние 48 часов (двое суток). Если событий было много, их можно отфильтровать, показав только самое нужное.
Но это ещё не всё…
- Лимит участников в супергруппах увеличен вдвое, с 5000 до 10000. Да, десять тысяч!
- Теперь администраторы группы могут искать по участникам (и как мы раньше без этого жили?)
- При попытке поделиться чем-либо из стороннего приложения в iOS теперь можно выбрать нескольких получателей и оставить комментарий.
- Долгое нажатие на иконку приложения в iOS (3D Touch) предложит выбрать одно из нескольких быстрых действий, например, переход к камере с последующей отправкой снимка в чат.
- Для платежей через ботов в Android добавилась поддержка AndroidPay.
- В ленте изображений Android (нажмите на «скрепку») теперь отображаются видео (помимо фото, разумеется).
- Добавлена поддержка работы через прокси-серверы для обхода блокировок в тех странах, где запрещён Telegram. Чтобы быстро поделиться ссылкой на прокси, достаточно отправить ссылку вида t.me/socks?server=сервер&port=порт&user=логин&pass=пароль
- В приложениях для Android и iOS появилась возможность выключить совершение звонков через Peer-to-Peer (напрямую) через пользователей и совершать их через серверы Telegram. Разговоры по-прежнему будут зашифрованы, зато собеседники не смогут увидеть IP-адреса друг друга. Качество связи при этом может незначительно ухудшиться.
Реализация мута пользователей в групповом чате — Telegram-Bot
Наша библиотека вновь обновлена, посему продолжим учиться создавать Телеграм-ботов. В сегодняшней статье поговорим о реализации системы мута пользователей.
Для понимания принципа работы нашей задумки — пройдёмся по изменениям в библиотеке и её новым возможностям. Изменения коснулись по сути только класса Bot. Итак, начинаем разбирать:
- Метод deleteMessage( $chat_id, $message_id ) — удаляет указанное сообщение
- $chat_id — айди чата
- $message_id — айди сообщения
public function deleteMessage( int $chat_id, int $message_id ) : void < $this->request( 'deleteMessage', [ 'chat_id' => $chat_id, 'message_id' => $message_id ] ); >- Метод memberStatus( $chat_id, $user_id ) — возвращает роль пользователя в чате (может вернуть следующие значения: creator — создатель, left — админ, false — пользователь, null — пользователя нет в чате)
- $chat_id — айди чата
- $user_id — айди пользователя
public function memberStatus( int $chat_id, int $user_id ) : string|false|null < $member_info = $this->request( 'getChatMember', [ 'chat_id' => $chat_id, 'user_id' => $user_id ] ); return ( $member_info['result'] ? ( $member_info['result']['status'] == 'creator' ) ? 'creator' : ( $member_info['result']['status'] == 'left' ? 'left' : false ) : null ); >- Метод mute( $chat_id, $user_id, $unit, $value, $reason ) — мутит пользователя в чате на определённый срок, либо навсегда при неуказании времени
- $chat_id — айди чата
- $user_id — айди пользователя
- $unit — единица измерения времени — дни, часы, минуты, секунды (необязательный параметр)
- $value — срок мута в указанных единицах измерения времени (необязательный параметр)
- $reason — причина (необязательный параметр)
public function mute( int $chat_id, int $user_id, string $unit = '', int $value = 0, string $reason = '' ) : void < [ $arr, $mutes_file ] = $this->blacklistCache( 'mutes' ); $arr[$chat_id . '_' . $user_id] = [ 'duration' => $this->durationCount( $unit, $value ), 'reason' => $reason, ]; $this->record( $arr, $mutes_file ); >- Метод unMute( $chat_id, $user_id ) — размучивает пользователя в групповом чате
- $chat_id — айди чата
- $user_id — айди пользователя
public function unMute( int $chat_id, int $user_id ) : void < [ $arr ] = $this->blacklistCache( 'mutes' ); unset( $arr[$chat_id . '_' . $user_id] ); >- Метод isMuted( $chat_id, $user_id ) — проверяет, замучен ли пользователь (true — замучен, false— не замучен)
- $chat_id — айди чата
- $user_id — айди пользователя
public function isMuted( int $chat_id, int $user_id ) : bool < [ $arr ] = $this->blacklistCache( 'mutes' ); if ( isset( $arr[$chat_id . '_' . $user_id] ) and $arr[$chat_id . '_' . $user_id]['duration'] >= time() ) return true; return false; >- Метод blacklistCache( $type )— возвращает чёрный список пользователей (в нашем случае чёрным списком является список мутов, однако можно реализовать, к примеру, и баны)
- $type — тип чёрного списка (мы рассматриваем муты, поэтому в $type передавать будем строку ‘mutes’)
private function blacklistCache( string $type ) : array < if ( !is_dir( self::$cache_dir ) ) mkdir( self::$cache_dir ); $bans_file = self::$cache_dir . '/' . $type . '.php'; $arr = file_exists( $bans_file ) ? require $bans_file : []; return [ $arr, $bans_file ]; >- Метод durationCount( $unit, $value ) — высчитывает срок пребывания в чёрном списке (в муте) в зависимости от заданной единицы измерения времени (определяется по первой букве: д/d — дни, ч/h — часы, м/m — минуты, с/s— секунды)
- $unit — единица измерения времени — дни, часы, минуты, секунды
- $value — срок мута в указанных единицах измерения времени
private function durationCount( string $unit = '', int $value = 0 ) : int
- Метод record( $arr ) — перекочевал из класса Storage в класс Bot. Принцип работы не изменился, добавился второй аргумент (теперь путь к файлу можно указать вручную)
- $arr — массив для записи в кэш
protected function record( array $arr, string $path ) : false|int
Теперь переходим непосредственно к написанию бота. Создаём php-файл, подключаем библиотеку, создаём экземпляр класса Bot и инициализируем необходимые перменные:
initData( $data ) ->initChatId( $chat_id ) // Инициализируем айди чата, из которого поступают боту сообщения (например, это может быть айди пользователя, написавшего боту) ->initUserId( $user_id ) // Инициализация ID пользователя ->initMessage( $message ); // Инициализируем текст сообщения, которе было отправлено ботуМы уже рассмотрели метод isMuted(), поэтому теперь смело можем его применять. А применять мы его будем для того, чтобы удалять сообщения юзеров, которые были замучены:
if ( $tg->isMuted( $chat_id, $user_id ) ) < $tg->deleteMessage( $chat_id, $data['message']['message_id'] ); >Теперь все сообщения от заткнутых пользователей бот будет автоматически подчищать.
Далее переходим к реализации самого мута. Чтобы такая привилегия была исключительно у администраторов — проверяем роль пользователя, который ввёл команду, с помощью метода memberStatus():
else if ( str_starts_with( $message, '/' ) ) < if ( $tg->memberStatus( $chat_id, $user_id ) ) < // Тут продолжим писать код >>Условие выполнится только если будет возвращена строка (creator или left). Напомню, что для обычных пользователей возвращается false.
Теперь, когда проверка пройдена — можно раздробить команду на части через пробелы и далее обработать её:
$message_data = explode( ' ', $message ); switch ( $message_data[0] ) < case '/мут': < $tg->mute( $chat_id, $data['message']['reply_to_message']['from']['id'], $message_data[2], $message_data[1], $message_data[3] ?? '' ); $tg->reply( 'Пользователь заткнут' ); break; > case '/размут': < $tg->unMute( $chat_id, $data['message']['reply_to_message']['from']['id'] ); $tg->reply( 'Пользователь размучен' ); break; > >И на этом, пожалуй, всё

- 5id15
- 01.09.2022
- 7 571
- 1
- 77
# Команды для администраторов
(opens new window) » в настройках прав пользователей в личном кабинете.
В блоке «Настройки прав пользователей», вы так же можете задать отдельный список пользователей
(opens new window) , которые могут управлять ботом с помощью команд.
# /on – включить бота
Пишется в виде: !on, /on
Как используется: отправить в чат сообщение с командой
Кто использует: администраторы чата
# /off – выключить бота, приостановить его работу
Вы можете выключить бота на время, не удаляя его из чата.
Пишется в виде: !off, /off
Как используется: отправить в чат сообщение с командой
Кто использует: администраторы чата
# /mute (время и username через @ или id) – отправить пользователя в тихий режим, то есть человек не сможет писать в чате
Пишется в виде: !mute, /mute, !мут, /мут
Как используется: ответом на сообщение пользователя; либо вводится команда, юзернейм и время ограничения
Кто использует: администраторы чата
Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пример: !mute 2d 3h @annana – пользователь @annana не сможет писать в чате 2 дня и 3 часа
# /dmute — отправить пользователя в тихий режим на 1 день
Команда /mute и /dmute отличается чем, что последняя автоматически отправляет в тихий режим на 1 день.
Пишется в виде: !dmute, /dmute
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм.
Кто использует: администраторы чата
Пример: !dmute @annana – пользователь @annana не сможет в чате 1 день
# /mute_media (время и указание username через @ или id) – запретить пользователю отправлять фото и видео
Пишется в виде: !mute_media, /mute_media
Как используется: ответом на сообщение пользователя; либо вводится команда, юзернейм и время ограничения
Кто использует: администраторы чата
Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пример: !mute_media 2d @annana – пользователь @annana не сможет отправлять фото и видео в чате 2 дня
# /dmute_media ( указание username через @ или id) – запретить пользователю отправлять фото и видео на 1 день
Пишется в виде: !dmute_media, /dmute_media
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
Пример: !dmute_media @annana – пользователь @annana не сможет отправлять фото и видео в чате 1 день
# /mute_inline (время и указание username через @ или id) – запретить отправлять стикеры и превью ссылок
Пишется в виде: !mute_inline, /mute_inline
Как используется: ответом на сообщение пользователя; либо вводится команда, юзернейм и время ограничения
Кто использует: администраторы чата
Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пример: !mute_inline 2d @annana – пользователь @annana не сможет отправлять стикеры и ссылки в чате 2 дня
# /dmute_inline (указание username через @ или id) – запретить отправлять стикеры и превью ссылок на 1 день
Пишется в виде: !dmute_inline, /dmute_inline
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм.
Кто использует: администраторы чата
Пример: !dmute_inline @annana – пользователь @annana не сможет отправлять стикеры и ссылки в чате 1 день
# /mute_invite (время и указание username через @ или id) – запретить приглашать пользователей
Пишется в виде: !mute_invite, /mute_invite
Как используется: ответом на сообщение пользователя; либо вводится команда, юзернейм и время ограничения
Кто использует: администраторы чата
Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пример: !mute_invite 2d @annana – пользователь @annana не сможет приглашать пользователей в чате 2 дня
# /dmute_invite (указание username через @ или id) – запретить приглашать пользователей на 1 день
Пишется в виде: !dmute_invite, /dmute_invite
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
Пример: !dmute_invite @annana – пользователь @annana не сможет приглашать пользователей в чате 1 день
# /mute_pools (время и username через @ или id) – запретить проводить опросы
Пишется в виде: !mute_pools, /mute_pools
Как используется: ответом на сообщение пользователя; либо вводится команда, юзернейм и время ограничения
Кто использует: администраторы чата
Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пример: !mute_pools 2d @annana – пользователь @annana не сможет отправлять опросы в чате 2 дня
# /dmute_pools (указание username через @ или id) – запретить проводить опросы 1 день
Пишется в виде: !dmute_pools, /dmute_pools
Как используется: ответом на сообщение пользователя; либо вводится команда, юзернейм и время ограничения
Кто использует: администраторы чата
Пример: !dmute_pools @annana – пользователь @annana не сможет отправлять опросы в чате 1 день
# /ban (время и указание username через @ или id) — исключить пользователя из чата навсегда. Или исключить с указанием времени, когда он сможет вернуться.
Если использовать команду /ban — пользователь попадет в черный список чата навсегда, пока вы его не разбаните командой /unban или не исключите из списка вручную. Если использовать /ban с указанием времени, прим /ban 1h — пользователь будет забанен на 1 час и потом будет автоматически исключен из черного списка и сможет вернуться в чат.
Пишется в виде: !ban, /ban, !бан, /бан
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Например: !ban 30d @annana – пользователь @annana не сможет вернуться в чат 30 дней !ban @annana – пользователь @annana не сможет вернуться в чат, пока вы не исключите ее из черного списка пользователей чата.
# /warn (указание username через @ или id) – предупреждение пользователя о нарушении
Пользователю выносится предупреждение
Пишется в виде: !warn, /warn, !варн, /варн
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
# /kick (указание username через @ или id) – исключение пользователя из беседы с возможностью вернуться сразу после выхода
Пишется в виде: !kick, /kick, !кик, /кик
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
# /kickall – «Режим атаки» — после включения этого режима, бот запретит вход в чат новым пользователям, чтобы защитить чат от атаки ботов
Пишется в виде: !kickall, /kickall
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /kickalloff – отключение режима атаки
Пишется в виде: !kickalloff, /kickalloff
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /kickallnew — выгнать из чата всех пользователей, которые вступили в чат самостоятельно.
Пишется в виде: !kickallnew, /kickallnew
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /unmute (указание username через @ или id) – снимает с пользователя наказание /mute
Пишется в виде: !unmute , /unmute
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
# /unban – снимает с пользователя наказание /ban
Пишется в виде: !unban , /unban
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
# /unwarn – снимает все предупреждения с пользователя
Пишется в виде: !unwarn, /unwarn
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
# /reset_brand – (команда доступна для брендированных ботов) сброс брендбота с чата.
Пишется в виде: !reset_brand, /reset_brand
Как используется: отправить в чат сообщение с командой
Кто использует: администраторы чата
# /filter_stick_pack – добавить стикерпак в список фильтров стикерпаков
Пишется в виде: !filter_stick_pack, /filter_stick_pack
Как используется: ответом на сообщение пользователя со стикером
Кто использует: администраторы чата
# /filter_stop_word — добавить слово в список фильтра стоп-слов
Пишется в виде: !filter_stop_word, /filter_stop_word
Как используется: ответом на сообщение пользователя с необходимым словом или словосочетанием.
Кто использует: администраторы чата
# /pin – закрепить пост в чате
Пишется в виде: !pin , /pin
Как используется: ответом на сообщение пользователя
Кто использует: администраторы чата
# /unpin – открепить пост в чате
Пишется в виде: !unpin , /unpin
Как используется: ответом на сообщение пользователя
Кто использует: администраторы чата
# /unpinall — открепить все закрепленные посты в чате
Пишется в виде: !unpinall , /unpinall
Как используется: ответом на сообщение пользователя
Кто использует: администраторы чата
# /repin – закрепить сообщение в группе. Предназначено для прикрепленного канала к чату
Предназначено для новой функции – дискуссии. Если Telegram перешлёт пост из канала в группу, бот открепит пост и закрепит сообщение, на которое была отправлена команда /repin Для выполнения этих команд бот должен иметь право закреплять сообщения!
Пишется в виде: !repin, /repin
Как используется: ответом на сообщение
Кто использует: администраторы чата
# /unrepin – открепить сообщение в группе, закрепленного командой /repin
Обратное команде /repin. Открепляет сообщение. При пересылке с канала поста, бот ничего не будет делать. Для выполнения этих команд бот должен иметь право закреплять сообщения!
Пишется в виде: !unrepin, /unrepin
Как используется: ответом на закрепленное сообщение
Кто использует: администраторы чата
# /msg – сообщение с такой командой отправится от лица бота. Доступна разметка HTML
Пишется в виде: !msg , /msg
Как используется: в чат отправить сообщение с командой
Пример: /msg Привет, как дела?
Кто использует: администраторы чата
# /dm – команда отправляется в ответ на сообщение пользователя, которое вы хотите удалить
Пишется в виде: !dm, /dm
Как используется: ответом на сообщение пользователя
Кто использует: администраторы чата
# /purge – удалить все сообщения в чате, после сообщения, на которые вы ответили командой.
Пишется в виде: !purge, /purge
Как используется: ответом на любое сообщение
Кто использует: администраторы чата
# /purge_user — удалить сообщения в чате от конкретного пользователя за 48 часов
Пишется в виде: !purge_user, /purge_user
Как используется: ответом на сообщение пользователя, чьи сообщения нужно удалить
Кто использует: администраторы чата
# /reload_admins – обновляет список администраторов и синхронизирует их с личным кабинетом, если для админов не отображается чат
Так же доступны синонимы этой команды: /reload, /update
Пишется в виде: !reload_admins, /reload_admins, !reload, /reload, !update, /update
Как используется: отправить в чат сообщение с командой
Кто использует: администраторы чата
# /un – снять ограничения на 5 минут и не использовать фильтры на пользователя
Пишется в виде: !un, /un
Как используется: отправить сообщение с командой и юзернеймом, либо ответом на сообщение пользователя
Кто использует: администраторы чата
# /addwl добавить пользователя в белый список, чтобы дать иммунитет к автоматическому действию фильтров. Не действует для команд наказания, введенных вручную.
Так же доступны синонимы этой команды: /botaddadmin
Пишется в виде: !addwl, /addwl, !botaddadmin, /botaddadmin
Как используется: ответом на сообщение пользователя, которого хотите добавить
Кто использует: администраторы чата
# /delwl — снимает у пользователя иммунитет к фильтрам и убирает из белого списка.
Так же доступны синонимы этой команды: /botdeladmin
Пишется в виде: !/delwl, /delwl, !botdeladmin, /botdeladmin
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
# /testlog – информация о статусе работы подключенного журнала
Команда необходима для проверки работы журнала. Статус журнала может быть подключен/не подключен.
Пишется в виде: !testlog, /testlog
Как используется: отправить в чат сообщение с командой
Кто использует: администраторы чата
# /dellog – удалить канал журнала, отключить журнал
Пишется в виде: !dellog, /dellog
Как используется: отправить в чат сообщение с командой
Кто использует: администраторы чата
# /setlog — команда для подключения канала с журналом.
Команда отправляется в канал, в который будут публиковаться записи журнала. В ответ на команду /setlog вам придет уникальное сообщение с кодом, перешлите его стрелочкой (обязательно!) в чат, к которому подключаете журнал.
Пишется в виде: !setlog, /setlog
Как используется: отправить в чат сообщение с командой
Кто использует: администраторы чата
# /update_keyboard вывести и обновить клавиатуру в чате.
Пишется в виде: !update_keyboard, /update_keyboard
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /resetrep – сбросить или обнулить репутацию конкретного пользователя
Вы можете вручную с помощью этой команды обнулить репутацию конкретному пользователю. Сбрасываются положительные и отрицательные репутации.
Пишется в виде: !resetrep , /resetrep
Как используется: ответом на сообщение пользователя, либо отправить сообщение с командой и юзернеймом
Кто использует: администраторы чата
# /resetallrep — сбросить или обнулить репутации всех пользователей. Сбрасываются положительные и отрицательные репутации.
Пишется в виде: !resetallrep , /resetallrep
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /resetfilters — обнуление лимита действия фильтров для пользователя
Пишется в виде: !resetfilters , /resetfilters
Как используется: ответом на сообщение пользователя, либо отправить сообщение с командой и юзернеймом
Кто использует: администраторы чата
# /resetallfilters — сбросить предупреждения всех фильтров для всех пользователей чата.
Предупреждения о работе фильтров не будут отсылаться в чат.
Пишется в виде: !resetallfilters , /resetallfilters
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /resetap — сбросить или обнулить очки действия у конкретного пользователя
Пишется в виде: !resetap, /resetap
Как используется: ответом на сообщение пользователя, либо отправить сообщение с командой и юзернеймом
Кто использует: администраторы чата
# /resetallap — сбросить или обнулить очки действия для всех пользователей чата
Пишется в виде: !resetallap, /resetallap
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /resetxp — сбросить опыт конкретному пользователю
Пишется в виде: !resetxp, /resetxp
Как используется: ответом на сообщение пользователя, либо отправить сообщение с командой и юзернеймом
Кто использует: администраторы чата
# /resetallxp — сбросить опыт для всех пользователей чата
Пишется в виде: !resetallxp, /resetallxp
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /resetrank — сбросить ранг конкретному пользователю
Пишется в виде: !resetrank, /resetrank
Как используется: ответом на сообщение пользователя, либо отправить сообщение с командой и юзернеймом
Кто использует: администраторы чата
# /resetallrank — сбросить ранг для всех пользователей чата
Пишется в виде: !resetallrank, /resetallrank
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /trcareset – обнуление вызова триггера для определенного пользователя
Пишется в виде: !trcareset, /trcareset
Как используется: отправить сообщение с командой и юзернеймом
Кто использует: администраторы чата
# /trwareset – обнуление предупреждений в тригере у определенного пользователя
Пишется в виде: !trwareset, /trwareset
Как используется: отправить сообщение с командой и юзернеймом
Кто использует: администраторы чата
# /rooff – открыть чат для всех пользователей
Пишется в виде: !rooff, /rooff
Как используется: отправить в чат сообщение с командой
Кто использует: администраторы чата
# /ro – закрыть чат для всех участников чата кроме администраторов
Пишется в виде: !ro, /ro
Как используется: отправить в чат сообщение с командой
Кто использует: администраторы чата
# /roall – создатель чата закрывает его для всех
Пишется в виде: !roall, /roall
Как используется: отправить в чат сообщение с командой
Кто использует: создатель чата
# /sup_add_user_reputation – добавить положительную репутацию конкретному пользователю
Обязательно укажите количество прибавляемых положительных репутаций. Без указания числа команда не будет работать.
Пишется в виде: !sup_add_user_reputation кол-во, /sup_add_user_reputation кол-во
Как используется: ответом на сообщение пользователя
Кто использует: только администраторы
Пример: !sup_add_user_reputation 5, /sup_add_user_reputation 5. Пользователю было выдано 5 очков репутации. Пример с выдачей отрицательной репутации: !sup_add_user_reputation -3, /sup_add_user_reputation -3
# /sup_add_anti_user_reputation — добавить отрицательную репутацию конкретному пользователю
Обязательно укажите количество прибавляемых отрицательных репутаций. Без указания числа команда не будет работать.
Пишется в виде: !sup_add_anti_user_reputation кол-во, /sup_add_anti_user_reputation кол-во
Как используется: ответом на сообщение пользователя
Кто использует: только администраторы
Пример: !sup_add_anti_user_reputation 10, /sup_add_anti_user_reputation 10. Пользователю было выдано 10 очков отрицательной репутации.
# /sup_add_user_xp – добавить опыт конкретному пользователю
Пишется в виде: !sup_add_user_xp кол-во, /sup_add_user_xp кол-во
Как используется: ответом на сообщение пользователя
Кто использует: только администраторы
Пример: !sup_add_user_xp 5, /sup_add_user_xp 5. Пользователю было выдано 5 очков опыта.
Пример с выдачей отрицательного опыта: !sup_add_user_xp -3, /sup_add_user_xp -3
# /sup_add_user_ap — добавить очки действия конкретному пользователю
Обязательно укажите количество прибавляемых очков действия. Без указания числа команда не будет работать.
Пишется в виде: !sup_add_user_ap кол-во, /sup_add_user_ap кол-во
Как используется: ответом на сообщение пользователя
Кто использует: только администраторы
Пример: !sup_add_user_ap 5, /sup_add_user_ap 5. Пользователю было выдано 5 очков действия.
# /sup_set_user_rank — выдать ранг конкретному пользователю
В настройках ранга вы можете задать список с порядковым номером ранга, его названием и требуемым количеством очков. Для выдачи ранга используйте указание его порядкового номера. Если ранг «Выдающийся» значится под номером 6, указываете !sup_set_user_rank 6
Пишется в виде: !sup_set_user_rank число, /sup_set_user_rank число
Как используется: ответом на сообщение пользователя
Кто использует: только администраторы
Пример: !sup_set_user_rank 4, /sup_set_user_rank 4. Пользователю был выдан ранг «Известный».
# /siteaddadmin – добавление в список пользователей, которые меняют настройки бота на сайте
Пользователи, которых вы добавите с помощью этой команды, смогут менять настройки бота на сайте (личном кабинете/адимин панели). Список добавленных пользователей можно посмотреть в кабинете в «Настройки прав пользователей».
Пишется в виде: !siteaddadmin, /siteaddadmin
Как используется: ответом на сообщение пользователя, которого хотите добавить
Кто использует: администраторы чата
# /sitedeladmin — убрать из списка пользователей, которые меняют настройки бота на сайте
С помощью этой команды вы исключаете пользователя из числа тех, кто меняет настройки бота на сайте.
Пишется в виде: !sitedeladmin, /sitedeladmin
Как используется: ответом на сообщение пользователя, которого хотите добавить
Кто использует: администраторы чата
# /reslim – сброс всех предупреждений пользователя
Пишется в виде: !reslim, /reslim
Как используется: ответом на сообщение пользователя или сообщение с командой и юзернеймом
Кто использует: администраторы чата
# /revokelink — сбросить/обнулить работу пригласительной ссылки для чата, созданной в боте.
Ссылки, которые вы сбросите с помощью этой команды, будут недействительными. Пользователь не сможет по ним перейти и вступить в чат. Команда /revokelink работает только с указанием ссылки, которую необходимо обнулить.
Пишется в виде: !revokelink, /revokelink
Как используется: отправить в чат сообщение с командой и указанием ссылки
Кто использует: администраторы чата
Пример: !revokelink https://t.me/+cG7h_ullBct1tzIy
# /testmode – «Тестовый режим» — После включения режима, отключается лимит на приветствие в чате на час, что поможет при тестировании чата, чтобы пользователь мог выходить и заходить в чат, для проверки приветствия
Пишется в виде: !testmode, /testmode
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /testmodeoff – отключение тестового режима
Пишется в виде: !testmodeoff, /testmodeoff
Как используется: командой в сообщении
Кто использует: администраторы чата
# /setconfig — восстановление настроек чата. Возврат к предыдущей настройке.
Пишется в виде: !setconfig, /setconfig
Как используется: в чат отправить сообщение с командой
Кто использует: администраторы чата
# /lasttopmsg (тариф Advanced) — топ активных пользователей с кол-вом сообщений по каждому
Пишется в виде: !lasttopmsg, /lasttopmsg. Также, за определенный период времени, наприммер /lasttopmsg 7d — топ за неделю Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Как используется: отправить сообщение с командой
Кто использует: администраторы чата
# /statusmsg — выводит сообщения указанного пользователя за последние 48 часа
Пишется в виде: !statusmsg, /statusmsg
Как используется: ответом на сообщение пользователя; либо вводится команда и юзернейм
Кто использует: администраторы чата
Пример: !statusmsg @anna
# /status – узнать информацию о пользователе (дата входа в чат, сколько дней непрерывных сообщений, репутация)
Пишется в виде: !status, /status
Как используется: ответом на сообщение; либо вводится команда и юзернейм
Кто использует: администраторы чата
# Команды для всех пользователей чата
Команды, которые могут вызывать все пользователи чата. Отправляются пользователями прямо в чат.
# Команды репутации:
# /toprep – топ репутации, выданной пользователями за все время
Пишется в виде: /toprep, !toprep
Как используется: отправить сообщение с командой, например: /toprep 10
Кто использует: все пользователи чата
# /bottomrep — топ пользователей с самой низкой репутацией
Пишется в виде: !bottomrep, /bottomrep
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
# /lastbottomrep — топ пользователей с наименьшим количеством репутаций за определенное время.
Внимание! Команда работает только с указанием временного периода для поиска. Прим: /lastbottomrep 1m Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пишется в виде: !lastbottomrep время, /lastbottomrep время
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
Пример: !lastbottomrep 1d
# /lasttoprep — топ пользователей с наибольшим количеством репутаций за определенное время.
Внимание! Команда работает только с указанием временного периода для поиска. Прим: /lasttoprep 1m Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пишется в виде: !lasttoprep время, /lasttoprep время
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
Пример: !lasttoprep 1m
# /lasttoprep cm 20 – показать топ пользователей с наибольшим количеством репутаций за текущий месяц
Пишется в виде: !lasttoprep cm 20, /lasttoprep cm 20
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /lasttoprep pm 20 – показать топ пользователей с наибольшим количеством репутаций за предыдущий месяц
Пишется в виде: !lasttoprep pm 20, /lasttoprep pm 20
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /lastbottomrep cm 20 – топ пользователей с наименьшим количеством репутаций за текущий месяц
Пишется в виде: !lastbottomrep cm 20, /lastbottomrep cm 20
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /lastbottomrep pm 20 – топ пользователей с наименьшим количеством репутаций за предыдущий месяц
Пишется в виде: !lastbottomrep pm 20, /lastbottomrep pm 20
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# Команды опыта:
# /topxp – топ опыта, выданного пользователями за все время
Пишется в виде: /topxp, !topxp
Как используется: отправить сообщение с командой, можно указать количество пользователей
Кто использует: все пользователи чата
Пример: **/topxp 10 ** — покажет топ-10 пользователей по количеству опыта
# /bottomxp — топ пользователей с наименьшим количеством опыта
Пишется в виде: !bottomxp, /bottomxp
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
# /lastbottomxp топ пользователей с наименьшим количеством опыта за определенное время.
Внимание! Команда работает только с указанием временного периода для поиска. Прим: /lastbottomxp сm 20 Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пишется в виде: !lastbottomxp время , /lastbottomxp время
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
Пример: /lastbottomxp сm 20
# /lasttopxp — топ пользователей с наибольшим количеством опыта за определенное время.
Внимание! Команда работает только с указанием временного периода для поиска. Прим: /lasttopxp cm 20 Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пишется в виде: !lasttopxp время , /lasttopxp время
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
Прим: /lasttopxp cm 20
# /lasttopxp cm 20 – топ опыта за текущий месяц
Пишется в виде: !lasttopxp cm 20, /lasttopxp cm 20
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /lasttopxp pm 20 – топ опыта за предыдущий месяц
Пишется в виде: !lasttopxp pm 20, /lasttopxp pm 20
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /lastbottomxp сm 20 – топ опыта, выданного ботом, за текущий месяц
Пишется в виде: !lastbottomxp сm 20, /lastbottomxp сm 20
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /lastbottomxp pm 20 — топ опыта, выданного ботом, за предыдущий месяц
Пишется в виде: !lastbottomxp pm 20, /lastbottomxp pm 20
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# Команды по очкам действия:
# /topap – топ по очкам действий, выданных пользователями за все время
Пишется в виде: /topap, !topap
Как используется: отправить сообщение с командой, можно указать количество пользователей
Кто использует: все пользователи чата
Пример: /topap 10
# /bottomap — топ пользователей с наименьшим количеством очков действий
Пишется в виде: /bottomap, !bottomap
Как используется: отправить сообщение с командой, можно указать количество пользователей
Кто использует: все пользователи чата
# lastbottomap — топ пользователей с наименьшим количеством очков действий за определенное время.
Внимание! Команда работает только с указание временного периода для поиска. Прим: /lastbottomap сm 20 Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пишется в виде: /lastbottomap время, !lastbottomap время
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
Прим: /lastbottomap сm 20
# lasttopap — топ пользователей с наибольшим количеством очков действий за определенное время. Внимание! Команда работает только с указанием временного периода для поиска. Прим: /lasttopap cm 20
Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
# Команды по активности пользователей:
# /topmsg — топ самых общительных пользователей
Пишется в виде: !topmsg, /topmsg
Как используется: отправить в чат сообщение с командой
Кто использует: все пользователи чата
# /bottommsg — топ самых молчаливых пользователей
Пишется в виде: !bottommsg, /bottommsg
Как используется: отправить в чат сообщение с командой
Кто использует: все пользователи чата
# /lastbottommsg — топ самых молчаливых пользователей за определенное время. Внимание! Команда работает только с указанием временного периода для поиска. Прим: /lasttopap cm 20
Время: 1s (1 секунда), 1h (1 час), 1m (1 минута), 1d (1 день)
Пишется в виде: !lastbottommsg время, /lastbottommsg время
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
Прим: /lasttopap cm 20
# Команды по рангу:
# /toprank — список пользователей с самым высоким рангом
Пишется в виде: !toprank, /toprank
Как используется: отправить в чат сообщение с командой
Кто использует: все пользователи чата
# /bottomrank— список пользователей с самым низкий рангом
Пишется в виде: !bottomrank, /bottomrank
Как используется: отправить в чат сообщение с командой
Кто использует: все пользователи чата
# Команды по реферерам:
# /topref — лучшие рефереры, которые привлекли наибольшее количество пользователей
Пишется в виде: !topref, /topref
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
# /bottomref — худшие рефереры, которые привлекли наименьшее количество пользователей
Пишется в виде: !bottomref, /bottomref
Как используется: в чат отправить сообщение с командой
Кто использует: все пользователи чата
# /me – узнать информацию о себе (дата входа в чат, сколько дней непрерывных сообщений, репутация, ранг, кто пригласил)
Пишется в виде: !me, /me
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /chat – узнать id чата
Пишется в виде: !chat, /chat
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /test – проверка настроек чата (если сообщение сразу исчезает, значит все нормально)
Пишется в виде: !test, /test
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /tc – коррекция сообщения
Пишется в виде: !tc, /tc
Как используется: ответить на сообщение, которое вы хотите перевести. Например: ответив на сообщение «Ghbdtn» командой /tc, бот пришлет вам сообщение с переводом «Привет»
Кто использует: все пользователи чата
# /ping – проверка работоспособности бота (если все нормально, то бот пришлет сообщение, которое начинается со слова «pong»)
Пишется в виде: !ping, /ping
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /report – пожаловаться на сообщение участника
Пишется в виде: !report, /report
Как используется: ответом на сообщение пользователя
Кто использует: все пользователи чата
# /rmkb – удалению клавиатуры (меню) в чате
Пишется в виде: !rmkb, /rmkb
Как используется: отправить сообщение с командой
Кто использует: администраторы чата
# /rules – правила вашего чата, которые вы написали в настройках бота
Пишется в виде: !rules, /rules
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
# /donate – ссылка на оплату лицензии. Оплатить ее может любой участник. Создателю придет уведомление в личные сообщения.
Пишется в виде: !donate, /donate
Как используется: отправить сообщение с командой
Кто использует: все пользователи чата
Как мутить (mute) человека, если он спамит в Telegram?
Ищу документацию про мут. Если человек шлет более 3 сообщений за 5 секунд, как сделать проверку таких таймингов сообщений?
Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 23 авг 2021 в 20:00
Feel Richi Feel Richi
29 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Все что тебе понадобится так это библиотека datetime и telebot. У меня есть одно решение мы просто будем получать дату отправки сообщений message.date() получаем время в unix формате затем его переводим в обыкновенно(человеческое), достаем от туда секунды затем проверяем количество сообщений отправленных в определенный промежуток времени и если за пять секунд у нас более чем три сообщения то мутим его с помощью: bot.restrict_chat_member(message.chat.id, message.from_user.id, until_date= [сюда время мута]) , вот как я вижу решение этой задачки.
Отслеживать
ответ дан 24 авг 2021 в 8:31
Alex alexeev Alex alexeev
383 1 1 серебряный знак 11 11 бронзовых знаковчтобы получить секунды в рф времени можно просто написать from datetime import datetime import pytz seconds = datetime.now(pytz.timezone(‘Europe/Moscow’)).strftime(‘%S’) print(seconds)
27 авг 2021 в 6:43
В aiogram решили данную задачу через добавление middleware с leaky bucket.
import asyncio from aiogram import Bot, Dispatcher, executor from aiogram.contrib.fsm_storage.redis import RedisStorage2 from aiogram.dispatcher import DEFAULT_RATE_LIMIT from aiogram.dispatcher.handler import CancelHandler, current_handler from aiogram.dispatcher.middlewares import BaseMiddleware from aiogram.types import Message from aiogram.utils.exceptions import Throttled TOKEN = "BOT_TOKEN_HERE" bot = Bot(token=TOKEN) storage = RedisStorage2() dp = Dispatcher(bot, storage=storage) def rate_limit(limit: int, key=None): """Decorator for configuring rate limit and key.""" def decorator(func): setattr(func, "throttling_rate_limit", limit) if key: setattr(func, "throttling_key", key) return func return decorator class ThrottlingMiddleware(BaseMiddleware): def __init__(self, limit=DEFAULT_RATE_LIMIT, key_prefix="antiflood_"): self.rate_limit = limit self.prefix = key_prefix super(ThrottlingMiddleware, self).__init__() async def on_process_message(self, message: Message, data: dict): handler = current_handler.get() dispatcher = Dispatcher.get_current() if handler: limit = getattr(handler, "throttling_rate_limit", self.rate_limit) key = getattr( handler, "throttling_key", f"_" ) else: limit = self.rate_limit key = f"_message" try: await dispatcher.throttle(key, rate=limit) except Throttled as t: await self.message_throttled(message, t) raise CancelHandler() async def message_throttled(self, message: Message, throttled: Throttled): handler = current_handler.get() dispatcher = Dispatcher.get_current() if handler: key = getattr( handler, "throttling_key", f"_" ) else: key = f"_message" delta = throttled.rate - throttled.delta if throttled.exceeded_count