С Новым 2020 годом, друзья! Как вам видос, узнали что-то новое-полезное? На разработку и запись ушло очень много времени, хочется верить, что материал принесёт пользу! Всем спасибо за ваши просмотры, лайки, комментарии - это очень помогает продвижению видео. До связи в Новом году!
Спасибо за все эти полезные замечания по поводу организации кода, особенно про разделении архитектуры на "клей" и бизнес-логику (можно еще добавить сюда низкоуровневый код, если он есть). Вроде и так все понятно про это разделение, но с наглядным примером намного лучше усваивается
Возможно как-нибудь сделаем такой лайв. Но это действительно будет очень долго - где-то с исследованиями как что работает, где-то с исправлениями ошибок, где-то с рефекторингом
@@t0digital Хз, лично мне будет очень интересно). Как мне кажется, то многим кто активно учит Питон, тоже. Потомушо в большинстве русскоязычных видео с лайв-написанием чего-либо, авторы занимают позицию типа "Ну, вы повторяйте за мной и всё будет ок", без особых объяснений зачем в данный момент используется именно эта конструкция, что является хорошей/плохой практикой и почему и т.д. Ну и + чаще всего они пишут эхо-бота в тлг/калькулятор/что-то еще, что может поместится в короткий хронометраж.
Спасибо за тему - очень интересно развивать тему с такими практическими решениями для жизни. Если у тебя будет возможность пожалуйста продолжай такого рода решения практических задач!
Спасибо за видео и отдельно за исходники на гитхабе. Очень полезно для тех, кто уже знает основы Python и хочет сделать какой-то реальный проект. Пожелания: 1. В видео вы говорите про ТЗ. Если вы делали ТЗ к этому проекту, можно на него взглянуть? Очень хотелось бы посмотреть на примере, как оно должно выглядить, хотя бы для личного проекта. 2. Мне лично не хватило (и, как я понял из коментов, многим остальным тоже) объяснений как задеплоить это приложение на сервер, на тот же Heroku. Как запустить на локальной машине понятно, но если действительно пользоваться этим ботом, то нужен запуск на сервере.
блин, если честно, зашел посмотреть именно на то как пишется проект, а тут просто его обзор. это конечно тоже хорошо, да, но интересным мне не кажется. рад, что сейчас вы вроде начали делать серию видеороликов о написании проекта с нуля, очень жду последующие части!
Удивительно, только придумал написать себе такого бота, даже проверил в каталогах, нет такого. Или я плохо искал. И на следующий день мне TH-cam предлагает вот такое.))) Очень полезное видео, тем кто видит всё это (python, docker, sqlite) впервые видео будет очень сложным. Ну а тем, кто не пугается, и чувствует, что может разобраться, то это равносильно походу на неплохой курс по созданию телеграмм бота. Рекомендую с этим кодом плотно поработать и много полезного положите себе в голову.
Благодаря такому качественному и познавательному контенту я научился нажимать кнопку "подписаться" и лайкать видео. Это просто шок, какой ты крутой! С наступившим тебя, спасибо за видео =)
Спасибо! С наступающим, всего и побольше)) Всё пррсто и лаконично. Единственное, я бы файлик с БД вытащил из контейнера и просто маунтил при старте. А то докер пересобрал и всё пропало)
У кого проблемы с кодировкой при чтении категорий. нужно удалить файл ./db/finance.db и в файле db.py при инициализации ДБ нужно добавить параметр - encoding='utf-8' def _init_db(): """Инициализирует БД""" with open("createdb.sql", "r", encoding='utf-8') as f: ......
Да, конечно. Просто при росте дохода всегда на столько же растут расходы и эффект большего дохода быстро сходит на нет, на большие покупки все равно надо копить:)
Очень интересный видео ролик, понравилась подача и стиль написания кода. Было бы интересно в будущем посмотреть как с нуля пишете проект и сразу комментируете его.
Подскажите пожалуйста , есть написанный скрипт, он каждый час парсит цены с одного магазина. и записывает в переменную в виде словаря, как сделать так что бы, если пользователь в телеграмме при выборе команды /мониторить ,скрипт каждый час проверял переменную и если по заданным настройкам есть данные то , пользователю присылать эти данные с словаря. У каждого пользователя свои настройки по товарам. Спасибо
На 29:47 когда дополнительно запрашиваются "базовые расходы" отдельным запросом, нет проверки на наличие таких расходов в базе, как это сделано на предыдущем этапе. Если "базовых расходов" не будет то то будет ошибка при получении данных, стоит добавить еще проверку. UP: сорян я ошибся не дочитал код, там в ином случае присваивается 0 если таких расходов нет.
С Новым годом! Успехов вам в новом году! Очень нравится ваша подача материала. Пожалуйста, расскажите про докер. Чем отличается от виртуальной машины, как настроить окружение и как переносить контейнеры.
Алексей Добрый день! Классный проект и подача подробная! Буду его пытаться сделать рабочим для множества юзеров, его логика оооочень похожа с моим задуманным ботом! Получается что почти всё уже готово осталось добавить многопользовательские возможности
Отлично, рад что полезно! Успехов с добавлением многопользовательского режима - БД я бы уже сменил на постгрес и возможно поставил какой-то ORM или просто несамописную обёртку над БД:)
Все отлично. Немного смущает: row_id = int(message.text[4:]) В блок try просится (это пользовательский ввод и /delAll свалит бота) В контроллере categories_list генерируется answer_message по какой-то причине (например сам класс Categories мог бы этим заняться)?
Тестов надо написать на всё, конечно. Да, вы правы, надо обернуть в try-except, конечно. По 2 вопросу - да, можно перенести формирование в Categories. Хотя по-хорошему я бы возвращал из бизнес-логики не строки, а структуры типа dict или namedtuple, а сообщеньку всё же собирал в контроллере, это всё-таки уже его логика, контроллера. Если захотим в одном контроллере вывести один текст, а в другом другой, будет хорошо, если сам текст сообщения будет формироваться в контроллерах.
Пересмотрел видос спустя год. Когда прокачал docker, python и т.д. Так кайфанул при просмотре видоса :) Спасибо больше. Можете пожалуйста сделать видос про docker, docker-compose в духе видоса по postgresql.
Необходимо сделать почти тоже самое но с 2..3 кнопками в каждом сообщении после нажатия на которых расскрывались доп инфа и шла запись в google Docs кто именно нажал .. Где бы посмотреть похожий пример?
Добрый день. Почему при пересылке сообщения через бота в чат не видно автора сообщения, а в качестве автора стоит название бота, и поэтому при ответе на это сообщение пользователь в боте не получает ничего? Пересылка идёт через метод forward_message библиотеки telegram.ext
Диджитализируй! АйТи студия бот отсылает сообщение в чат. В чате видно, что бот его прислал. В поле автор стоит не имя пользователя, а имя бота. В других ботах обратной связи, которые использовал в качестве конструктора, в чете видно имя пользователя справа от слова Автор. И при ответе на это сообщение из чата, этот пользователь в боте получает ответ. В моём же самописном боте юзеры из бота посылают сообщения в чат, а ответить им не возможно. Нужно писать отдельный обработчик для ответов из чата через бот конкретному пользователю? Я думал, что если справа от слова Автор в пересланном сообщении в боте тугие имя юзера, то юзеру в боте можно ответить из чата через бот.
С новым годом! Отличный подарок на новый год) Осталось парочку вопросов: 1) я так понял по коду вы не сторонник sqlalchemy (orm). Если да, то как вы в django подменяете orm модели? 2) в свое время работал с плохо оптимизированными бд под mysql, и понял что конструкции с join кушают много времени, лучше заменять их на нечитабельные where... Замечали ли вы такие баги в sqlite и postgress 3) а на докере не правильно ли было создавать и активировать свое окружение? Как в проекте?
1) Просто не хотелось ставить ORM на 3 таблицы. В Django для простых вещей использую джанговый ORM, да. Но надо понимать, какие физически в базу уходят запросы от вашего ORM - иногда там такой трэш, что мама не горюй) ORM хорош только для простых запросов, которых, впрочем, большинство, а сложные пишутся на сыром SQL. 2) Это вопрос к нормализации и денормализации базы. JOIN двух таблиц всегда работает медленнее, чем SELECT из одной таблицы, но появляются накладные расходы на поддержание целостности и актуальности данных, появляется дублирование данных. Всегда лучше начинать с нормализованной базы с JOIN'ами, не надо преждевременно оптимизировать, пока у вас нет миллионов записей и слишком долгих запросов. 3) докер контейнер это и есть своего рода виртуальное окружение, в нём ведь только одно приложение будет крутиться, наше
А можно ли поставить подобные "заглушки" (auth) для определённых команд? То есть, допустим есть команды /reset и /stats, и я хочу, чтобы на эти команды бот реагировал только в том случае, если её отправит владелец. А остальные команды будут доступны всем пользователям.
Алексей, спасибо огромное за видео! Как всегда очень круто, понятно и четко) один вопрос... я сейчас посещаю курсы по Python и мне практически все преподы говорят, что если есть возможность отказаться от использования регулярок, лучше так и делать. Как ты считаешь, насколько это мнение правдиво в Python сообществе и в чем проблема с регулярками?
Регулярки часто это единственный способ решить задачу. Ещё чаще это способ решить задачу в 2 строки кода, а без них будет гораздо больше кода с кучей циклов, проверок и тд. В регулярках не вижу ничего плохого, их многие не любят, потому что не знают - ну и они сложно читаются, надо уметь с ними работать, чтобы прочесть регулярное выражение. Для простых обработок текста они могут быть медленнее, чем просто поиск и замена по строке. Не знаю, что ещё можно отнести к их минусам.
Существует такая присказка: «У программиста была проблема и он решил применить регулярные выражения..... теперь у программиста две проблемы». Разберись и пойми работу регулярных выражений и тогда для тебя они станут не вопросом, а инструментом.
@@НатальяВасилевич-х7м да не, будет не так - какой-нибудь коллега решит что и так все знает и на глаз там че нить поменяет. На этот конкретно этот случай не будет конечно же юнит тестов. И в самый ответственный момент оно навернется)
Добрый день. Подскажите, пожалуйста, какое участие в работе бота принимает сервер Телеграмм, какое - наш девайс, откуда мы пишем в бота? И где конкретно запущен и отрабатывает код server.py? Не хватает в видео информации об общей архитектуре всего происходящего. В любом случае все нюансы надо будет гуглить, но для полноты картины хотелось бы полминуты этой информации тут увидеть.
В телеграм клиенте (программа на компьютере или телефоне) мы отправляем сообщение, оно уходит на сервер телеграма и сохраняется там. Наш бот (частью которого является server.py) переодически опрашивает сервера телеграма на наличие новых сообщений, и, когда они есть, получает их и обрабатывает (например, сохраняя данные из сообщений в своей БД). Вот и вся архитектура.
@@t0digital Я заметил что в твоем примере бот после перезапуска ответил только один раз на два одинаковых сообщения который пришли пока он был отключен, как это реализовано я не видел в коде? Почему твой бот сработал один раз?
привет, ролик супер! не знаком особо с библой для телеги, туда можно вкрутить свои кнопки для бота? чтобы категории допустим висели и не надо было их набирать
Здравствуйте. Интересует создание прайс чат-бота для Телеграм для небольшого магазинчика электронных компонентов. Чтобы клиенты имели возможность с его помощью уточнить наличие, кол-во и цену конкретных электронных компонентов просто отправляя полное или частичное наименование компонента, например: вводим 4066 а бот нам выдает: CD4066, NXP, корпус DIP-16, цена: 35 р/шт, в наличии: 99 шт.
Скажите, есть ли у Вас видео, раскрывающее хорошую практику работы с машиной состояний (МС)? Например, когда бот должен провести > 1 анкетирования пользователя. Как понимаю, для каждого такого анкетирования МС должна быть размещена отдельно? Спасибо.
С телеграмом можно работать через long polling (бот опрашивает телеграм на наличие новых сообщений с какой-то периодичностью) и через веб-хуки (телеграм шлёт новые сообщения на указанный ему url). Для второго способа нужен свой сервер, настроенный на нем HTTPs, мы для этого простого бота используем первый вариант с long polling. То есть этот бот можно запустить откуда угодно, лишь бы был доступ к интернету. Я запускал его даже на телефоне в termux, работает.
Забавно, но я себе сделал бота, который получает чеки из ФНС и складывает информацию в базу. Но у меня бот на PHP. Дабы не заморачиваться с чтением QR-кода, использую приложение ФНС, через которое делюсь чеком в JSON формате с ботом.
@@t0digital Пока не выкладывал, ибо костыль на костыле, пока что. Надо код причесать. Да в любом случае многим не понравится, я не всех PSR придерживаюсь.
@@Tavda ну, в php мире не все даже знают о psr:) Хотя такая стандартизация кода это очень здравая штука, конечно. Можно прогнать через какой-то линтер, чтобы он причесал
@@t0digital Я composer не использую. Просто как-то странно выполняя вывод Hello, World! подключать 38 файлов. Да и многие мелкие задачи решатся просто средствами PHP. В OpenSource у меня есть каркас для контроллера "Умного дома". github.com/fsa/shcc Он в таком же стиле написан.
@@Tavda линтер это не про композер, это инструмент для проверки соответствия кода стандарту, и иногда для автоматического его исправления под стандарт. Вы просто выше про PSR написали.
Если там может быть много возвращаемых элементов, то может быть оправдано превращение их в генераторы, да. Или если вычисление каждого элемента последовательности ресурсоёмкое
Здравствуйте, задам немного глупый вопрос, подскажите, а где можно разместить ваш код с гитхаба что бы им можно было пользоваться? Просто чтобы пользоваться сайтом например, нужно купить домен, купить хостинг, установить cms, наполнить контентом и можно пользоваться. А вот с ботом, точнее с питоновским кодом не могу понять как им пользоваться?!
@Диджитализируй! у вас не возникала проблема с кодировкой при выводе категорий? вылезает текст формата "РѕРґРёРЅ2". Почитал на форумах, говорилось о том, что на винде своя кодировка, и она криво отображает данные из SQLite3 (или что-то вроде этого, хотя это бред), перенес проект на убунту сервер, такая же картина. Как это исправить?
попробуйте завести новую sqlite базу сразу с utf8 кодировкой. Не работаю много с sqlite. Посмотрите stackoverflow.com/questions/38482132/sqlite-utf-8-encoding может и в текущей БД можно заменить кодировку
Не пойму как идёт проверка по id пользователя В переменных окружениях указан один ID. Как вести проверку по двум ID? Список явно не прокатит? Заранее спасибо!
Спасибо, с наступающим! На самом деле это большая проблема джанги, что она в официальной документации не даёт рекомендаций по тому, куда писать основную логику, или даёт корявую рекомендацию писать её в 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 приложений в проекте.
Father на современном английском произносится как [ˈfaːðə], но Алексей использует произношение из древнеанглийского через æ, видимо лингвист или любитель древних языков. Спасибо большое за годный контент и отдельное спасибо за исходники на гитхабе.
Мой курс «Хардкорная веб-разработка» - course.to.digital
Вжух!
С Новым 2020 годом, друзья! Как вам видос, узнали что-то новое-полезное? На разработку и запись ушло очень много времени, хочется верить, что материал принесёт пользу! Всем спасибо за ваши просмотры, лайки, комментарии - это очень помогает продвижению видео. До связи в Новом году!
Спасибо за то, что ты делаешь! Чувствуется уверенность опытного профессионала, много полезного у тебя подцепил.
Спасибо, Денис!
Спасибо, действительно читаемый код, есть чему поучиться
@@eugennegue3578 Спасибо!
спс
когда в конце 2020 получаешь пожелание хорошего 2020. :mehh:
Хахахах :)
ага, да и телеграмм уже работает :)
Уже середина 22-го а пиз**ц даже и не собирается уходить...
В конце 2022 понимаем, что 2020 оказывается был хорошим годом.
Привет из 2023!!! С рождеством христовым!!!
Спасибо за все эти полезные замечания по поводу организации кода, особенно про разделении архитектуры на "клей" и бизнес-логику (можно еще добавить сюда низкоуровневый код, если он есть). Вроде и так все понятно про это разделение, но с наглядным примером намного лучше усваивается
Согласен. Спасибо!
Нереально суперское видео! С удовольствием посмотрел бы хоть 5 часов лайв разработки, интересно понять ход мыслей опытного разработчика :)
Спасибо! Сделаем возможно:)
Вот это здорово... Спасибо за труд, круто делаете. Успехов в новом году!
Спасибо! С Наступающим!
Идеальный подарок на Новый Год.
Спасибо :) С Наступающим!
Смотрю видео после нового года, тоже нормально)
Как интересно рассказываете! Про функции которые начинаются с нижнего подчеркивания не знала раньше, спасибо. Рассказывайте чаще)
Йее, спасибо! 🙏
Спасибо за ролик.
Хотелось бы посмотреть на процесс написания в лайве, пусть даже это будет и несколько часов видео.
Возможно как-нибудь сделаем такой лайв. Но это действительно будет очень долго - где-то с исследованиями как что работает, где-то с исправлениями ошибок, где-то с рефекторингом
@@t0digital Хз, лично мне будет очень интересно). Как мне кажется, то многим кто активно учит Питон, тоже. Потомушо в большинстве русскоязычных видео с лайв-написанием чего-либо, авторы занимают позицию типа "Ну, вы повторяйте за мной и всё будет ок", без особых объяснений зачем в данный момент используется именно эта конструкция, что является хорошей/плохой практикой и почему и т.д. Ну и + чаще всего они пишут эхо-бота в тлг/калькулятор/что-то еще, что может поместится в короткий хронометраж.
Значит попробуем делать видео с живым кодингом. Спасибо!
aiogram, Docker, переменное окружение и тд и тп подробно..вот одно из видео автора: th-cam.com/video/_rfSEBa8Ff0/w-d-xo.html
Да, так сказать в режиме реального времени
Ай ждал! Прям НГ подарок! С наступающим
Йее:) Спасибо! С Наступающим 2020м!
Спасибо за тему - очень интересно развивать тему с такими практическими решениями для жизни. Если у тебя будет возможность пожалуйста продолжай такого рода решения практических задач!
Спасибо за видео и отдельно за исходники на гитхабе. Очень полезно для тех, кто уже знает основы Python и хочет сделать какой-то реальный проект.
Пожелания:
1. В видео вы говорите про ТЗ. Если вы делали ТЗ к этому проекту, можно на него взглянуть? Очень хотелось бы посмотреть на примере, как оно должно выглядить, хотя бы для личного проекта.
2. Мне лично не хватило (и, как я понял из коментов, многим остальным тоже) объяснений как задеплоить это приложение на сервер, на тот же Heroku. Как запустить на локальной машине понятно, но если действительно пользоваться этим ботом, то нужен запуск на сервере.
Спасибо за видео! Хотелось бы больше видео касающегося именно проектирования и архитектуры приложений
Буду делать материалы на эту тему обязательно
Спасибо большое, очень полезный материал
блин, если честно, зашел посмотреть именно на то как пишется проект, а тут просто его обзор. это конечно тоже хорошо, да, но интересным мне не кажется.
рад, что сейчас вы вроде начали делать серию видеороликов о написании проекта с нуля, очень жду последующие части!
Привет
В одном из видео ты говорил, что сделаешь видео про фриланс(как брать заказ и тд) Очень нужная информация, заранее спасибо
Привет, делал опрос среди подписчиков - эта тема и вообще тема работы над проектами, управления проектами и подобные набрали мало желающих
В названии опечатка а так видео отличное! С наступающим новым годом!
О, спасибо, поправил:)
замечание - я думаю не стоит объяснять зачем нужно это приложение. Очень много зря времени на это ушло
@@manul7978 без тз результат хз!!!
Удивительно, только придумал написать себе такого бота, даже проверил в каталогах, нет такого. Или я плохо искал. И на следующий день мне TH-cam предлагает вот такое.)))
Очень полезное видео, тем кто видит всё это (python, docker, sqlite) впервые видео будет очень сложным. Ну а тем, кто не пугается, и чувствует, что может разобраться, то это равносильно походу на неплохой курс по созданию телеграмм бота. Рекомендую с этим кодом плотно поработать и много полезного положите себе в голову.
Тоже посмотрел от начала до конца, весьма познавательно для начинающего!
Классное видео, так актуально, в голове картника сложилась по проекту и большой респект о лучших практиках программирования! 💯👍
Спасибо, материал и его подача как всегда на высоте.
С наступающим!
Спасибооо! С Наступающим!
Благодаря такому качественному и познавательному контенту я научился нажимать кнопку "подписаться" и лайкать видео. Это просто шок, какой ты крутой! С наступившим тебя, спасибо за видео =)
Йеее, спасибооо! Приятно:) C Наступившим!
Дождался урааа!! Спасибо!!
Судя по просмотрам и комментариям тема ботов все еще популярна, но почему-то никто не снимает по ней ничего..
Боты популярны и, думаю, будут набирать ещё с ростом популярности нейросетей и лёрнига:)
спасибо, хороший видос. добрая критика: учить английский! :-)
Есть такой план на 2020:) Спасибо!
Я с вами мужики)
очень интересная подача, видео смотрятся на одном дыхании, но некорректные произношения и ударения прям убивают(
Вот очень интересно конкретно про боты телеграмма на питоне - давайте еще про боты
Спасибо и с наступающим!
С Наступающим!
Спасибо!
С наступающим, всего и побольше))
Всё пррсто и лаконично. Единственное, я бы файлик с БД вытащил из контейнера и просто маунтил при старте. А то докер пересобрал и всё пропало)
Да,, упустил этот момент, добавлю в репо:) С Наступающим!
Отличное видео, Спасибо! С наступающим!
Спасибооо! С Наступающим!
Очень интересный канал, странно что так мало подписчиков
Спасибооо! Растём понемногу:)
С наступающим!!!! Очень нравится канал) продолжайте в том же духе!! )))
Спасибо! Будем продолжать!
С наступающим вас! Спасибо за видос под новый год!
Спасибооо, с наступающим!
У кого проблемы с кодировкой при чтении категорий.
нужно удалить файл ./db/finance.db
и в файле db.py при инициализации ДБ нужно добавить параметр - encoding='utf-8'
def _init_db():
"""Инициализирует БД"""
with open("createdb.sql", "r", encoding='utf-8') as f:
......
Спасибо!
Спасибо, с Новым годом! Удачи!
Спасибооо, счастливого 2020го!
Благодарю за отличный пример бота, лайк и подписка)
Спасибо!
Спасибо! Чем больше смотрю, тем меньше говнокода и более читабельный код!
Да неужели 👍 очень ждал
Свершилось:)
Спасибо! Вынес для себя полезную информацию
Отлично!
Годно! Не понимаю, за что тебя хейтят)Все понятно говоришь)
Спасибо за видео!
по-моему единственный автор на ютубе, который делает годный контент по коду, спасибо большое
Спасибо!
@@t0digital пожалуйста, просто о главном, без всей этой "заумной" мишуры, ака полиморфизм))
@@t0digital было бы интересно узнать от тебя, имеет ли смысл изучать алгоритмы в целом на python
досмотрит до конца! Несколько часов не беда. хотелось бы с вами это пройти и паралельно написать тоже самое, так как я новичек
Про ТЗ хорошее замечание, не задумывался раньше(
с наступающим!)
Похоже, что автор канала решил сделать царский подарок своим подписчикам к Новому году. Ну что ж, спасибо.
Именно так:) С Наступающим!
@@t0digital Спасибо, уважаемый.
С наступающим Новым годом! Счастья, крепкого здоровья, любви и удачи в делах!
Лучше работать над увеличением доходов, чем сокращением своего потребления когда зарплата маленькая. За видео спасибо!
Да, конечно. Просто при росте дохода всегда на столько же растут расходы и эффект большего дохода быстро сходит на нет, на большие покупки все равно надо копить:)
Очень интересный видео ролик, понравилась подача и стиль написания кода. Было бы интересно в будущем посмотреть как с нуля пишете проект и сразу комментируете его.
Спасибо! Такое видео в живом кодинге это часов на 5. Может как-нибудь сделаю:)
🔥🔥🔥
с наступающим, котан 🐈😎
С Новым годом! Юхуу!
Подскажите пожалуйста , есть написанный скрипт, он каждый час парсит цены с одного магазина. и записывает в переменную в виде словаря, как сделать так что бы, если пользователь в телеграмме при выборе команды /мониторить ,скрипт каждый час проверял переменную и если по заданным настройкам есть данные то , пользователю присылать эти данные с словаря. У каждого пользователя свои настройки по товарам. Спасибо
С первых секунд лайк. Расскажи о своих книгах по программированию.
Расскажу в отдельном видео, спасибо!
На 29:47 когда дополнительно запрашиваются "базовые расходы" отдельным запросом, нет проверки на наличие таких расходов в базе, как это сделано на предыдущем этапе.
Если "базовых расходов" не будет то то будет ошибка при получении данных, стоит добавить еще проверку.
UP: сорян я ошибся не дочитал код, там в ином случае присваивается 0 если таких расходов нет.
Отличный канал. Спасибо!
Спасибооо🙏!
Хорошее новогоднее поздравление =)
Спасибо!
Только нашёл твой канал, и он хороший, хороший монтаж, отличный звук, а Голос это не голос это птичка поёт, лайк подписка
Спасибооо:)!
Лайк не глядя)
Спасибо!
С Новым годом! Успехов вам в новом году!
Очень нравится ваша подача материала. Пожалуйста, расскажите про докер. Чем отличается от виртуальной машины, как настроить окружение и как переносить контейнеры.
С Новым 2020! Спасибооо!
Расскажу про докер обязательно
Спасибо! Очень классный учебный контент и пояснения.
Алексей Добрый день! Классный проект и подача подробная! Буду его пытаться сделать рабочим для множества юзеров, его логика оооочень похожа с моим задуманным ботом! Получается что почти всё уже готово осталось добавить многопользовательские возможности
Отлично, рад что полезно! Успехов с добавлением многопользовательского режима - БД я бы уже сменил на постгрес и возможно поставил какой-то ORM или просто несамописную обёртку над БД:)
@@t0digital Благодарю за направление!
Неделю назад пришла в голову идея сделать такого бота, а сегодня у тебя выходит видео об этом.Что это если не подарок на НГ?)
О, отлично:)!
Все отлично. Немного смущает:
row_id = int(message.text[4:])
В блок try просится (это пользовательский ввод и /delAll свалит бота)
В контроллере categories_list генерируется answer_message по какой-то причине (например сам класс Categories мог бы этим заняться)?
Тестов надо написать на всё, конечно. Да, вы правы, надо обернуть в try-except, конечно. По 2 вопросу - да, можно перенести формирование в Categories. Хотя по-хорошему я бы возвращал из бизнес-логики не строки, а структуры типа dict или namedtuple, а сообщеньку всё же собирал в контроллере, это всё-таки уже его логика, контроллера. Если захотим в одном контроллере вывести один текст, а в другом другой, будет хорошо, если сам текст сообщения будет формироваться в контроллерах.
Всех с праздником! 2020! Отличный год для подвигов и свершений!
Спасибо! С Новым 2020м годом!
Побольше таких видосов о программировании на Python! Например: программа измерения скорости интернета, чат, чат с шифрованием, программа - даунлоадер
Спасибо! Будем делать
Пересмотрел видос спустя год. Когда прокачал docker, python и т.д. Так кайфанул при просмотре видоса :)
Спасибо больше.
Можете пожалуйста сделать видос про docker, docker-compose в духе видоса по postgresql.
Отличное видео, хочется подробнее узнать про работу с переменными окружения
Спасибо! Расскажем
Спасибо за видео
33:34 ну надеюсь хотя б 21 нормальный будет) А вообще надо будет посмотреть, чё там люди сделали, может тоже пулреквестик кину
С наступающим. Хорошее и полезное видео. Про парсинг было бы ещё что то для начинающих
Спасибооо!
С новым годом) лучше наверное выносить в отдельную табличку алиасы чем писать их через запятую)
Можно
Необходимо сделать почти тоже самое но с 2..3 кнопками в каждом сообщении после нажатия на которых расскрывались доп инфа и шла запись в google Docs кто именно нажал .. Где бы посмотреть похожий пример?
Добрый день. Почему при пересылке сообщения через бота в чат не видно автора сообщения, а в качестве автора стоит название бота, и поэтому при ответе на это сообщение пользователь в боте не получает ничего? Пересылка идёт через метод forward_message библиотеки telegram.ext
Привет! Не понял вопрос. Не уверен, что какие-то проблемы могут быть связаны с тем, что сообщения, которые шлёт бот, идут от имени бота
Диджитализируй! АйТи студия бот отсылает сообщение в чат. В чате видно, что бот его прислал. В поле автор стоит не имя пользователя, а имя бота. В других ботах обратной связи, которые использовал в качестве конструктора, в чете видно имя пользователя справа от слова Автор. И при ответе на это сообщение из чата, этот пользователь в боте получает ответ. В моём же самописном боте юзеры из бота посылают сообщения в чат, а ответить им не возможно. Нужно писать отдельный обработчик для ответов из чата через бот конкретному пользователю? Я думал, что если справа от слова Автор в пересланном сообщении в боте тугие имя юзера, то юзеру в боте можно ответить из чата через бот.
мб для aiogram имеет смысл и с бд что-то асинхронное придумать? aiosqlite например
0:19 2020 год... Отличный повод что бы начать прививать)
Что с проектом? посмотрел так же видео про работу с гугл таблицами! Крутая идея, вносить данные через телегу отчеты в таблицах!
19:15 А как работает foreign key между полем category_codename (integer) из таблицы expense и полем codename (varchar) из таблицы category?
Крайне странно, что оно работает))) это ошибка, конечно. Оба поля должны быть varchar. Не поменял в процессе рефакторинга
@@t0digital Ваше видео, кстати, появилось у меня в рекомендациях, чему я крайне рад, спасибо за контент
С новым годом! Отличный подарок на новый год)
Осталось парочку вопросов:
1) я так понял по коду вы не сторонник sqlalchemy (orm). Если да, то как вы в django подменяете orm модели?
2) в свое время работал с плохо оптимизированными бд под mysql, и понял что конструкции с join кушают много времени, лучше заменять их на нечитабельные where... Замечали ли вы такие баги в sqlite и postgress
3) а на докере не правильно ли было создавать и активировать свое окружение? Как в проекте?
1) Просто не хотелось ставить ORM на 3 таблицы. В Django для простых вещей использую джанговый ORM, да. Но надо понимать, какие физически в базу уходят запросы от вашего ORM - иногда там такой трэш, что мама не горюй) ORM хорош только для простых запросов, которых, впрочем, большинство, а сложные пишутся на сыром SQL.
2) Это вопрос к нормализации и денормализации базы. JOIN двух таблиц всегда работает медленнее, чем SELECT из одной таблицы, но появляются накладные расходы на поддержание целостности и актуальности данных, появляется дублирование данных. Всегда лучше начинать с нормализованной базы с JOIN'ами, не надо преждевременно оптимизировать, пока у вас нет миллионов записей и слишком долгих запросов.
3) докер контейнер это и есть своего рода виртуальное окружение, в нём ведь только одно приложение будет крутиться, наше
А можно ли поставить подобные "заглушки" (auth) для определённых команд?
То есть, допустим есть команды /reset и /stats, и я хочу, чтобы на эти команды бот реагировал только в том случае, если её отправит владелец. А остальные команды будут доступны всем пользователям.
Как его выложить в телеграм? Или если нужен отдельный хостинг - как его вылить туда и подключить к телеграму?
Спасибо круто!
ох это начало нового десятилетия, если бы ты знал
Здравствуйте, у меня проблема с createdb.sql, телеграмм бот не выводит категории трат кириллицей. Вместо букв отображаются какие-то иероглифы
здравствуйте, сложно сказать, почему. Убедитесь, что все файлы в utf8
@@t0digital все в utf8
тоже самое, как ты исправил ?
Алексей, спасибо огромное за видео! Как всегда очень круто, понятно и четко) один вопрос... я сейчас посещаю курсы по Python и мне практически все преподы говорят, что если есть возможность отказаться от использования регулярок, лучше так и делать. Как ты считаешь, насколько это мнение правдиво в Python сообществе и в чем проблема с регулярками?
Регулярки часто это единственный способ решить задачу. Ещё чаще это способ решить задачу в 2 строки кода, а без них будет гораздо больше кода с кучей циклов, проверок и тд. В регулярках не вижу ничего плохого, их многие не любят, потому что не знают - ну и они сложно читаются, надо уметь с ними работать, чтобы прочесть регулярное выражение. Для простых обработок текста они могут быть медленнее, чем просто поиск и замена по строке. Не знаю, что ещё можно отнести к их минусам.
Существует такая присказка: «У программиста была проблема и он решил применить регулярные выражения..... теперь у программиста две проблемы». Разберись и пойми работу регулярных выражений и тогда для тебя они станут не вопросом, а инструментом.
@@НатальяВасилевич-х7м но останутся вопросом для других членов команды))
@@АлександрДворцов-ш1б пусть догоняют :) Не занижай планку из-за тех, кто не хочет\может учиться.
@@НатальяВасилевич-х7м да не, будет не так - какой-нибудь коллега решит что и так все знает и на глаз там че нить поменяет. На этот конкретно этот случай не будет конечно же юнит тестов. И в самый ответственный момент оно навернется)
Добрый день.
Подскажите, пожалуйста, какое участие в работе бота принимает сервер Телеграмм, какое - наш девайс, откуда мы пишем в бота? И где конкретно запущен и отрабатывает код server.py? Не хватает в видео информации об общей архитектуре всего происходящего. В любом случае все нюансы надо будет гуглить, но для полноты картины хотелось бы полминуты этой информации тут увидеть.
В телеграм клиенте (программа на компьютере или телефоне) мы отправляем сообщение, оно уходит на сервер телеграма и сохраняется там. Наш бот (частью которого является server.py) переодически опрашивает сервера телеграма на наличие новых сообщений, и, когда они есть, получает их и обрабатывает (например, сохраняя данные из сообщений в своей БД). Вот и вся архитектура.
@@t0digital Ага. Спасибо, стало понятнее)
@@t0digital Я заметил что в твоем примере бот после перезапуска ответил только один раз на два одинаковых сообщения который пришли пока он был отключен, как это реализовано я не видел в коде? Почему твой бот сработал один раз?
привет, ролик супер! не знаком особо с библой для телеги, туда можно вкрутить свои кнопки для бота? чтобы категории допустим висели и не надо было их набирать
Да, можно это сделать и в aiogram
Здравствуйте. Интересует создание прайс чат-бота для Телеграм для небольшого магазинчика электронных компонентов. Чтобы клиенты имели возможность с его помощью уточнить наличие, кол-во и цену конкретных электронных компонентов просто отправляя полное или частичное наименование компонента, например: вводим 4066 а бот нам выдает: CD4066, NXP, корпус DIP-16, цена: 35 р/шт, в наличии: 99 шт.
Ну так сделай поиск по базе по артиклу, сложно что ли?
Скажите, есть ли у Вас видео, раскрывающее хорошую практику работы с машиной состояний (МС)? Например, когда бот должен провести > 1 анкетирования пользователя. Как понимаю, для каждого такого анкетирования МС должна быть размещена отдельно? Спасибо.
такого видео у меня нет
Спасибо, отличное видео. Расскажите куда можно выложить готовое приложение; можно ли использовать телеграмм бота внутри локальной сети?
С телеграмом можно работать через long polling (бот опрашивает телеграм на наличие новых сообщений с какой-то периодичностью) и через веб-хуки (телеграм шлёт новые сообщения на указанный ему url). Для второго способа нужен свой сервер, настроенный на нем HTTPs, мы для этого простого бота используем первый вариант с long polling. То есть этот бот можно запустить откуда угодно, лишь бы был доступ к интернету. Я запускал его даже на телефоне в termux, работает.
2022 год! Телеграм можно юзать без прокси) уииии!
Лаек, коммент, подписка
Спасибооо🙏!
В связи с работой с БД возник вопрос: насколько оправданно использование ORM (например, peewee)? Так сказать, плюсы-минусы-подводные камни.
Забавно, но я себе сделал бота, который получает чеки из ФНС и складывает информацию в базу. Но у меня бот на PHP.
Дабы не заморачиваться с чтением QR-кода, использую приложение ФНС, через которое делюсь чеком в JSON формате с ботом.
Звучит здорово, выкладывали в open source? Интересно
@@t0digital Пока не выкладывал, ибо костыль на костыле, пока что. Надо код причесать. Да в любом случае многим не понравится, я не всех PSR придерживаюсь.
@@Tavda ну, в php мире не все даже знают о psr:) Хотя такая стандартизация кода это очень здравая штука, конечно. Можно прогнать через какой-то линтер, чтобы он причесал
@@t0digital Я composer не использую. Просто как-то странно выполняя вывод Hello, World! подключать 38 файлов. Да и многие мелкие задачи решатся просто средствами PHP.
В OpenSource у меня есть каркас для контроллера "Умного дома". github.com/fsa/shcc Он в таком же стиле написан.
@@Tavda линтер это не про композер, это инструмент для проверки соответствия кода стандарту, и иногда для автоматического его исправления под стандарт. Вы просто выше про PSR написали.
Заметил, что метод fetchall(...) в db.py возвращает List [Dict [str, Any]]. Так и должно быть? Спасибо.
Код сейчас уже не помню, но в целом такой тайп хинтинг может быть - список словарей, ключами которых является строка, значениями любой тип
Здраствуйте, заметил такую вещь, есть функции которые возвращают список элементов, не лучше ли такие функции в генераторы превратить?
Если там может быть много возвращаемых элементов, то может быть оправдано превращение их в генераторы, да. Или если вычисление каждого элемента последовательности ресурсоёмкое
Спасибо за ролик! Какой шрифт используется при написании кода, если не секрет?
Monaco
Здравствуйте, задам немного глупый вопрос, подскажите, а где можно разместить ваш код с гитхаба что бы им можно было пользоваться? Просто чтобы пользоваться сайтом например, нужно купить домен, купить хостинг, установить cms, наполнить контентом и можно пользоваться. А вот с ботом, точнее с питоновским кодом не могу понять как им пользоваться?!
Надо установить бота на арендованный сервер
@@t0digital Понятно спасибо
@Диджитализируй! у вас не возникала проблема с кодировкой при выводе категорий? вылезает текст формата "РѕРґРёРЅ2". Почитал на форумах, говорилось о том, что на винде своя кодировка, и она криво отображает данные из SQLite3 (или что-то вроде этого, хотя это бред), перенес проект на убунту сервер, такая же картина. Как это исправить?
попробуйте завести новую sqlite базу сразу с utf8 кодировкой. Не работаю много с sqlite. Посмотрите stackoverflow.com/questions/38482132/sqlite-utf-8-encoding
может и в текущей БД можно заменить кодировку
та же самая проблема, подскажи как решил?
Привет, большое спасибо за видео.
Понравилась твоя тема в виме и его сочитание с тмуксом. Можешь залить дотфайлы?
Привет! th-cam.com/video/xmYil6Y9X68/w-d-xo.html, там есть ссылка на vimrc. По tmux th-cam.com/video/LkFtvMzMwjw/w-d-xo.html
@@t0digital Спасибо огромное!
Лайк за видео. Почему отдали предпочтение кастомым запросам в БД, а не с, например, SQLAlchemy?
Без большого смысла. Показалось, что несколько запросов проще послать руками, чем прикручивать еще 1 зависимость
Не пойму как идёт проверка по id пользователя В переменных окружениях указан один ID. Как вести проверку по двум ID? Список явно не прокатит? Заранее спасибо!
Потребуется доработка, да
С наступающим!! Алексей, а подскажи куда прятать бизнес логику в джанге? Обычно всё во views.py кидаю
Спасибо, с наступающим! На самом деле это большая проблема джанги, что она в официальной документации не даёт рекомендаций по тому, куда писать основную логику, или даёт корявую рекомендацию писать её в 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 приложений в проекте.
@@t0digital Спасибо за развернутый ответ)
"Пишем телеграм бот", и по факту уже вставленный код, вот это кора)
Father на современном английском произносится как [ˈfaːðə], но Алексей использует произношение из древнеанглийского через æ, видимо лингвист или любитель древних языков. Спасибо большое за годный контент и отдельное спасибо за исходники на гитхабе.
Спасибо :) в этом году буду прокачивать разговорный английский :)