Pull to refresh

Comments 22

После, в терминале Linux, или командной строке Windows вводим
pip install pytelegrambotapi


ИМХО было бы не плохо, не устанавливать пакет(ы) глобально, а рассказать, что для таких целей лучше использовать virtualenv или pypenv
Прекратите, пожалуйста, пихать доскер по делу и без.
Почему? Докер же беспрецедентно прекрасен. Если у вас пачка специфических зависимостей, то спрятать их в контейнер — это лучшее, что можно придумать для тех, кому нужно «ехать», а не «шашечки». Те, кому «шашечки», всё и так поставят да развернут, пропишут и запустят, но докер даёт унификацию и изоляцию.
Вообще, у меня, простите, бомбануло. Обоснуйте, пожалуйста, подробнее почему вы думаете, что контейнеризация в этом проекте не уместна?
Потому что это проект на пять условных строчек кода. Потому что это проект на Python, который изо всех сил старается стать платформонезависимым и гарантировать одинаковое поведение на всех системах, для которых есть интерпретатор. Потому что, в конце концов, это стрельба из пушки по воробьям. Контейнеризация уместна, например, если Вы написали большое приложение с кучей зависимостей, вплоть до таких, которые нужно собирать руками, как, например, это было со многим ПО для кодирования MP3, для многого приходилось собирать libmp3lame0 ручками. Туда же идёт nginx, который по умолчанию собирается статически. Тут да, каждый раз собирать утомительно.
А здесь нет никакого выигрыша, кроме времени установки. Контейнер будет отжирать всяко больше, чем голый интерпретатор, которому хватит и virtualenv. И всё ради чего? Чтобы модным «девопсам» было проще запустить пятистрочник?
все зависит от того — что у вас в избытке, а чего в недостатке.
если у вас есть деньги и время на время девопса, вы будете смотреть в виртуаленв, а если у вас нет времени, а есть деньги — то вы (не сразу, пару раз протормозите, но жизнь намекнет) вы потратите на докер\вируалку\что угодно, что масштабируется быстрее чем люди.
Дело в том, что маленький докер-файл, размещенный в репозитории, не отменит возможности поставить и запускать проект через virtualenv или вовсе глобально. Просто будет дополнительный способ развернуть приложение быстро и просто, возможно с маленькими накладными расходами. Почему бы не предоставить право выбирать способ установки конечному пользователю? Кроме того, докер позволит без танцев с бубном развернуть вашего бота на каком-нибудь NAS вроде synology или на современном медиа-плеере. Да, контейнер будет прилично весить по сравнению с «чистой» установкой, но такие ресурсы нынче дешевы.
Коллега vassabi в соседнем комментарии прав, не знаю кто влепил ему минус за вполне разумную точку зрения.

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

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

Некропостинга коммент) Удивлен, что в этой эпической зарубе никто не вспомнил о такой базовой функциональности pip как requirements.txt

И да, я тоже не могу понять нахрена тут докер, и о каком девопсе в "telegram helloworld" пишет чел ниже выше

в документации на библиотеку детально написано все — по ссылке github.com/eternnoir/pyTelegramBotAPI от авторов подробный и понятный пример.

interval=0 — крутовато, конечно. Тогда уже надо реализовавать вебхук
Чем обоснован выбор обработчика по типу с if/elif/else, когда существует regexp для текста и commands для команд?
Ох, уж этот telebot. Как раз ситуация, когда простота хуже {подставить по желанию}.

Каждый первый вопрос на профильных форумах, у меня бот на питон (telebot), как мне «изменить/добавить» и дальше простенький вопрос не выходящий за рамки документации Bot-API телеги. А человек уже в тупике.

API простейшее, зачем хаутушки делать с определенным враппером? По-правильному ботовод должен знать API, а как POST-запросы слать или какую обёртку использовать, дело совсем уже десятое.

Очередное описание телебота получилось, а не подход к построению бот-фермы. Где сохранение состояния, где подход к расширению функциональности?
Вопросы возникают потому что люди читают статьи «как сделать бота за 5 минут не умея программировать», а документацию не читают.

Частично по теме — что сейчас с ботами в свете блокировок? Есть бесплатный и безболезненный способ обойти РКН?

Держать серверы в другой стране.
А если это невозможно?
Самый простой вариант — подключать бота через прокси. Многие библиотеки это умеют из коробки. Не знаю насчет mtproto прокси, но http и socks поддерживаются.
Конечно, как же без global. А что будет, если этим ботом больше одного человека начнет пользоваться? Потом еще куча новичков на Тостер побежит, спрашивать, а чего это не работает.
как только кто-то попробует с двумя адресатами одновременно общаться — тут же и споткнется об него и перепишет.
Зато обратная ситуация (забытый global, когда он нужен) — одна из самых коварных фишек питона для новичков.
Нет, во-первых, новички не поймут проблему, во-вторых, не нужно новичкам вообще использовать global, он нужен очень редко и только тогда, когда понимают для чего он и почему без него нельзя обойтись.

Для текущего проекта с ботом выбрал aiogram: там и асинхронщина, и конечные автоматы, и ещё много чего

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

Вижу: глобальные переменные, ловим Exception, форматирование через конкатенацию. Это же читают новички, не надо так!


Кстати, вы делаете register_next_step_handler, стоит отметить что при перезапуске бота по дефолту все такие хэндлеры слетают. А сохранять эта штука умеет только в pickle, что как бы тоже не очень.

Sign up to leave a comment.

Articles