Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 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 конструкции - они такие

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

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

Публикации