10000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы смотрите срез комментариев. Показать все
27
Автор поста оценил этот комментарий
Начните общаться с помощью жестов тогда уж, чего мелочиться или ментально. Общаюсь в мессенджерах и голосом и текстом, когда как удобно и не парюсь
раскрыть ветку (46)
14
Автор поста оценил этот комментарий

Собеседникам то твоим удобно, когда тебе удобно?

раскрыть ветку (6)
18
Автор поста оценил этот комментарий
Не удобно, скажи, что не удобно, просто не?
раскрыть ветку (5)
1
Автор поста оценил этот комментарий

Голосовым)

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

ещё комментарии
5
Автор поста оценил этот комментарий
Спасибо, мил человек за конструктивный подход, но тут пост такой - для ненавистников этого дела, так что вряд ли понимание найдете в этом вопросе:)
Я вот, как человек занятой, часто провожу много времени за рулëм и это совсем не безопасно - читать сообщения или печатать ответ, а времени постоянно парковаться нет.
И вот очень удобно - когда можно просто тыкнуть плэй и прослушать, нажать запись и ответить:)
А бездельникам мониторным конечно этого не понять:) они готовы программы писать часами лишь бы себя любимого оградить от речи безграмотной, ситуативной:) видимо в жизни вокруг них все пушкины, да джоны гришэмы:)
раскрыть ветку (33)
18
Автор поста оценил этот комментарий

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

И если эта программа превращает голос в текст плохо, то и ваш голос тоже слышно плохо. Значит что такие-же проблемы с вашим голосом возникнут и у собеседника. Он будет по пол часа прослушивать вашу запись повторами, силясь расслышать что вы там сказали, сквозь гул машины.

Иллюстрация к комментарию
34
Автор поста оценил этот комментарий

Штобы тебе список покупок каждый раз на 100500 пунктов диктовали, все адреса и всё прочее. И ты потом слушал тонны этого голосового гавна пытаясь найти нужное сообщение

ещё комментарии
29
Автор поста оценил этот комментарий

Конечно конечно, только вы дохуя занятой, зато все остальные безработные бездельники. Писать длинный комментарий пальцы не отвалились, зато написать сообщение отвалится)


Сейчас бы будучи таксистом считать ставить себя выше, условного, программиста (мониторный бездельник)

ещё комментарии
ещё комментарии
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку