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

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

Посоветуйте, есть ли разница в том чтобы писать тг бота на js и python ?

Стоит ли учить python ради производительности именно телеграмм бота?

Посоветуйте, есть ли разница в том чтобы писать тг бота на js и python ?

Пишу на JS (на TypeScript, конечно). С помощью библиотеки TelegrafJS очень удобно писать сценарии взаимодействия с ботом. Там они в терминологии библиотеки так и называются - Scenes, Actions. Особенно это удобно для меня пишется на серверном фреймворке NestJS - знай себе декорируй и в модули инкапсулируй. Это скорее профессиональная деформация, так как я Ангулярщик, мне Nest лучше всего зайдёт чисто автоматически.

Стоит ли учить python ради производительности именно телеграмм бота?

Вы немного путаете предмет вопроса. За любым ботом в любом мессенджере стоит какой-то бекенд. Всё взаимодействие с ботом происходит по HTTP и зависит полностью от скорости работы платформы (Telegram), качества сети и только потом от того, как вы напишете свой бекенд.
Можно написать быстрый бекенд на чем угодно. А можно тупануть и довести тысяч раз считывать файл хоть на питоне, хоть на джаваскрипте.

Зависит от задач. Если ваш бот должен OCR'ить большие PDF'ки или гонять огромные нейронки - тут вы никак его почти не ускорите без глубочайших оптимизаций самих алгоритмов, выигрыш от ЯП будет мизерным (мы ведь говорим от пет-проектах, да?). Он всегда будет медленно работать.

Или, наоборот, если вы захостите бота где-нибудь в Уганде на сервере, который подключён к мобильному свистку у ОпСоСа со скоростью 228 кбит/сек и пингом 1488 мс, то хоть наоптимизируйтесь - бутылочным горлышком будет канал связи даже на Hello World'ах.

Вот у меня на обработку 10 картинок от фронтенда, занесение их в базу и затем отправку двух сообщений по 5 картинок в телеграмовского бота уходит до 10-15 секунд, хотя на бекенде всё выполняется за пару-тройку сек. (засекал вместе с аплоадом файлов) - виной всему даже не библиотека TelegrafJS, а сама платформа Телеграм, которая сообщения сначала кладёт в очередь и потом шлёт в бота. Вот ты хоть за 0.00069 сек. в моей задаче отработай, а сама платформа будет съедать ≈85% времени работы.
Спасибо закону "О рекламе" и его конским штрафам, который заставил меня кранчить последние три недели для автоматизации маркировки промо-материалов... именно он дал мне понять всё то, что я написал выше.

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

P. S. Python чуть медленнее JS. Just sayin'

...в Уганде на сервере ...пингом 1488 мс

По краю ходите))))

Скоро GIL из питона выпилят и посмотрим кто быстрей

Какая производительность вам нужна? Реально бот будет обрабатывать сотни команд в секунду?
Логика и архитектура работы бота в разы важнее, чем язык на котором он написан.
Я вот бот на bash потихоньку колупаю. Производительность от него не ожидаю, но для парочки домашних групп он вообще ничего не занимает на самой дешевой виртуалке в инете. И софт ему вообще никакой не нужен. Только sqlite поставил для удобства

 писать тг бота на js и python ?

Я обычно использую WWW::Telegram::BotAPI

При использовании python-telegram-bot у меня не работает аутентификации через Updater:

updater = Updater(token='YOUR_BOT_TOKEN', use_context=True)

выдается ошибка TypeError: init() got an unexpected keyword argument 'token' .

Но работает таким образом:

application = ApplicationBuilder().token('YOUR_BOT_TOKEN').build()

logging.exception(msg, *args, **kwargs)

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