73

Ответ на пост «Как я с голосовыми сообщениями боролся»

Посмотрел пост и решил реализовать такой же "блокиратор", но только для коротких сообщений. Есть у меня в диалогах любители отправить 5 голосовых по 2 слова. Если сообщение достаточно большое (10+ секунд), то там может и что-то важное затесаться, что неудобно печатать. Ниже попробую максимально просто описать как установить его для себя пользователю Windows. (Пост выглядит большим и страшным, но я просто старался очень подробно описать что требуется для запуска. Если у вас когда либо был опыт в использовании Python, то многие пункты для вас уже выполнены.)

Реализовано все на языке Python третьей версии. Из зависимостей - стандартный модуль Datetime (работа со временем, для форматирования логгирования в консоль), модуль Colorama (опять же для форматирования, делает глазам немного приятнее) и основной модуль, выполняющий функции связующего с телеграмом - telethon.

Шаг первый - установка всего необходимого.

Установка Python с официального сайта. После завершения установки нам нужно открыть консоль. Можно открыть ее нажав кнопку пуск и вписав в поиск CMD,

либо же нажав сочетание клавиш Windows + R и вписать команду CMD там.

Вам откроется командная строка Windows. Приступаем к установке модулей. При установке Python вы получаете PIP - менеджер пакетов, облегчающий их установку. Вводим несколько команд по очереди:

1. pip install telethon
2. pip install colorama

Шаг второй - скачивание и непосредственно запуск скрипта

Скачать скрипт можно с GitHub репозитория. Нас интересует файл stopvoice.py.

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

api_id = 000000
api_hash = ""
selfbot.start("PHONE NUMBER")
Данные для первых двух строк можно узнать на сайте https://my.telegram.org/apps. Для третьей строки вводим свой номер телефона.


Скрипт будем запускать посредством той же командной строки.

Если у вас желание поиграться со скриптом в течение небольшого времени, то делаем следующие шаги:

1. В консоли открываем папку где находится скачанный скрипт посредством команды

cd /d <Расположение файла>

Узнать расположение файла можно открыв его свойства, нажав по нему ПКМ и выбрав последний пункт меню.

2. Запускаем скрипт командой

python stopvoice.py

При первом запуске он попросит вас ввести код из телеграма для доступа к аккаунту, как при входе с нового устройства.

Готово! Скрипт запущен и фильтрует голосовые короче 10 секунд, показывая любителям отправить вам два слова посредством голоса не самую приятную для них надпись "Пользователь ограничил функцию голосовых сообщений."

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

if (event.message.voice) and (event.message.voice.attributes[0].duration < 10):

и изменить число 10 на необходимое вам число секунд.

Хотите чтобы скрипт  не фильтровал сообщения от определенных пользователей? Нужно внести их ID через запятую в

whitelist = [
0000000,
1111111
]
Тут, к примеру, скрипт не будет трогать сообщения от людей с ID 0000000 и 1111111. Узнать ID пользователя можно переслав любое его сообщение @getmyid_bot. Он будет в поле Forwarded from:

Показать полностью 3

Ответ на пост «Как я с голосовыми сообщениями боролся»

А давайте замутим голосование? Сделаю три коммента, кто прям люто ЗА голосовые, кто люто против, и кто и не особо против но и не особо за

10001

Как я с голосовыми сообщениями боролся

Сижу я, значит, пью чай, спорю в переписке с одной знакомой дамой об отношении к голосовым сообщениям. (Я из тех, кто считает их лютой дичью.) И внезапно понимаю, что столь желанной функции запрета приема голосовых сообщений от создателей мессенджеров я не дождусь, а просить каждого невоспитанного писать текстом...

Значит, настало время взять ситуацию в свои руки, и воспользоваться тем, что api Телеграма, в котором я переписываюсь чаще всего, открыт. Наверняка уже есть какое-то готовое решение в сети.

штош, иду в гугл. Ииии ничего нет, максимум боты для групп. Обидно, досадно, но ладно, придется вспоминать навыки кодинга, полученные и благополучно забытые лет 5 назад.

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

Обращаю внимание на подсказку где брать api_id и api_hash для авторизации, получаю, и переношу все это в текстовой файл, попутно удалив лишние строки:

Устанавливаю на компьютер Python, устанавливаю telethon (клиент телеграма, о котором идет речь), запускаю скрипт, авторизируюсь по номеру телефона, и вижу, что мой аккаунт теперь на любое входящее сообщение в ответ присылает "тестовое сообщение". Отлично, половина работы сделана =)

Теперь нужно каким-то образом вычислять какое из входящих сообщений является голосовухой, и какое из них прислано в личном чате (не в группе и не в канале). И эта информация, видимо, прячется в переменной "event". Курение документации в течение часа, к сожалению, ни к чему не приводит, все как на китайском. Отчаиваюсь, иду за дополнительной кружкой чая, в голове матеря любителей голосовух.

Спустя время приходит в голову идея: ищу расширение, которое полностью распечатывает массив, и вывожу всё содержимое "event" в консоль. И в куче текста вижу это:

попалась, голосовуха проклятая!! Щас мы тебя задетектим... Так подумал я, и ничего не получилось: прямой путь к переменной по многомерному массиву не возвращает что-либо типа bool, или хотя бы текст. В итоге скрипт при запуске жалуется на тип данных, и отрубается.

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

И раз законными методами не получилось, решил я попробовать кое-что очень грязное.. А именно, проверять, не содержится ли текст "voice=True" в массиве, полностью преобразованном в текст. Сказано - сделано, пора воплощать:

Проверяю: ессс, работает. Скрипт всегда отвечает "тестовое сообщение" на голосовуху.

Ну и дело остается за малым:

1) Добавить проверку на то, что чат личный. Тут все просто: ID каналов и групп всегда отрицательный, а у личных чатов он положительный.

2) Добавить удаление голосовухи из чата. С этим тоже проблем не возникло, кое-что полезное из документации все же удалось вытащить.

3) Поменять текст сообщения. Чтобы он был курсивным, пришлось поставить по 2 подчеркивания по краям.

Конечный результат:

Показать полностью 7 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества