Тёмный

Пишем Telegram бот для учёта расходов с Python, Asyncio/Aiogram, SQLite и Docker 

Диджитализируй!
Подписаться 164 тыс.
Просмотров 210 тыс.
50% 1

Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram: t0digital.t.me
Сказать спасибо за это видео можно здесь - boosty.to/digitalize.team
В этом видео мы реализуем Телеграм бота для учёта личных расходов с бюджетом, категориями расходов и базовой статистикой. Использовать будем Python и Aiogram с Asyncio, в качестве базы данных легковесный движок SQLite, а результат работы упакуем в Docker контейнер для быстрого разворачивания на любом сервере.
Исходный код на Github: github.com/alexey-goloburdin/...
0:00 Telegram бот для учёта личных финансов
0:43 ТЗ на бота
3:01 Демонстрация работы бота
5:07 Используемые библиотеки и технологии
7:00 Aiogram
7:29 Создание бота, получение токена
8:30 Обход блокировки Telegram
9:40 Инициализация бота
10:36 Добавление расходов
12:27 Модуль expenses
18:22 Работа с категориями
19:15 Структура БД
21:49 Модуль работы с БД
24:01 Продолжение по категориям
25:35 Удаление расхода
26:33 Просмотр расходов
29:00 Статистики
30:30 Docker
33:00 Выводы
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

Опубликовано:

 

9 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 484   
@t0digital
@t0digital 6 месяцев назад
Мой курс «Хардкорная веб-разработка» - course.to.digital Вжух!
@t0digital
@t0digital 4 года назад
С Новым 2020 годом, друзья! Как вам видос, узнали что-то новое-полезное? На разработку и запись ушло очень много времени, хочется верить, что материал принесёт пользу! Всем спасибо за ваши просмотры, лайки, комментарии - это очень помогает продвижению видео. До связи в Новом году!
@user-bq3ll8ph5j
@user-bq3ll8ph5j 4 года назад
Спасибо за то, что ты делаешь! Чувствуется уверенность опытного профессионала, много полезного у тебя подцепил.
@t0digital
@t0digital 4 года назад
Спасибо, Денис!
@eugennegue3578
@eugennegue3578 4 года назад
Спасибо, действительно читаемый код, есть чему поучиться
@t0digital
@t0digital 4 года назад
@@eugennegue3578 Спасибо!
@nobeing6242
@nobeing6242 4 года назад
спс
@st_sergey9891
@st_sergey9891 4 года назад
Вот это здорово... Спасибо за труд, круто делаете. Успехов в новом году!
@t0digital
@t0digital 4 года назад
Спасибо! С Наступающим!
@ateemo
@ateemo 3 года назад
когда в конце 2020 получаешь пожелание хорошего 2020. :mehh:
@t0digital
@t0digital 3 года назад
Хахахах :)
@2TenOClock2
@2TenOClock2 2 года назад
ага, да и телеграмм уже работает :)
@pavel_trpn
@pavel_trpn 2 года назад
Уже середина 22-го а пиз**ц даже и не собирается уходить...
@sereginkozik7507
@sereginkozik7507 Год назад
В конце 2022 понимаем, что 2020 оказывается был хорошим годом.
@sereginkozik7507
@sereginkozik7507 Год назад
Привет из 2023!!! С рождеством христовым!!!
@antonnesterenko.
@antonnesterenko. 4 года назад
Спасибо за тему - очень интересно развивать тему с такими практическими решениями для жизни. Если у тебя будет возможность пожалуйста продолжай такого рода решения практических задач!
@k_o_l_b_a_x8190
@k_o_l_b_a_x8190 4 года назад
Ай ждал! Прям НГ подарок! С наступающим
@t0digital
@t0digital 4 года назад
Йее:) Спасибо! С Наступающим 2020м!
@byclassicall
@byclassicall 4 года назад
Спасибо, материал и его подача как всегда на высоте. С наступающим!
@t0digital
@t0digital 4 года назад
Спасибооо! С Наступающим!
@user-cr5xp4nt2y
@user-cr5xp4nt2y 4 года назад
Отличное видео, Спасибо! С наступающим!
@t0digital
@t0digital 4 года назад
Спасибооо! С Наступающим!
@user-lz3ez3nn4j
@user-lz3ez3nn4j 4 года назад
Спасибо, с Новым годом! Удачи!
@t0digital
@t0digital 4 года назад
Спасибооо, счастливого 2020го!
@ivanaytzhanov8846
@ivanaytzhanov8846 4 года назад
Спасибо за все эти полезные замечания по поводу организации кода, особенно про разделении архитектуры на "клей" и бизнес-логику (можно еще добавить сюда низкоуровневый код, если он есть). Вроде и так все понятно про это разделение, но с наглядным примером намного лучше усваивается
@t0digital
@t0digital 4 года назад
Согласен. Спасибо!
@canada946
@canada946 4 года назад
Как интересно рассказываете! Про функции которые начинаются с нижнего подчеркивания не знала раньше, спасибо. Рассказывайте чаще)
@t0digital
@t0digital 4 года назад
Йее, спасибо! 🙏
@user-qw7qh5tz2t
@user-qw7qh5tz2t 4 года назад
С наступающим вас! Спасибо за видос под новый год!
@t0digital
@t0digital 4 года назад
Спасибооо, с наступающим!
@ArtemOsadchii
@ArtemOsadchii 3 года назад
Спасибо за видео и отдельно за исходники на гитхабе. Очень полезно для тех, кто уже знает основы Python и хочет сделать какой-то реальный проект. Пожелания: 1. В видео вы говорите про ТЗ. Если вы делали ТЗ к этому проекту, можно на него взглянуть? Очень хотелось бы посмотреть на примере, как оно должно выглядить, хотя бы для личного проекта. 2. Мне лично не хватило (и, как я понял из коментов, многим остальным тоже) объяснений как задеплоить это приложение на сервер, на тот же Heroku. Как запустить на локальной машине понятно, но если действительно пользоваться этим ботом, то нужен запуск на сервере.
@sainco3036
@sainco3036 4 года назад
Спасибо и с наступающим!
@t0digital
@t0digital 4 года назад
С Наступающим!
@alexfish289
@alexfish289 4 года назад
Идеальный подарок на Новый Год.
@t0digital
@t0digital 4 года назад
Спасибо :) С Наступающим!
@LobanovSpace
@LobanovSpace 4 года назад
Смотрю видео после нового года, тоже нормально)
@innocence3158
@innocence3158 4 года назад
Нереально суперское видео! С удовольствием посмотрел бы хоть 5 часов лайв разработки, интересно понять ход мыслей опытного разработчика :)
@t0digital
@t0digital 4 года назад
Спасибо! Сделаем возможно:)
@stabben
@stabben 4 года назад
Спасибо за видео! Хотелось бы больше видео касающегося именно проектирования и архитектуры приложений
@t0digital
@t0digital 4 года назад
Буду делать материалы на эту тему обязательно
@user-pf8sy8en4b
@user-pf8sy8en4b Год назад
Спасибо большое, очень полезный материал
@user-uo4ck4cp5d
@user-uo4ck4cp5d 4 года назад
С наступающим!!!! Очень нравится канал) продолжайте в том же духе!! )))
@t0digital
@t0digital 4 года назад
Спасибо! Будем продолжать!
@user-rs5zq9hy4m
@user-rs5zq9hy4m 4 года назад
Дождался урааа!! Спасибо!! Судя по просмотрам и комментариям тема ботов все еще популярна, но почему-то никто не снимает по ней ничего..
@t0digital
@t0digital 4 года назад
Боты популярны и, думаю, будут набирать ещё с ростом популярности нейросетей и лёрнига:)
@BLVCKxSONNET
@BLVCKxSONNET 4 года назад
Благодаря такому качественному и познавательному контенту я научился нажимать кнопку "подписаться" и лайкать видео. Это просто шок, какой ты крутой! С наступившим тебя, спасибо за видео =)
@t0digital
@t0digital 4 года назад
Йеее, спасибооо! Приятно:) C Наступившим!
@user-jg2qv9tb9n
@user-jg2qv9tb9n 3 года назад
Спасибо за видео!
@alekseysaltykov
@alekseysaltykov 4 года назад
Спасибо! Вынес для себя полезную информацию
@t0digital
@t0digital 4 года назад
Отлично!
@tfxbhfv45688
@tfxbhfv45688 2 года назад
Тоже посмотрел от начала до конца, весьма познавательно для начинающего!
@user-fv2rw2mr2e
@user-fv2rw2mr2e Год назад
Классное видео, так актуально, в голове картника сложилась по проекту и большой респект о лучших практиках программирования! 💯👍
@ananasios
@ananasios 4 года назад
Да неужели 👍 очень ждал
@t0digital
@t0digital 4 года назад
Свершилось:)
@maxshishkn
@maxshishkn 4 года назад
🔥🔥🔥 с наступающим, котан 🐈😎
@t0digital
@t0digital 4 года назад
С Новым годом! Юхуу!
@z0uRChannel
@z0uRChannel 3 года назад
Спасибо за видео
@user-hd2nb2ug9t
@user-hd2nb2ug9t 4 года назад
Привет В одном из видео ты говорил, что сделаешь видео про фриланс(как брать заказ и тд) Очень нужная информация, заранее спасибо
@t0digital
@t0digital 4 года назад
Привет, делал опрос среди подписчиков - эта тема и вообще тема работы над проектами, управления проектами и подобные набрали мало желающих
@flokyantiles8060
@flokyantiles8060 4 года назад
Благодарю за отличный пример бота, лайк и подписка)
@t0digital
@t0digital 4 года назад
Спасибо!
@ved_s
@ved_s 4 года назад
В названии опечатка а так видео отличное! С наступающим новым годом!
@t0digital
@t0digital 4 года назад
О, спасибо, поправил:)
@manul7978
@manul7978 4 года назад
замечание - я думаю не стоит объяснять зачем нужно это приложение. Очень много зря времени на это ушло
@sergeys4732
@sergeys4732 4 года назад
@@manul7978 без тз результат хз!!!
@mihailbuldakov9424
@mihailbuldakov9424 4 года назад
с наступающим!)
@MrGamaliy
@MrGamaliy 4 года назад
Отличный канал. Спасибо!
@t0digital
@t0digital 4 года назад
Спасибооо🙏!
@alphabat3269
@alphabat3269 3 года назад
Спасибо! Очень классный учебный контент и пояснения.
@pskobar
@pskobar 3 года назад
Вот очень интересно конкретно про боты телеграмма на питоне - давайте еще про боты
@Vlamir_ave_tonna
@Vlamir_ave_tonna 4 года назад
С Новым годом! Успехов вам в новом году! Очень нравится ваша подача материала. Пожалуйста, расскажите про докер. Чем отличается от виртуальной машины, как настроить окружение и как переносить контейнеры.
@t0digital
@t0digital 4 года назад
С Новым 2020! Спасибооо! Расскажу про докер обязательно
@hinomuratomisaburo4901
@hinomuratomisaburo4901 3 года назад
Спасибо круто!
@user-rt1fh6yr1j
@user-rt1fh6yr1j 4 года назад
Спасибо за ролик. Хотелось бы посмотреть на процесс написания в лайве, пусть даже это будет и несколько часов видео.
@t0digital
@t0digital 4 года назад
Возможно как-нибудь сделаем такой лайв. Но это действительно будет очень долго - где-то с исследованиями как что работает, где-то с исправлениями ошибок, где-то с рефекторингом
@user-rt1fh6yr1j
@user-rt1fh6yr1j 4 года назад
@@t0digital Хз, лично мне будет очень интересно). Как мне кажется, то многим кто активно учит Питон, тоже. Потомушо в большинстве русскоязычных видео с лайв-написанием чего-либо, авторы занимают позицию типа "Ну, вы повторяйте за мной и всё будет ок", без особых объяснений зачем в данный момент используется именно эта конструкция, что является хорошей/плохой практикой и почему и т.д. Ну и + чаще всего они пишут эхо-бота в тлг/калькулятор/что-то еще, что может поместится в короткий хронометраж.
@MrZasimovich
@MrZasimovich 4 года назад
Іван Галицький аналогично, хотелось бы посмотреть именно вариант написания в реальном режиме с объяснениями, рефакторингом, исправлениями. Интересна практика написания опытных девелоперов/администраторов. Такие примеры экономят просто огромное количество времени на наработку своего опыта.
@t0digital
@t0digital 4 года назад
Значит попробуем делать видео с живым кодингом. Спасибо!
@MrZasimovich
@MrZasimovich 4 года назад
@@t0digital Вам спасибо огромное, что не отказываете!
@Vorono4ka
@Vorono4ka 2 года назад
блин, если честно, зашел посмотреть именно на то как пишется проект, а тут просто его обзор. это конечно тоже хорошо, да, но интересным мне не кажется. рад, что сейчас вы вроде начали делать серию видеороликов о написании проекта с нуля, очень жду последующие части!
@user-cc6dt1jp2t
@user-cc6dt1jp2t 3 года назад
досмотрит до конца! Несколько часов не беда. хотелось бы с вами это пройти и паралельно написать тоже самое, так как я новичек
@serdardurdyev4963
@serdardurdyev4963 4 года назад
Годно! Не понимаю, за что тебя хейтят)Все понятно говоришь)
@yermakov.oleksandr
@yermakov.oleksandr 4 года назад
Очень интересный видео ролик, понравилась подача и стиль написания кода. Было бы интересно в будущем посмотреть как с нуля пишете проект и сразу комментируете его.
@t0digital
@t0digital 4 года назад
Спасибо! Такое видео в живом кодинге это часов на 5. Может как-нибудь сделаю:)
@AnGrigorev
@AnGrigorev 4 года назад
Спасибо! С наступающим, всего и побольше)) Всё пррсто и лаконично. Единственное, я бы файлик с БД вытащил из контейнера и просто маунтил при старте. А то докер пересобрал и всё пропало)
@t0digital
@t0digital 4 года назад
Да,, упустил этот момент, добавлю в репо:) С Наступающим!
@nmi2939
@nmi2939 4 года назад
Хорошее новогоднее поздравление =)
@t0digital
@t0digital 4 года назад
Спасибо!
@sancho2238
@sancho2238 4 года назад
Очень интересный канал, странно что так мало подписчиков
@t0digital
@t0digital 4 года назад
Спасибооо! Растём понемногу:)
@Pendalf61
@Pendalf61 4 года назад
Удивительно, только придумал написать себе такого бота, даже проверил в каталогах, нет такого. Или я плохо искал. И на следующий день мне RU-vid предлагает вот такое.))) Очень полезное видео, тем кто видит всё это (python, docker, sqlite) впервые видео будет очень сложным. Ну а тем, кто не пугается, и чувствует, что может разобраться, то это равносильно походу на неплохой курс по созданию телеграмм бота. Рекомендую с этим кодом плотно поработать и много полезного положите себе в голову.
@someelse989
@someelse989 4 года назад
С первых секунд лайк. Расскажи о своих книгах по программированию.
@t0digital
@t0digital 4 года назад
Расскажу в отдельном видео, спасибо!
@maslick
@maslick 4 года назад
спасибо, хороший видос. добрая критика: учить английский! :-)
@t0digital
@t0digital 4 года назад
Есть такой план на 2020:) Спасибо!
@LobanovSpace
@LobanovSpace 4 года назад
Я с вами мужики)
@passenger000
@passenger000 3 года назад
очень интересная подача, видео смотрятся на одном дыхании, но некорректные произношения и ударения прям убивают(
@Blowjin
@Blowjin 3 года назад
Про ТЗ хорошее замечание, не задумывался раньше(
@user-lu7jx3lr8n
@user-lu7jx3lr8n 4 года назад
Лайк не глядя)
@t0digital
@t0digital 4 года назад
Спасибо!
@valkyreShm
@valkyreShm 2 года назад
Спасибо! Чем больше смотрю, тем меньше говнокода и более читабельный код!
@worldtech2770
@worldtech2770 Год назад
Подскажите пожалуйста , есть написанный скрипт, он каждый час парсит цены с одного магазина. и записывает в переменную в виде словаря, как сделать так что бы, если пользователь в телеграмме при выборе команды /мониторить ,скрипт каждый час проверял переменную и если по заданным настройкам есть данные то , пользователю присылать эти данные с словаря. У каждого пользователя свои настройки по товарам. Спасибо
@vrischikasana
@vrischikasana 4 года назад
У кого проблемы с кодировкой при чтении категорий. нужно удалить файл ./db/finance.db и в файле db.py при инициализации ДБ нужно добавить параметр - encoding='utf-8' def _init_db(): """Инициализирует БД""" with open("createdb.sql", "r", encoding='utf-8') as f: ......
@t0digital
@t0digital 4 года назад
Спасибо!
@LobanovSpace
@LobanovSpace 4 года назад
Отлично
@t0digital
@t0digital 4 года назад
Спасибо!
@dnuykz
@dnuykz 4 года назад
Только нашёл твой канал, и он хороший, хороший монтаж, отличный звук, а Голос это не голос это птичка поёт, лайк подписка
@t0digital
@t0digital 4 года назад
Спасибооо:)!
@romans.6049
@romans.6049 4 года назад
С наступающим. Хорошее и полезное видео. Про парсинг было бы ещё что то для начинающих
@t0digital
@t0digital 4 года назад
Спасибооо!
@user-oi1zl6de8i
@user-oi1zl6de8i 4 года назад
Похоже, что автор канала решил сделать царский подарок своим подписчикам к Новому году. Ну что ж, спасибо.
@t0digital
@t0digital 4 года назад
Именно так:) С Наступающим!
@user-oi1zl6de8i
@user-oi1zl6de8i 4 года назад
@@t0digital Спасибо, уважаемый. С наступающим Новым годом! Счастья, крепкого здоровья, любви и удачи в делах!
@user-gw3wi7is3n
@user-gw3wi7is3n 4 года назад
Неделю назад пришла в голову идея сделать такого бота, а сегодня у тебя выходит видео об этом.Что это если не подарок на НГ?)
@t0digital
@t0digital 4 года назад
О, отлично:)!
@OcenivayKoteni
@OcenivayKoteni 4 года назад
Лаек, коммент, подписка
@t0digital
@t0digital 4 года назад
Спасибооо🙏!
@eugenyskiter2174
@eugenyskiter2174 4 года назад
Отличное видео, хочется подробнее узнать про работу с переменными окружения
@t0digital
@t0digital 4 года назад
Спасибо! Расскажем
@mRelby13
@mRelby13 3 года назад
А можно ли поставить подобные "заглушки" (auth) для определённых команд? То есть, допустим есть команды /reset и /stats, и я хочу, чтобы на эти команды бот реагировал только в том случае, если её отправит владелец. А остальные команды будут доступны всем пользователям.
@andreym2502
@andreym2502 4 года назад
Побольше таких видосов о программировании на Python! Например: программа измерения скорости интернета, чат, чат с шифрованием, программа - даунлоадер
@t0digital
@t0digital 4 года назад
Спасибо! Будем делать
@gdd_burcklock7016
@gdd_burcklock7016 4 года назад
С новым годом) лучше наверное выносить в отдельную табличку алиасы чем писать их через запятую)
@t0digital
@t0digital 4 года назад
Можно
@Slava_tobi_Ukraine
@Slava_tobi_Ukraine 4 года назад
Лучше работать над увеличением доходов, чем сокращением своего потребления когда зарплата маленькая. За видео спасибо!
@t0digital
@t0digital 4 года назад
Да, конечно. Просто при росте дохода всегда на столько же растут расходы и эффект большего дохода быстро сходит на нет, на большие покупки все равно надо копить:)
@Ardbot-fp8oq
@Ardbot-fp8oq 3 года назад
0:19 2020 год... Отличный повод что бы начать прививать)
@user-bq3ll8ph5j
@user-bq3ll8ph5j 4 года назад
Всех с праздником! 2020! Отличный год для подвигов и свершений!
@t0digital
@t0digital 4 года назад
Спасибо! С Новым 2020м годом!
@denefty5189
@denefty5189 4 года назад
Алексей Добрый день! Классный проект и подача подробная! Буду его пытаться сделать рабочим для множества юзеров, его логика оооочень похожа с моим задуманным ботом! Получается что почти всё уже готово осталось добавить многопользовательские возможности
@t0digital
@t0digital 4 года назад
Отлично, рад что полезно! Успехов с добавлением многопользовательского режима - БД я бы уже сменил на постгрес и возможно поставил какой-то ORM или просто несамописную обёртку над БД:)
@denefty5189
@denefty5189 4 года назад
@@t0digital Благодарю за направление!
@user-pt6gy1uk7x
@user-pt6gy1uk7x 4 года назад
Спасибо за видео! Подскажите, почему вы пишите fetchall() вместо fetch_all() ?
@t0digital
@t0digital 4 года назад
Это устоявшееся название, в частности оно описано в PEP 249, которое формализует API библиотек для работы к БД www.python.org/dev/peps/pep-0249/ Так в целом лучше назвать с разбивкой на слова, конечно
@klasdtigra
@klasdtigra 3 года назад
33:34 ну надеюсь хотя б 21 нормальный будет) А вообще надо будет посмотреть, чё там люди сделали, может тоже пулреквестик кину
@omssky7397
@omssky7397 2 года назад
мб для aiogram имеет смысл и с бд что-то асинхронное придумать? aiosqlite например
@sergba
@sergba 4 года назад
Котанизируй! Спасибо!
@t0digital
@t0digital 4 года назад
🤟
@temik4546
@temik4546 4 года назад
привет, ролик супер! не знаком особо с библой для телеги, туда можно вкрутить свои кнопки для бота? чтобы категории допустим висели и не надо было их набирать
@t0digital
@t0digital 4 года назад
Да, можно это сделать и в aiogram
@tomozi1
@tomozi1 4 года назад
Спасибо, отличное видео. Расскажите куда можно выложить готовое приложение; можно ли использовать телеграмм бота внутри локальной сети?
@t0digital
@t0digital 4 года назад
С телеграмом можно работать через long polling (бот опрашивает телеграм на наличие новых сообщений с какой-то периодичностью) и через веб-хуки (телеграм шлёт новые сообщения на указанный ему url). Для второго способа нужен свой сервер, настроенный на нем HTTPs, мы для этого простого бота используем первый вариант с long polling. То есть этот бот можно запустить откуда угодно, лишь бы был доступ к интернету. Я запускал его даже на телефоне в termux, работает.
@Dima-zr7go
@Dima-zr7go 3 года назад
Необходимо сделать почти тоже самое но с 2..3 кнопками в каждом сообщении после нажатия на которых расскрывались доп инфа и шла запись в google Docs кто именно нажал .. Где бы посмотреть похожий пример?
@dmitryk9440
@dmitryk9440 4 года назад
С новым годом! Отличный подарок на новый год) Осталось парочку вопросов: 1) я так понял по коду вы не сторонник sqlalchemy (orm). Если да, то как вы в django подменяете orm модели? 2) в свое время работал с плохо оптимизированными бд под mysql, и понял что конструкции с join кушают много времени, лучше заменять их на нечитабельные where... Замечали ли вы такие баги в sqlite и postgress 3) а на докере не правильно ли было создавать и активировать свое окружение? Как в проекте?
@t0digital
@t0digital 4 года назад
1) Просто не хотелось ставить ORM на 3 таблицы. В Django для простых вещей использую джанговый ORM, да. Но надо понимать, какие физически в базу уходят запросы от вашего ORM - иногда там такой трэш, что мама не горюй) ORM хорош только для простых запросов, которых, впрочем, большинство, а сложные пишутся на сыром SQL. 2) Это вопрос к нормализации и денормализации базы. JOIN двух таблиц всегда работает медленнее, чем SELECT из одной таблицы, но появляются накладные расходы на поддержание целостности и актуальности данных, появляется дублирование данных. Всегда лучше начинать с нормализованной базы с JOIN'ами, не надо преждевременно оптимизировать, пока у вас нет миллионов записей и слишком долгих запросов. 3) докер контейнер это и есть своего рода виртуальное окружение, в нём ведь только одно приложение будет крутиться, наше
@BogdanKozlovskyi
@BogdanKozlovskyi 4 года назад
Алексей, спасибо огромное за видео! Как всегда очень круто, понятно и четко) один вопрос... я сейчас посещаю курсы по Python и мне практически все преподы говорят, что если есть возможность отказаться от использования регулярок, лучше так и делать. Как ты считаешь, насколько это мнение правдиво в Python сообществе и в чем проблема с регулярками?
@t0digital
@t0digital 4 года назад
Регулярки часто это единственный способ решить задачу. Ещё чаще это способ решить задачу в 2 строки кода, а без них будет гораздо больше кода с кучей циклов, проверок и тд. В регулярках не вижу ничего плохого, их многие не любят, потому что не знают - ну и они сложно читаются, надо уметь с ними работать, чтобы прочесть регулярное выражение. Для простых обработок текста они могут быть медленнее, чем просто поиск и замена по строке. Не знаю, что ещё можно отнести к их минусам.
@user-bq3ll8ph5j
@user-bq3ll8ph5j 4 года назад
Существует такая присказка: «У программиста была проблема и он решил применить регулярные выражения..... теперь у программиста две проблемы». Разберись и пойми работу регулярных выражений и тогда для тебя они станут не вопросом, а инструментом.
@user-pt6gy1uk7x
@user-pt6gy1uk7x 4 года назад
@@user-bq3ll8ph5j но останутся вопросом для других членов команды))
@user-bq3ll8ph5j
@user-bq3ll8ph5j 4 года назад
@@user-pt6gy1uk7x пусть догоняют :) Не занижай планку из-за тех, кто не хочет\может учиться.
@user-pt6gy1uk7x
@user-pt6gy1uk7x 4 года назад
@@user-bq3ll8ph5j да не, будет не так - какой-нибудь коллега решит что и так все знает и на глаз там че нить поменяет. На этот конкретно этот случай не будет конечно же юнит тестов. И в самый ответственный момент оно навернется)
@user-xx7so4wo5h
@user-xx7so4wo5h 3 года назад
Спасибо за ролик! Какой шрифт используется при написании кода, если не секрет?
@t0digital
@t0digital 3 года назад
Monaco
@tfxbhfv45688
@tfxbhfv45688 2 года назад
Скажите, есть ли у Вас видео, раскрывающее хорошую практику работы с машиной состояний (МС)? Например, когда бот должен провести > 1 анкетирования пользователя. Как понимаю, для каждого такого анкетирования МС должна быть размещена отдельно? Спасибо.
@t0digital
@t0digital 2 года назад
такого видео у меня нет
@primegod
@primegod 4 года назад
Спасибо! Будет, что поковырять на выходных.
@t0digital
@t0digital 4 года назад
Да:)
@colonizatorgg5960
@colonizatorgg5960 4 года назад
С наступающим!! Алексей, а подскажи куда прятать бизнес логику в джанге? Обычно всё во views.py кидаю
@t0digital
@t0digital 4 года назад
Спасибо, с наступающим! На самом деле это большая проблема джанги, что она в официальной документации не даёт рекомендаций по тому, куда писать основную логику, или даёт корявую рекомендацию писать её в models.py. Я просто создаю в модуле с Django application внутри пакет services и в нём пишу основную логику. То есть | manage.py | conf | some_app | __init__.py | apps.py | models.py | services | service1.py | service2.py | views.py И из views.py уже вызываю логику, которая лежит в services. Такую логику можно вызывать и из соседних Django приложений в проекте.
@colonizatorgg5960
@colonizatorgg5960 4 года назад
@@t0digital Спасибо за развернутый ответ)
@Victoria2396
@Victoria2396 3 года назад
Спасибо за прекрасное видео 😊 Что посоветуешь новичку, который мало знаком с питоном, но нормально освоил aiogram? Что по питону стоит пройти/прочитать, чтоб больше соображать по функциям 😃
@t0digital
@t0digital 3 года назад
книжки почитать нужно - любые по питону, которые понравятся, их сейчас масса
@karpievichvadim772
@karpievichvadim772 4 года назад
Задеплоил вашего бота на сервер, теперь изучаю структуру. Спасибо за топ-контент и комменты в коде! PS. Может кому поможет: при запуске на удаленном сервере была ошибка: no such column: true и пришлось переписать под старую скьюэльку с 1 и 0 вместо true и false, новую поставить не удалось....
@dadyarri
@dadyarri 4 года назад
Спасибо, очень полезный ролик. А будет видео по докеру?
@t0digital
@t0digital 4 года назад
Думаю, что да, будут
@Resulok
@Resulok 4 года назад
Привет, спасибо за видео. Только один вопрос в чём преимущества использования Docker? Ведь я могу всё просто запустить в терминале, ведь так ?
@t0digital
@t0digital 4 года назад
Привет, спасибо. Да, конечно, можно просто запустить в терминале. Плюс докера - быстрая переносимость контейнера с приложенькой без настройки сервера. В данной задаче не ахти какой плюс, но иногда бывает вполне себе удобно, когда надо переносить приложение, ускорить его разворачивание и подобные задачи.
@PhilippeRigovanov
@PhilippeRigovanov 4 года назад
Father на современном английском произносится как [ˈfaːðə], но Алексей использует произношение из древнеанглийского через æ, видимо лингвист или любитель древних языков. Спасибо большое за годный контент и отдельное спасибо за исходники на гитхабе.
@t0digital
@t0digital 4 года назад
Спасибо :) в этом году буду прокачивать разговорный английский :)
@googleadmin4749
@googleadmin4749 2 года назад
На 29:47 когда дополнительно запрашиваются "базовые расходы" отдельным запросом, нет проверки на наличие таких расходов в базе, как это сделано на предыдущем этапе. Если "базовых расходов" не будет то то будет ошибка при получении данных, стоит добавить еще проверку. UP: сорян я ошибся не дочитал код, там в ином случае присваивается 0 если таких расходов нет.
@ivanscm
@ivanscm 4 года назад
Спасибо за видео. По какой причине не была использована ORM и было потрачено время на написание своей обертки? Почему файл базы не прокинули из докера?
@t0digital
@t0digital 4 года назад
В актуальной версии на гитхабе базу из докера вынесли. ORM посчитал лишним для 3х таблиц, обёртки крайне простые.
@boenia
@boenia 2 года назад
Как его выложить в телеграм? Или если нужен отдельный хостинг - как его вылить туда и подключить к телеграму?
@eamarc
@eamarc 4 года назад
Все отлично. Немного смущает: row_id = int(message.text[4:]) В блок try просится (это пользовательский ввод и /delAll свалит бота) В контроллере categories_list генерируется answer_message по какой-то причине (например сам класс Categories мог бы этим заняться)?
@t0digital
@t0digital 4 года назад
Тестов надо написать на всё, конечно. Да, вы правы, надо обернуть в try-except, конечно. По 2 вопросу - да, можно перенести формирование в Categories. Хотя по-хорошему я бы возвращал из бизнес-логики не строки, а структуры типа dict или namedtuple, а сообщеньку всё же собирал в контроллере, это всё-таки уже его логика, контроллера. Если захотим в одном контроллере вывести один текст, а в другом другой, будет хорошо, если сам текст сообщения будет формироваться в контроллерах.
@Free_474
@Free_474 4 года назад
Спасибо за материал !! А случайно нет апи с Тинькофф? Чтоб не заводить расходы ручками
@t0digital
@t0digital 4 года назад
Не изучал - но вероятно есть, да
@swimmwatch
@swimmwatch 3 года назад
Пересмотрел видос спустя год. Когда прокачал docker, python и т.д. Так кайфанул при просмотре видоса :) Спасибо больше. Можете пожалуйста сделать видос про docker, docker-compose в духе видоса по postgresql.
@helo6691
@helo6691 4 года назад
Прикольная чашка. :) У меня точно такая. Я покупал в Южной Африке, а ты где?
@t0digital
@t0digital 4 года назад
В Hoff в Москве:)
@div3975
@div3975 3 года назад
В связи с работой с БД возник вопрос: насколько оправданно использование ORM (например, peewee)? Так сказать, плюсы-минусы-подводные камни.
@DaniShakiroffree
@DaniShakiroffree 4 года назад
19:15 А как работает foreign key между полем category_codename (integer) из таблицы expense и полем codename (varchar) из таблицы category?
@t0digital
@t0digital 4 года назад
Крайне странно, что оно работает))) это ошибка, конечно. Оба поля должны быть varchar. Не поменял в процессе рефакторинга
@DaniShakiroffree
@DaniShakiroffree 4 года назад
@@t0digital Ваше видео, кстати, появилось у меня в рекомендациях, чему я крайне рад, спасибо за контент
@alexeysokolov3473
@alexeysokolov3473 Год назад
Не понятно, на полинге или на вебхуках сделано? На каком сервере запущено? Сколько это стоит?
@sarafarron7844
@sarafarron7844 2 года назад
ох это начало нового десятилетия, если бы ты знал
@mihailneprostoi6584
@mihailneprostoi6584 4 года назад
Что за книга у тебя лежит на столе? Она одна и та же всегда или в разных выпусках разная? Видос как обычно великолепен!
@t0digital
@t0digital 4 года назад
Спасибооо! Книжка по-разному, это - Python к вершинам мастерства
@BersGriffith
@BersGriffith 2 года назад
2022 год! Телеграм можно юзать без прокси) уииии!
@constantinemanoilo5148
@constantinemanoilo5148 4 года назад
Лайк за видео. Почему отдали предпочтение кастомым запросам в БД, а не с, например, SQLAlchemy?
@t0digital
@t0digital 4 года назад
Без большого смысла. Показалось, что несколько запросов проще послать руками, чем прикручивать еще 1 зависимость
@tfxbhfv45688
@tfxbhfv45688 2 года назад
Заметил, что метод fetchall(...) в db.py возвращает List [Dict [str, Any]]. Так и должно быть? Спасибо.
@t0digital
@t0digital 2 года назад
Код сейчас уже не помню, но в целом такой тайп хинтинг может быть - список словарей, ключами которых является строка, значениями любой тип
Далее
Чего ожидать от HTTP/3 + Go
51:07
Просмотров 1,4 тыс.
Пишем TELEGRAM бота на GO
13:48
Просмотров 64 тыс.
Redis за 20 минут
23:22
Просмотров 107 тыс.