Перейти к содержимому

Как дать мут человеку в тг

  • автор:

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  

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *