Комментарии 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!')
И в нынешней версии 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 за несколько сот рублей в год или бесплатно? Я знаю только за несколько сот рублей в месяц, а бесплатно - только 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 и т.п.
Меня вряд ли можно назвать профессионалом в ботостроении, т.к. в целом даже разработка это больше моё хобби чем профессиональный заработок. Но если хотите моё мнение, то в первую очередь выбирайте исходя из потребности и удобства. У меня не было цели создать бота со сложным функционалом, т.к. я в первую очередь хотел оперативно решить проблему с голосовыми. Поэтому я глянул на документацию, попробовал написать несколько строк с помощью telebot и aiogram и сделал вывод, что мне приятнее и понятнее работать с telebot.
Ваша ситуация может отличаться от моей. Но я бы перед окончательным выбором определил, что мне важно в первую очередь и попробовал оба варианта с оглядкой на эту потребность.
Я выбрал aiogram, но надо понимать как писать на асинхронном питоне. Производительность на уровне. Как пример @ElibFB2_Chat_c1_bot в телеге
У меня есть товарищ, предпочитает общаться голосовыми по whatsapp. Сделал с ним группу в Телеграм, подключил туда бота@smartspeech_sber_bot
Объяснил товарищу, что не надо в личку слать, присылай в нашу с тобой группу для расшифровок твоих голосовых. Пару раз он туда прислал, а потом продолжил слать в личку в whatsapp.
Думаю, наличие технического решения не всегда может решить проблему. Нужно изобрести что-то, что примирит людей с разными предпочитаемыми способами коммуникации. Но на этом моя мысль останавливается, придумать решения я не могу)
Голосовые в деловой переписке, в рабочее время — неудобно. Для кого-то действительно проще быстро прочесть текст, +скорочтение. Есть заказчица, которая принципиально не отправляет голосовые, а в ее статусе стоит «Не слушаю аудиозаписи! Только ТЕКСТ!» :)
Но, пожалуй, поддержу непопулярное мнение: когда открываю диалог и вижу, как записывают голосовое сообщение, то в нетерпении его жду, и скорее хочется послушать
Хочу сказать что есть бесплатный мессенджер на базе телеграмм API "iMe" с функцией распознания речи, да и в целом таких прилично ботов гуляет.
Но статья интересная.
У вас проверка на dev, а остальной код выполняется в любом случае: хоть prod, хоть жованыйкрот.
If else конструкции - они такие
Ботов таких много, мне нравится @smartspeech_sber_bot
Это гениально, попробую повторить)
Как написать своего бота, если устал от голосовых