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

Что такое мьют в телеграмме

  • автор:

10 неизвестных, но нужных фишек Telegram

Favorite

В закладки

10 неизвестных, но нужных фишек Telegram

В данном случае разберем неочевидные возможности мессенджера Telegram, которые пригодятся продвинутым пользователям сервиса — каждому из вас.

1. Отключайте уведомления для диалогов и чатов

Как это сделать: нажмите на название чата и выберите возможность Mute

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

Возможность особенно актуальна при работе с каналами и ботами, которых у вас может собраться очень большое количество.

2. Узнавайте про доставку, прочтение сообщений

Как это сделать: следите за галочками возле отправленного сообщения

Все просто, одна галочка возле отправленного сообщения означает, что оно доставлено пользователю, две — уже прочитано им.

Теперь вас не смогут обмануть, что не видели сообщение.

3. Смените собственное имя для удобства поиска

Как это сделать: Settings — Username

Нормальный никнейм вместо номера мобильного телефона позволят другим пользователям гораздо проще находить вас в мессенджере.

Так как он в определенной степени направлен и на решение бизнес-вопросов, это окажется очень кстати.

4. Скройте от всех время доступности в онлайне

Как это сделать: Settings — Privacy and Security — Last Seen

Эта возможность поможет вам оградиться от лишних вопросов со стороны контактов из вашего мессенджера.

Представьте ситуацию, когда вы решили проигнорировать сообщение от кого-либо, сославшись на то, что были без доступа к интернету или просто не слышали уведомление.

Если видно время, когда вы в последний раз заходили в приложение, сделать это не получится.

5. Заходите в аккаунт не меньше раза в полгода

Как это сделать: Setting — Privacy and Security — Delete My Account

По-умолчанию, если вы не заходили в свой аккаунт в мессенджере больше полугода, система просто сотрет все ваши данные со своих серверов.

Но срок, после которого это произойдет, можно самостоятельно регулировать через настройки в мобильном приложении.

6. Закрепите чаты, диалоги для простоты поиска

Как это сделать: смахните справа налево по чату или диалогу и выберите возможность Pin

Таким образом самая важная переписка, каналы или боты окажутся в верхней части списка чатов и диалогов мессенджера.

При активном использовании приложения именно таким образом их проще всего найти для быстрого доступа.

7. Используйте чат с собой в собственных целях

Как это сделать: найдите себя по никнейму через поиск

Немногие знают, но с помощью этого мессенджера можно не только обмениваться самой разнообразной информацией, но и хранить ее для личного использования.

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

8. Используйте хэштеги для поиска тематических

Как это сделать: добавляйте хэштеги к сообщениям в формате #test

Таким образом получится очень просто структурировать личные и рабочие сообщения в мессенджере.

При нажатии на один из хэштегов откроется специальное меню, в котором получится увидеть всю связанную с ним информацию — вот это очень удобно.

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

9. Удалите лишние диалоги из памяти устройства

Как это сделать: Settings — Data and Storage — Storage Usage

В этом меню можно выбрать конкретный диалог и очистить файлы и фотографии, которые сохранены в память устройства в его рамках.

Таким образом самые активные смогут ощутимо сократить занятое на устройстве место — избавиться от сотен мегабайт пространства, которое используется абсолютно бесполезно.

10. Следите за использованием мобильных данных

Как это сделать: Settings — Data and Storage — Network Usage

Российские операторы все быстрее и быстрее двигаются в сторону сокращения числа безлимитных интернет-тарифов и в итоге хотят просто отказаться от них.

В реалиях же украинского юга, где сам я провожу больше всего времени, безлимитных тарифов на мобильный интернет отродясь не было.

Поэтому возможность следить за используемым трафиком дорогого стоит.

Реализация мута пользователей в групповом чате — 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 576
                  • 1
                  • 77

                  Silence or Mute Notifications.

                  Silence or Mute Notifications. Disable alert sounds from a chat or turn off notifications completely.

                  Select ‘Mute for’ on Android or ‘Mute until’ �� on iOS to set a custom mute duration – pausing notifications for a specific period.

                  You can also quickly mute chats from your chat list.

                  Как мутить (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 не будет опубликован. Обязательные поля помечены *