Pull to refresh

Comments 39

Я не смог. При зрении -3 не ношу очки.

Могу предложить другую схему?
Выкинуть все, что Вы использовали.
Оставить:


  1. Сервер на digitalocean — будем на него деплоить scp, там будет крутиться наш бот. Можно взять не DO, а heroku или любое другое аналогичное решение.
  2. Gitlab — в нем мы можем хранить код (безлимитное количество приватных репозиториев). Также гитлаб поможет нам собирать код и деплоить его на сервер из п.1.

Разработку можно вести прямо в WebIDE гитлаба. Она поддерживает подсветку синтаксиса python. И вряд ли интерфейс WebIDE гитлаба будет сильно хуже редактора прямо на самом смартфоне.

Когда использовал heroku, я даже с компа иной раз правил код сразу в GitHub.

Сейчас деплой происходит так: локально билдится контейнер и выкатывается на docker hub, затем с помощью ansible прогоняется плейбук по виртуалке в hetzner. Он пуллит с докерхаба образ и сравнивает с текущим, если есть изменения то перезапускает systemd unit сервис, который перезапускает докер контейнер с ботом. Планируется еще сделать чтобы по пушу в гитхаб сборка контейнера и выкатка в докерхаб была автоматом, с наскока не разобрался. Github вполне не хуже gitlab, а потому абсолютно нет смысла менять инструмент.

Полностью солидарен с тем, что "Github вполне не хуже gitlab". Но тут нюанс, что пока еще github не полностью self-contained решение. В случае гитлаба — там же можно хранить образы докеров, не заливая их на докер-хаб, к тому же докер-хаб для более 1 приватного регистри — платен. Можете сами решить насколько это приемлемо, я не навязываю какой-либо конкретный продукт.


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

ну, либо настраивать интеграцию со стороны докерхаба, либо можно воспользоваться github actions. Варианты ± равноценные.

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

Это относится к любому SaaS сервису. Я уже говорил, что DockerHub бесплатен только для одного приватного регистри, а завтра они точно так же могут изменить правила игры (тем более, что над Docker Inc. сгущаются тучи в связи с https://habr.com/ru/company/flant/blog/475814/ )


Ну и смущает вендор лок

вендор-лок в случае гитлаба весьма условный. Место хранения кода — легко поменять (на bitbucket, github, anything else). Сборщик кода (CI) — можно легко поменять на circle-ci, travis, jenkins etc. Хранение образов — тоже легко перекатиться на любой registry. И т.д. Вопрос именно в трудоемкости переноса — она есть, она не ничтожна, она ощутима, но не беспредельна. И это не из серии перехода с 1С на SAP.

"Как я писал бота" вижу. Взгляда на современное программирование спустя 25 лет перерыва не вижу, а было бы интересно. Или этот взгляд описывается терниями с vpn/proxy и ркн?

Нет красоты кода, о ресурсах никто не заботится. Хотя красоту скорее всего может увидеть извращенец мазохист. До меня очень быстро дошел смысл фразы знакомого программиста “Посмотри прогу, может быть разберешься”. Самый главный взрыв мозга у меня был, когда я наконец то осознал, что код событийный, а не последовательный. Это другой уровень.
Вторая проблема отсутствие хорошей документации. Даже на басурманском.
Непредсказуемый результат как в примере с message.chat.id.

Решил дописать. Вот есть задумка добавить водяной знак на видео. Как найти библиотеку которая поможет? Или какая библиотека работает с html? И просто риторический вопрос — почему тот же Дуров не предусмотрел единой базы каналов и ботов?
Нет красоты кода, о ресурсах никто не заботится.

Это вы посмотрели код каких-то ботов, и на основании этого делаете выводы о современном программировании?


Вторая проблема отсутствие хорошей документации.

Хорошей документации на что?


Вот есть задумка добавить водяной знак на видео. Как найти библиотеку которая поможет?

video watermarking in python


Или какая библиотека работает с html?

html processing in python

Вторая проблема отсутствие хорошей документации.
<<Хорошей документации на что?>>
Извините, а примеров в статье недостаточно?

Нет. Потому что, насколько я могу понять по вашему тексту, подавляющая часть ваших претензий — к апи телеграма и/или какой-то реализующей его библиотеке.

С чем столкнулся о том и написал. И слово то какое нехорошее "претензии".

И слово то какое нехорошее "претензии".

Такое же, как "проблема".


С чем столкнулся о том и написал.

Ну то есть вы столкнулись с проблемой в какой-то конкретной области, а пишете о "современном программировании"?

  • Если бы все так было просто, то не существовало бы два разных слова.
  • Предложите другое, более полное название статьи. ИМХО в названии есть все "необходимые и достаточные условия"
Если бы все так было просто, то не существовало бы два разных слова.

Так я и не говорю, что это одинаковые слова, я говорю, что одно из них не более "нехорошее", чем другое.


Предложите другое, более полное название статьи.

О, это очень просто. "Как я писал бота для Телеграм после 25 лет перерыва в программировании".

Иезуиты аплодируют. Надо понимать что в название уже заложено отношение (видение) автора к проблеме.

Ну так об этом и речь: что проблема в заголовке озвучена одна, а в посте написано совсем другое.

ИМХО это спор стакан наполовину пуст или полон.

Эджайл манифест.


Хороший продукт — важнее хорошей документации.
Это не означает, что последней не должно быть в принципе, но в условиях сжатого TTM документация без продукта нафиг никому не нужна. Поэтому имеем, что имеем

Вот есть задумка добавить водяной знак на видео. Как найти библиотеку которая поможет?
video watermarking in python
Или какая библиотека работает с html?
html processing in python


Спасибо.

Очень сомнительным решением выглядит загрузка видео с YouTube, очистка его от рекламы и выкладывание на свой канал. Да ещё и со своими водяными знаками. Во-первых, права на такое действие автор видео явно не передавал (если в подписи к видео не указано иное… Ну или если нет прямой договоренности с автором). Во-вторых, на создание видео были потрачены усилия, время и, вполне вероятно, деньги. Так что автор имеет полное право поставить рекламу в видео, чтобы хотя бы попытаться выйти в ноль (а может и в плюс) по затратам. Это не неуважение к пользователю, это просто желание получить условно-справедливую оплату за свою работу. А лишать авторов контента этого — ну, такое себе… Кто-то из-за этого (снижение заработков) может просто перестать записывать и выкладывать интересные ролики.

  1. Пока в боте не реализована возможность делать водяной знак на видео. Хотя думаю сделать, т.к. часто вижу свои ролики без ссылок на источник. :-)
  2. Рассмотрим ситуацию:… имея дома нож я что потенциальный Чикотила? Передав кому то нож — я тоже являюсь пособником преступления? Нет — а уж хлеб им режут или кого то, я не могу нести ответственности.
Тут же столкнулся с интересным моментом: хотя шрифт и является неотъемлемой частью библиотеки PIL, так как в первой строке написано локально работает, а в Docker — нет.
ImageFont.truetype("Pillow/Tests/fonts/FreeMono.ttf", width//20)

Вы, я так понимаю, с тем, где и как размещаются пакеты в python разбираться не стали? И слово Tests в пути вас тоже не смутило?

К сожалению не стал и не смутило. За месяц я переварил такой объем инфы, что иногда на ровном месте делал глупости. Я никогда не работал раньше с Линуксом, не знал даже слов Python, github, heroku, имел представление о прокси как банальный эрудит, а знакомство с VPN сводилось исключительно к использованию ТОР браузера.

У меня, простите за прямоту, создается ощущение, что ваш "взгляд на современное программирование после 25 лет перерыва" сводится к "за месяц не разобрался". Ну да, это нормально. За месяц не разберешься.

pyTelegramBotAPI — Одна из основных библиотек при написании бота для Телеграм.


Ну зачем так-то?

Есть же aiogram:
  • со своевременными обновлениями (день в день с релизами Teleram Bot API)
  • с async, а не с воркерами на тредах
  • с готовыми решениями (FSM, LeakyBucket и др.)
  • с готовыми интеграциями (Redis, Mongo и др.)
  • с русскоязычным сообществом


+ В статье было бы уместно сослаться на перечень библиотек/фреймворков, опубликованный в документации Telegram:
core.telegram.org/bots/samples
Наконец бот написан, оттестирован.

За первые пару минут пользования ботом наткнулся на пару весьма неприятных багов, которые убивают весь функционал Вашего бота:
  • После первой отправки боту изображения — оно возвращается корректно. При последующих отправках возвращается всё та же картинка из первого сообщения
  • При попытке загрузить видео с YouTube, независимо от ссылки, в ответ ты всегда получаешь Гену с Чебурашкой

image
image

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


Не совсем ясно, какие такие пользователи привыкли к «оформлению сообщений с помощью бота», если обе его функции практически полностью нерабочие.

Я вчера его "сломал". Сегодня буду разбираться, что случилось. Приношу извинения. Проект не коммерческий. :-)

При попытке загрузить видео с YouTube, независимо от ссылки, в ответ ты всегда получаешь Гену с Чебурашкой

тонкий намёк на грядущий Чебурнет....

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

Добавил
import moviepy
from moviepy.editor import *
и все порушилось. Думаю автоматически подгрузилась OS из moviepy

Поэтому и рекомендуют избегать неявных импортов :)
Only those users with full accounts are able to leave comments. Log in, please.