Как стать автором
Обновить

Комментарии 34

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

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

И иногда этот человек, это - ты.

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

Одна из моих любимых статей, это «Звонки — это всегда не вовремя» (в гугле на vc выпадает первой)

Скажем иначе: иногда этот человек - клиент.

Вот набросал автоответчик/автоудаление на звуковые.

Hidden text
import time
import sys
import getpass
from telethon import events
from telethon.sync import TelegramClient
from telethon.tl.types import InputPeerUser
from telethon.errors import SessionPasswordNeededError

# Log in to your Telegram core: https://my.telegram.org/apps.
# get your api_id, api_hash 
api_id = None #1234567
api_hash = None #'b00bab00bab00bab00bab00bab00ba000'
# your phone number 
phone = None #'+1234567890'

if not api_id or not api_hash :
    print('Set api_id and api_hash')
    sys.exit(1)

client = TelegramClient('my_novoice_bot', api_id, api_hash)
client.connect() 

# in case of script ran first time it will 
# ask either to input token or otp sent to 
# number or sent or your telegram id  
if not client.is_user_authorized(): 
    client.send_code_request(phone) 
    client.sign_in(phone) # signing in the client 
    try:
        client.sign_in(code=input('Enter code: '))
    except SessionPasswordNeededError:
        client.sign_in(password=getpass.getpass()) 

################################
@client.on(events.NewMessage(incoming=True ))  
async def handler(event):
    if event.is_private:
        if event.message.voice != None:
            time.sleep(1)
            await event.reply('К сожалению, собеседник не принимает звуковые сообщения.')
            await client.delete_messages(event.chat_id, event.id)
################################
 
print(time.asctime(), '-', 'Start auto-replying...')
client.run_until_disconnected()
print(time.asctime(), '-', 'Stopped!') 

А на Хероку у вас бесплатный план? Если да, то куда планируете переходить после 28-го числа?

И в нынешней версии Flask можно указать работу с методом POST короче, если никакой другой не используется:
@server.post('/' + TOKEN)
def get_message():
    json_string = request.get_data().decode('utf-8')
    update = telebot.types.Update.de_json(json_string)
    bot.process_new_updates([update])
    return "!", 200

Ну это так, ни к чему не обязывающая ремарочка.

Да, сейчас бесплатный тариф. Пока не решил куда перейти.

За ремарку спасибо!

Спасибо за статью. Насколько ремарок:

  • Было бы удобнее, если это технически возможно, чтобы бот отслеживал голосовые сам в фоне и кидал тексты непосредственно в тот же чат. Конечно, если автозанрузка медиа включена (у меня всегда выключена).

  • Вообще жаль, что эта фича до сих пор не реализована в самом тг... вроде 21 век на дворе, ничего супер сложного. Вот это было бы killa feature.

  • Heroku здесь не должен быть камнем преткновения. Можно запросто развернуть на любом любом VPS / виртуальном хостинге за несколько сот рублей в год или бесплатно. Flask + Gunicorn / uWSGI / и тд в помощь.

Такая фича реализована, но для подписки премиум. Киллер-фичей это точно не станет, потому что ВК ее уже давно изобрела.
P.S. Это где можно VPS за несколько сот рублей в год купить? (Не сарказм, реально интересно).

https://habr.com/ru/post/472454/ здесь нормальный обзор, плюс я еще могу посоветовать jino.ru (у самого там парочка VPS)

У Джино нет бесплатных vps, а что есть стоит не пару сотен в год, далеко

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

Не подскажете этот любой vps за несколько сот рублей в год?

UP

В групповых чатах бот расшифровку медиа там и приводит. А вот в приватных чатах это вряд ли возможно.

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

Насчёт Хероку согласен. Можно выбрать любой доступный хостинг. Мне было удобно развернуть на этом, т.к. он был бесплатен и прост в использовании.

А подскажите VPS за несколько сот рублей в год или бесплатно? Я знаю только за несколько сот рублей в месяц, а бесплатно - только Oracle Cloud, которая и раньше не всякую карту принимала, а теперь вообще отключила российских пользователей

В телеграм это есть в платной версии. А в IMe была с самого начала бесплатной

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

Действительно. :)
https://habr.com/ru/post/591563/
https://vc.ru/tribuna/86795-bot-dlya-telegram-kotoryy-preobrazovyvaet-golosovye-soobshcheniya-v-tekst
и там же из комментариев:

И у Сбера еще Салют.

Voicy сейчас становится платным и надо его селфхостить (то есть в любом случае на деплой время придется потратить и на впс если нет под рукой).

https://blog.borodutch.com/im-sunsetting-voicy/

А раньше им было некомфортно пользоваться из-за фраз про события на Украине. Я не против, но их, кажется, нельзя было отключить и я бы предпочёл, всё же, их отсутствие.

Спасибо! Эти варианты я упустил из виду:) В целом я допускал, что плохо искал. Отчасти поэтому и сделать решил его за пару вечеров, а не сильно дольше. Чтобы на повторное изобретение колеса не так уж много времени ушло :)

На нескольких курсах по питону, что мне попадались, в итоге пишут бота для телеги, причем с использованием библиотеки telebot. Когда интересуешься у тех, кто профессионально делает ботов, рекомендуют использовать aiogram. Хочу уточнить у автора и тех кто разбирается, имеет ли смысл вникать в телебота, или проще сразу aiogram осваивать или еще какой вариант?

Я прям сильно не разбираюсь, но пару дней назад почитал всякие статьи про создание ботов для телеги. Просто взял aiogram. В целом, по синтаксису очень похоже. Один фиг они поверх офф библиотеки апи телеги работают, как я понял
Примеров, возможно, и не так много, но пока трудностей не испытывал) декораторы примерно так же выглядят. Единственно что, aiogram на асинхронных запросах выстроен...
Поэтому присоединяюсь к вопросу.
Интересно бы услышать мнение профессионалов в телеграммоботописании. В чём плюсы-минусы библиотек. Почему эта считается проще, чем aiogram и т.п.

Не все новички могут с наскока в asyncio. А использовать можно и то, и то. Если понятен asyncio, то есть смысл начинать с aiogram

Меня вряд ли можно назвать профессионалом в ботостроении, т.к. в целом даже разработка это больше моё хобби чем профессиональный заработок. Но если хотите моё мнение, то в первую очередь выбирайте исходя из потребности и удобства. У меня не было цели создать бота со сложным функционалом, т.к. я в первую очередь хотел оперативно решить проблему с голосовыми. Поэтому я глянул на документацию, попробовал написать несколько строк с помощью telebot и aiogram и сделал вывод, что мне приятнее и понятнее работать с telebot.

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

Я выбрал aiogram, но надо понимать как писать на асинхронном питоне. Производительность на уровне. Как пример @ElibFB2_Chat_c1_bot в телеге

У меня есть товарищ, предпочитает общаться голосовыми по whatsapp. Сделал с ним группу в Телеграм, подключил туда бота@smartspeech_sber_bot

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

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

Начни ему отвечать также голосовыми, но максимально мнэээээкая и растягивая время на пару минут чтобы сказать 2-3 осмысленных слова.

НЛО прилетело и опубликовало эту надпись здесь

Голосовые в деловой переписке, в рабочее время — неудобно. Для кого-то действительно проще быстро прочесть текст, +скорочтение. Есть заказчица, которая принципиально не отправляет голосовые, а в ее статусе стоит «Не слушаю аудиозаписи! Только ТЕКСТ!» :)

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

Хочу сказать что есть бесплатный мессенджер на базе телеграмм API "iMe" с функцией распознания речи, да и в целом таких прилично ботов гуляет.

Но статья интересная.

У вас проверка на dev, а остальной код выполняется в любом случае: хоть prod, хоть жованыйкрот.

If else конструкции - они такие

Это гениально, попробую повторить)

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории