Рефакторинг и запуск Telegram бота на сервере

  Рет қаралды 21,678

Диджитализируй!

Диджитализируй!

Күн бұрын

Рефакторинг кода Telegram бота «Ботаним!» и запуск бота на сервере
Первый стрим с разработкой бота - • Стрим! Пишем Telegram ...
Второй стрим с доработкой бота - • Стрим! Рефакторинг Tel...
Разбор критики кода прототипа бота - • Бото*бы, говнокод и пр...
Исходники - github.com/alexey-goloburdin/...
Бот - botanim_to_digital_bot.t.me
* Мой курс «Хардкорная веб-разработка» - course.to.digital
* Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
* Telegram - t.me/t0digital
00:00:00 О чём речь
00:01:25 Сравниваемые версии
00:02:07 Документация
00:03:27 GitHub Actions и dev tools
00:06:16 Структура проекта
00:10:38 Точка входа в приложение
00:13:03 Контроллеры и шаблонизатор
00:35:24 Бизнес-логика
00:49:20 Deploy - запускаем бота на сервере
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

Пікірлер: 68
@grechino2412
@grechino2412 Жыл бұрын
Наконец-то! Александр доволен!!
@gd_shine
@gd_shine Жыл бұрын
Я бы так не сказал)
@sachivkin
@sachivkin Жыл бұрын
Алексей, спасибо за ваш труд! Великолепный материал! 🔥 Бот просто супер за книги стало голосовать очень удобно! 👍
@sfm6295
@sfm6295 Жыл бұрын
Наконец-то полезное видео на этом канале, давно ждал возвращения
@romana3387
@romana3387 Жыл бұрын
Алексей, Катаны благодарят вас за вашу работу. Ваш труд помагает нам становиться лучше.
@teplodvij
@teplodvij Жыл бұрын
Отличный материал ! Спасибо Вам огромное ! Ваш материал помогает не просто учится , а и полюбить сферу IT ! Удачи !
@t0digital
@t0digital Жыл бұрын
Спасибооо!
@ivanmatew568
@ivanmatew568 Жыл бұрын
Спасибо! Единственное, что нет перерыва на отжимания. :)
@islamgadzhiev9892
@islamgadzhiev9892 Жыл бұрын
Ранее форкнул репозиторий бота, как старт для своего, так как уже просмотрел всё по написанию с 0 и рефакторингу, решил не переизобретать и не тратить время, взять ваш. Но это было недели две-три назад) Чувствую, надо будет обновить форк и хоорошо, что не начал писать поверх в своём репо своего бота ещё, можно будет неплохо так обновить проект перед началом работы.
@kapitanov1025
@kapitanov1025 Жыл бұрын
Обожаю тебя, твои скиллы вдохновляют меня!
@shps.online9830
@shps.online9830 Жыл бұрын
А что там кстати с серией видео о сервисе для стримеров "аналога бусти" ? оно как то двигается или забросили проект? Интересно было смотреть)
@lma-ata
@lma-ata Жыл бұрын
Смотрю и заряжаюсь. благодарю
@lagrange9343
@lagrange9343 Жыл бұрын
Алексей, а почему вы не использовали loguru?
@aweryc
@aweryc Жыл бұрын
Вот если бы у автора был Пайчарм было бы удобно к определениям функции переходить) А так хорошая серия видосов! Интересно посмотреть другой подход к выполнению привычных мне задач.
@t0digital
@t0digital Жыл бұрын
Да и в вимасе есть go to definition с lsp сервером, то есть для любого нужного языка, хоть для 1С. Показывал в гитхабе, чтобы можно было удобно сравнивать 2 версии, старую и новую
@kirilllpopov
@kirilllpopov Жыл бұрын
Добрый день, Алексей! Не будет ли тут правильным использовать асинхронный Jinja2 и асинхронный request для функции "services/validation.py:_get_tg_url" вместо "urllib"? У нас же будут блокироваться все другие асинхронные таски , разве нет?
@t0digital
@t0digital Жыл бұрын
Привет! "services/validation.py::_get_tg_url" занимается просто форматированием строки без IO операций, асинхронность тут не нужна. Реальный запрос уходит из "services/validation.py::is_user_in_channel", и тут действительно асинк я зыбыл добавить, залил правку. По поводу асинхронного Jinja - из шаблонов вызывать IO операции плохая затея, не стал делать рендер асинхронным.
@ThePirateHistory
@ThePirateHistory Жыл бұрын
35:50 на рефактор, "days" вместо: 1) "declensions_of_multiple_endings" 2) или попроще "multiple_book_endings" а так же переменная с названием "p". На допустим "ending_mode" или "ending_variant" или "multiple_ending_mode" или "multiple_ending_variant".
@gustaugutter9477
@gustaugutter9477 Жыл бұрын
сделай пулл реквест лучше
@blacksun9518
@blacksun9518 Жыл бұрын
Леша классный парень)
@Name-wv3ol
@Name-wv3ol Жыл бұрын
Спасибо за видос! Кое что полезное для себя подчеркнул. Хотелось бы отметить финальную часть про деплой -- очень грустный привет из прошлого =) Ну можно же было простенький CICD сделать + бонусом например теми же линтерами в CI обмазать. Деплой руками с тележкой хардкода в 2023 это не клево =)
@t0digital
@t0digital Жыл бұрын
Так линтеры есть в github actions. Black, flake8 (ruff щас накатываем вместо него) и pyright. Раскатку, ansible и контейнеры не стал пока делать, не предполагаю частых обновлений или перезаливов на разные сервера
@Name-wv3ol
@Name-wv3ol Жыл бұрын
@@t0digital Ну разумеется там есть линтеры) Планируешь видос про автоматизацию деплоя и быть может автотесты в CI?
@t0digital
@t0digital Жыл бұрын
@@Name-wv3ol может быть. Хотя я давно ci настраивал последний раз, в гитлабовской тулзе)
@Name-wv3ol
@Name-wv3ol Жыл бұрын
@@t0digital Ну я сам больше Гитлаб предпочитаю :) и буду только рад, если надумаешь туда с проектом переехать и видос запилить!
@aangryguyy
@aangryguyy Жыл бұрын
Здравствуйте! Хотел задать вопрос. Зачем создавать отдельный файл .py для описания всего одной функции? Это сделано только со стороны красоты или имеет практическое применение?
@t0digital
@t0digital Жыл бұрын
Ты хочешь что-то изменить в команде бота /now. Ты написал бота пол года назад и уже не сильно помнишь, что там как. Ты открываешь структуру проекта, видишь handlers - ага, значит это контроллеры, то, что нужно. Открываешь папку handlers и видишь там файл now.py - о, значит, это то, что нужно! Открываешь и видишь там только то, что относится к этому контроллеру. Это очень удобно. Если не идти таким путём. Ты открываешь структуру проекта и тебе непонятно, какой файл открывать. Допустим, все контроллеры лежат в одном файле handlers.py. Тогда тебе надо открывать этот файл и искать в нём то, что тебя интересует поиском по файлу или глазами или ещё как-то. В любом случае тебя будет окружать то, что тебе сейчас не нужно - другие контроллеры и их обвязка. Проще - лучше. Когда сразу всё понятно и ничего не отвлекает от нужной тебе в данный момент сути, это хорошо.
@aangryguyy
@aangryguyy Жыл бұрын
@@t0digital Спасибо.
@DimiEG
@DimiEG Жыл бұрын
Бить по файлам также считаю не эффективным. Поиск внутри файла нужной функции занимает секунды особенно в nvim. 😉
@t0digital
@t0digital Жыл бұрын
@@DimiEG тогда лупите все в одном файле. Поиск в виме быстрый даже когда строк десятки тысяч
@DimiEG
@DimiEG Жыл бұрын
@@t0digital Есть такое понятие «как всё в меру». И совсем не бить плохо, и бить всё подряд тоже. То что поиск в vim мега удобный полностью согласен. У меня был один знакомый, известный программист игрушек, так он на C++ практически всю программу в одном файле писал. Там и было 10000 строк. Я удивлялся. Но у него такой стиль был. И всё работало при этом.
@Panda333ist
@Panda333ist Жыл бұрын
Может сделаете настройку мака на арч процессоре , как с Manjaro, очень помогло как куда и что
@xsend24
@xsend24 Жыл бұрын
Интересно было
@alexaxo
@alexaxo Жыл бұрын
Алексей, спасибо за ваши видео. Очень интересует тема: как перевести рабочего бота на Вебхуки. Нигде не смог найти нормальную инструкцию для этого. Как установить веб-сервер и т.п. Как это настроить дома и протестировать и потом соответственно на сервере.
@user-oi1zl6de8i
@user-oi1zl6de8i Жыл бұрын
Деплой в контейнер не стали делать?
@user-xx6yb2cr2h
@user-xx6yb2cr2h Жыл бұрын
А Python используется из окружения venv или основной? И как указать в файле . service чтобы бот запускался через venv?
@klasdtigra
@klasdtigra Жыл бұрын
там уже указан интерпретатор из венка который создает poetry
@Vorono4ka
@Vorono4ka Жыл бұрын
Не знал раньше про systemd, спасибо большое за подробный гайд по деплою и за обзор изменений, полезненько! А насчёт systemd, если мне потребуется, то как я смогу как-то посмотреть консоль бота?
@t0digital
@t0digital Жыл бұрын
Имеешь в виду сообщения, которые ты видел в консоли, когда запускал бота вручную? sudo journalctl -xe их покажет. Хотя надо настраивать логирование в файл, конечно, чтобы сразу логи писались в файл. Это легко сделать, благо что сразу используется logging, а не print
@Vorono4ka
@Vorono4ka Жыл бұрын
@@t0digital спасибо, не знал про эту команду, а логгинг у меня настроен - loguru, значит буду смотреть в файлах лога :)
@tlenbit
@tlenbit Жыл бұрын
Здравствуйте! Спасибо за отличное видео. Небольшое замечание - структуры данных, которые у вас гоняются по приложению некорректно называть DTO (хотя так почему-то очень часто делают) en.m.wikipedia.org/wiki/Data_transfer_object
@t0digital
@t0digital Жыл бұрын
Потому что они используются не для передачи данных между процессами? Мне кажется, это уже устоявшаяся терминология и для такого сценария использования в рамках одного процесса. Но не уверен, что это где-то зафиксировано, на что можно сослаться в этом вопросе
@tlenbit
@tlenbit Жыл бұрын
Да, DTO нужны чтобы экономить время, когда делаются дорогие (долгие) вызовы. Например, когда делаются сетевые запросы. Внутри DTO упаковывается "лишняя" инфа, чтобы не делать за этой инфой потом дополнительного запроса. Что-то такое. Сам из не использовал) В любом случае 1) в примере на видео это точно не DTO 2) очень часто люди некорректно используют этот термин именно в том же контексте, что и у вас в примере
@t0digital
@t0digital Жыл бұрын
Спасибо, почитаю больше о DTO
@DimiEG
@DimiEG Жыл бұрын
Не забываем увеличивать шрифт, так как не все на компах смотрят, а бывает, что с расстояния на ТВ экране.
@jamjam3337
@jamjam3337 Жыл бұрын
👍
@aftansin607
@aftansin607 Жыл бұрын
Сделай видос как сделать Local Bot API Server чтоб можно было видосы отправлять через бота
@galua
@galua Жыл бұрын
А телега умеет кушать markdown? Чтобы не писать свой конвертер из html
@t0digital
@t0digital Жыл бұрын
телега умеет в md, тут в целом свой конвертер я не писал - просто заменял переносы строк, чтобы самому управлять этими переносами строк, а не использовать переносы из файла шаблона
@t0digital
@t0digital Жыл бұрын
я так понял md или html там используется только для форматирования текста жирным/курсивом, добавления ссылок, а переносы строк в любом случае остаются такими же, как в отправленном тексте
@alexnoodles8290
@alexnoodles8290 Жыл бұрын
так и знал без webhook и без https и без nginx ,,, хочу инструкцию для webhook с настройками nginx на бесплатном домене с https бесплатном на бюджетном хостинге ,,, ПОЖАЛУЙСТА (интересно для больших нагрузок)
@lma-ata
@lma-ata Жыл бұрын
бесплатный только сыр в мышеловке)
@TheAcekon
@TheAcekon Жыл бұрын
может ему скрол отключить на время записи видоса?
@t0digital
@t0digital Жыл бұрын
Может не надо?
@TheAcekon
@TheAcekon Жыл бұрын
@@t0digital Оно почти не видно на что показываешь текст летает без остановки
@t0digital
@t0digital Жыл бұрын
@@TheAcekon учту. Но это ж обзор. Без глубокого погружения в каждый блок кода
@TheAcekon
@TheAcekon Жыл бұрын
@@t0digital Я даже не везде успевал понять в какую строку смотреть, когда смотришь в код который уже знаешь то конечно быстрей ориентируешся.
@vsevolod9987
@vsevolod9987 Жыл бұрын
Чо то сложно,ничего не понимаю 😁
@panchwall_devops
@panchwall_devops Жыл бұрын
годнота подъехала
@t0digital
@t0digital Жыл бұрын
Спасибо:)
🍟Best French Fries Homemade #cooking #shorts
00:42
BANKII
Рет қаралды 16 МЛН
I Need Your Help..
00:33
Stokes Twins
Рет қаралды 135 МЛН
How I prepare to meet the brothers Mbappé.. 🙈 @KylianMbappe
00:17
Celine Dept
Рет қаралды 52 МЛН
Pray For Palestine 😢🇵🇸|
00:23
Ak Ultra
Рет қаралды 29 МЛН
#76. Как установить SSL сертификат REG.RU
9:41
Дневник тестировщика
Рет қаралды 10 М.
Деплой Telegram бота на Python | PythonAnywhere
9:44
PyLounge - программирование на Python и всё о IT
Рет қаралды 39 М.
Telegram Bot на Python за час. Создание ботов для новичков.
50:17
🍟Best French Fries Homemade #cooking #shorts
00:42
BANKII
Рет қаралды 16 МЛН