Telegram бот python aiogram 3 #8 Многоуровневое инлайн меню, каталог, пагинация, корзина товаров

  Рет қаралды 17,228

Python Hub Studio

Python Hub Studio

Күн бұрын

В этом видео из курса по разработке ботов для Telegram на python с aiogram 3, реализуем многоуровневое инлайн меню, каталог товаров, пагинацию и корзину товаров пользователя.
00:00 Обзор будущего инлайн меню бота
04:11 Изменения в коде по сравнению с прошлым видео
05:00 Удалены команды пользователя
07:08 Новые таблицы в базе данных (модели sqlalchemy)
13:05 Новые запросы через orm к БД
15:07 Наполнение таблиц категории и описания страниц при старте бота
18:57 Запуск бота и заполняем бд информацией через админку
20:20 Новый пункт в FSM - выбор категории товара (для админа)
24:13 FSM для загрузки админом изображений для информационных страниц
29:35 Начинаем работать. Редактирование сообщений в aiogram 3
34:30 Схема будущего меню из 4х уровней (0-3)
38:45 Реализуем 0 уровень меню через /start, а потом через callback
45:43 Фабрика callback в aiogram 3 - класс CallbackData
50:00 Редактируем меню уровня 0, в ответ на callback
54:07 Реализуем 1 уровень меню - выбор категории товаров
01:00:01 Реализуем 2 уровень меню - товары, пагинация в Телеграм боте
01:13:00 Добавление товара в корзину - кнопка купить
01:18:52 Реализуем 3 уровень меню - корзина товаров пользователя
01:32:29 Финальный тест
01:34:52 Финальные штрихи
Поддержать канал:
На канале доступна функция Спонсорство с дополнительными бонусами.
Присоединиться:
/ pythonhubstudio
А также кнопка Суперспасибо под видео (отображается не во всех странах).
Документация API Telegram:
core.telegram.org/api
Документация aiogram:
docs.aiogram.dev/en/latest/
Код из видео:
github.com/PythonHubStudio/ai...
Этот плейлист:
• Telegram бот на python...
Настройка VS Code как у меня:
• Настройка VS Code для ...
Курс по python 7 часов:
• Учим python за 7 часов...
Видео про асинхронность:
• Асинхронность, многопо...
Курс по Django 15 часов:
• Полный курс уроков по ...
Курс HTML / CSS:
• Учим HTML и CSS за 7 ч...
Не забудьте подписаться и включить оповещения, чтоб не пропустить новые выпуски!

Пікірлер: 205
@MrSasuke1337
@MrSasuke1337 3 ай бұрын
Покажите в следующем уроке как добавлять платежную систему, думаю многие бы хотели узнать как это реализовать
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
В очередной раз огромное спасибо за ваш труд. Это был самый насыщенный урок из всех. Пытался править код под новый урок, но уперся в то, что не добавляет ни нового пользователя в базу, ни корзину. Буду делать клон и это видео нужно смотреть раз пять, чтоб досконально все понять. Информации даете не жалея, просто море. Пока таких "Прометеев" в ютубе не встречал. Огромное человеческое СПАСИБО вам еще раз.
@picha_titan
@picha_titan 3 ай бұрын
Точно.
@user-dr.Pazzle
@user-dr.Pazzle 3 ай бұрын
Вне конкуренции!!! Очень ждал следующего видео! Спасибо огромнейшее за твой труд!
@user-rv7nj7nd8e
@user-rv7nj7nd8e 3 ай бұрын
Хочу сказать огромное спасибо автору, не видел на ютубе так качественно, концентрированно и увлекательно поданной информации. Спасибо вам огромное, буду очень ждать следующих видео:)
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 3 ай бұрын
Очень ждал ролик👍 много взял для бота, который помогает водителям при рассмотрении дел об административных правонарушениях
@jwsergey
@jwsergey 3 ай бұрын
Спасибо автору за труд и объяснения, очень много полезной информации. С нетерпением жду следующие видео. Классная подача...
@user-rq7sv7bi2m
@user-rq7sv7bi2m 3 ай бұрын
Всем Здравствуйте! Большое Спасибо за ваш труд! ❤
@sabotage711
@sabotage711 3 ай бұрын
Спасибо друг! очень помогают ваши видео обучаться! надеюсь не забросите канал, лайк подписка!)
@robertfalken2699
@robertfalken2699 3 ай бұрын
Спасибо. Долгожданное видео!
@user-yx9cn1ye1l
@user-yx9cn1ye1l 3 ай бұрын
Лучший канал для желающих разобраться с созданием телеграмм бота!
@user-zl5sp9yh1n
@user-zl5sp9yh1n 3 күн бұрын
Огромный труд, большое спасибо за ваши труды!
@user-zy5jq3xu8y
@user-zy5jq3xu8y 3 ай бұрын
еще не посмотрел, но лайк уже поставил. лучший канал !!! лучшие видео по программированию!
@spherecrypto
@spherecrypto 3 ай бұрын
Автор супер! Огромная благодарность❤
@Francija-Bez-Rozovyx-Ochkov
@Francija-Bez-Rozovyx-Ochkov 3 ай бұрын
Автор просто кладезь полезной информации! Просто титаническая работа проделана ! Спасибо за ваш труд !
@user-yk4zd4sv4s
@user-yk4zd4sv4s 3 ай бұрын
Автор, спасибо вам за качественный контент!
@user-tk7mf8jl2w
@user-tk7mf8jl2w 3 ай бұрын
авто лайк! хоть и не начал с Вами еще делать бота, но обязательно сделаю!
@USER_____Oo_____USER
@USER_____Oo_____USER 3 ай бұрын
Круто, как всегда, топчик!!!
@spotsman9612
@spotsman9612 3 ай бұрын
Супер контент! Спасибо большое за труд! Хотелось бы еще увидеть то как вы захостите бота и создадите вебхук (если создадите)
@Olegvershinin7834
@Olegvershinin7834 3 ай бұрын
Как всегда на высоте! Будут ли уроки по django,хотелось бы увидеть привязку оплаты и размещение интернет магазина на хостинг! Буду очень благодарен,если снимешь урок!
@ardeni2561
@ardeni2561 3 ай бұрын
новая серия любимого сериала "приятное с полезным"!
@stefanmuller2069
@stefanmuller2069 3 ай бұрын
Красава! Всегда жду твоего видео
@user-kx1wv2uy9m
@user-kx1wv2uy9m 3 ай бұрын
О класс, а вот и продолжение подкатило :)
@ivanshinkevich974
@ivanshinkevich974 2 ай бұрын
спасибо большое за урок!
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 3 ай бұрын
Автору респект. Все понятно рассказывает и выкладывает исходный код👍 так почему же такие ролики не набирают просмотры?
@picha_titan
@picha_titan 3 ай бұрын
Ролики набирают потом просмотры. Лучшего контента по данному направлению в Ютубе нет и близко. На таком уровне. Здесь сейчас информации много стало и непростая она от этого тоже. Но все равно, данный плейлист найдет зрителя своего. Это же самый крупный канал по питону, ну по мне так.
@SOD1QOV08
@SOD1QOV08 3 ай бұрын
raxmat brat ishizga omad
@falsepositive732
@falsepositive732 2 ай бұрын
Спасибо за урок! Доделай пожалуйста до конца, хочется увидеть как ты реализуешь полное оформление товара
@user-mc2lx1nj6n
@user-mc2lx1nj6n 2 ай бұрын
Большое спасибо вам за ваши видео! Запишите пожалуйста уроки про WebApp и про оплату в Telegram.
@desorrmarkovskii8648
@desorrmarkovskii8648 3 ай бұрын
Круто! Сколько ещё серий планируется по данному курсу?
@user-lj1dp3yw4q
@user-lj1dp3yw4q 3 ай бұрын
Броу , по голосу ты болеешь, не болей даже если не болеешь ❤
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Спасибо!) Нет, просто "разговориться" нужно))) К середине видео голос в норму придет)
@user-cf8lt1de8k
@user-cf8lt1de8k 18 күн бұрын
очень крутой контент, видно, что автор знает, как должен выглядеть хороший код, но для меня это всё пока оверсложно
@sunso2262
@sunso2262 3 ай бұрын
Спасибо!
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Благодарю за поддержку!
@uglyhurd4959
@uglyhurd4959 Ай бұрын
Привет. Спасибо за отличный курс. Вопрос, у тебя бд предусмотрена на то, что бы подключать к каждому пользователю свою корзину?
@user-cp8ou1ot5z
@user-cp8ou1ot5z 3 ай бұрын
Видео как всегда БОМБА!!! Еще бы прикрутить крон задачи, например каждый день присылать что то в чат или админку, или статистику за день. Какую библиотеку лучше для этого выбрать и так далее! Думаю такой функционал запланированных задач будет часто использоваться в боте!
@shemyatin_konstantin
@shemyatin_konstantin 3 ай бұрын
Здравствуйте, поддерживаю, про крон задачи было бы интересно!
@user-bu4ly2fb5u
@user-bu4ly2fb5u 3 ай бұрын
Привет, курс очень понравился можно ли сделать видео по оформлению заказа пожалуйста
@user-we5ji4ru8e
@user-we5ji4ru8e 2 ай бұрын
Большое спасибо за курс! Очень полезный материал в доступном без излишних терминов виде. Автору респект. Подскажите видео по деплою из курса aiogram 2 ещё актуально? Будет ли новое видео про деплой?
@PythonHubStudio
@PythonHubStudio 2 ай бұрын
Во первых, здесь дело в том, что на разных сервисах процесс деплоя приложения разный. На хероку бесплатного варианта больше нет, и немного поменялось то, как передавать данные в бота для работы. Но суммарно ничего нового.
@user-ge4ci9gb3v
@user-ge4ci9gb3v 3 ай бұрын
Спасибо за Ваш труд, автор! Будет ли продолжение? Оформление заказа и запись заказа в отдельную таблицу для историчности?
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 3 ай бұрын
👍👍👍👍
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
Две недели мучительных ожиданий. Спасибо
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Как успеваю..(( , 👍
@aisgais3727
@aisgais3727 3 ай бұрын
Спасибо за эту серию роликов❤, все понятно и поэтапно проходится. Так как только начал изучать питон и ООП соответственно, приходится пересматривать ролики по 10+ раз. Я вам наверное уже просмотров 💯 сделал :)). Этот ролик вообще поминутно изучаю, спасибо большое за труд!! Есть вопрос, будет ролик по добавлении оплаты? Например BTC, USDT? Будет ли ролик с выгрузкой на сервер?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Ещё не знаю буду делать или нет
@kootlife9432
@kootlife9432 2 ай бұрын
@@PythonHubStudio Не узнали еще?) очень жду новых видео хотелось бы хоть какой нибуть информации о новых видео, вы прям как сериал который заканчивается на самом интересном моменте....
@user-mo9wf1dl5u
@user-mo9wf1dl5u 2 ай бұрын
@@PythonHubStudio здравствуйте! подскажите пожалуйста, есть тест и есть три списка и в зависимости от input числа нужно взять подходящий элемент из списка, чтобы тест заработал, как это сделать? пробовал срезы не получается привязать к инпуту
@alsoduos
@alsoduos 3 ай бұрын
while True: print('Огромное спасибо!!!!')
@zummabox2397
@zummabox2397 2 ай бұрын
Здравствуйте! Очень благодарен вам за ваш бесценный труд! Лучший курс, что можно найти на yputube!
@user-bu4ly2fb5u
@user-bu4ly2fb5u 3 ай бұрын
Спасибо большое за даний курс автору.Редко найдешь так хорошо обьясняющий курс. Сейчас нахожусь на 6 видео у меня вопрос можно ли сделать и подключить оплату в боте , надеюсь это будет на 7-8 уроке если нет то скажите как это сделать
@user-dd1cy2qs5z
@user-dd1cy2qs5z 3 ай бұрын
Добрый день, когда будет следующее видео!? На основе Вашего урока создал бота. С одной стороны я учусь с другой стороны создал бота для девушки с двумя детьми и золотыми руками который поможет ей в ее хобби. Работает все пока как каталог, не хватает ума и знаний прикрутить оплату. Очень ждём и надеемся на Вас❤
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Спасибо за отзыв, очень красиво написано. Не знаю когда выпущу продолжение по этому курсу.
@user-dr.Pazzle
@user-dr.Pazzle 3 ай бұрын
Еще одна огромная просьба🙏... Может быть как отдельный урок или курс...деплой на сервер с помощью CI/CD и GitHub Actions. Может добавить еще докер.
@user-qp1ew9tq8o
@user-qp1ew9tq8o 3 ай бұрын
Оформление заказов будет? (чтоб приходили заказы пользователей админу)
@kirillsarokurov9260
@kirillsarokurov9260 Ай бұрын
Хотелось бы увидеть продолжение. Реализацию кнопки "заказать". Я считаю что плейлист не завершен, так как непонятно кто будет обрабатывать заказ, куда будет приходить информация о заказе, как работники поймут что вообще кто-то что-то заказал
@alexanderpride1131
@alexanderpride1131 3 ай бұрын
Алекс, спасибо за уроки, очень круто! И вопрос: а ты будешь внедрять web_app для бота в туториале?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
В планах есть, но как скоро это будет не знаю
@aiko_here.0_0
@aiko_here.0_0 2 ай бұрын
Уважаемый Товарищ , будьте так добры сделать полный курс по JS,, если будет такая возможность, мы все будем вам при много благодарны!
@user-wd6dx3uo6g
@user-wd6dx3uo6g Ай бұрын
друг, пожалуйста, сделай видео о переводе бота на webhook, думаю, многим было бы очень полезно и необходимо. спасибо!
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
Добрый вечер мой, и надеюсь не только мой, самый любимый автор обучающих каналов на шару. Хочу спросить. Я слышал о такой библиотеке, как aiogram-dialog. Насколько понимаю, она как раз для таких инлайн общения с пользователем. Вопрос. Слышали ли вы о ней? И, если да, то почему не использовали? {ответ: "не хотел использовать доп библиотеки, а показать как делать все самому, чтоб больше научить вас"}, хороший, но все же?)
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Фреймворк над фреймворком (*по моему мнению!) не очень хорошая идея. Меньше контроля и больше зависимости. Ее знаю, будет время выпущу видео
@sanyajc5300
@sanyajc5300 3 ай бұрын
Супер, спасибо за старания!) Есть вопрос про edit_text, помню как то натыкался, у кого то, на создание счетчика времени через edit_text, ещё на 2ой версии aiogram, и там говорили что при каком то кол-ве запросов бота на edit, боту прилетал бан. Не проверяли в 3 версии такого не будет?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Не попадалось такого, на этой схеме работает множество магазинов в ТГ. Дело в том что бот может отхватить бан по многим причинам (подозрительные действия по многим факторам, вообщем нюансы)
@Oleg_57rus
@Oleg_57rus 3 ай бұрын
Здраствуйте, как всегда урок 💯💣 Небольшой вопросик, а кнопка Заказать в дальнейшем прикрутится к коду для её назначения.
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Ещё не знаю, буду делать или нет
@Oleg_57rus
@Oleg_57rus 3 ай бұрын
@@PythonHubStudio Понял спасибо
@glebgurzhiy1055
@glebgurzhiy1055 3 ай бұрын
Спасибо,видео классное,но мне кажется было бы намного лучше,если бы вы не показывали изменения,которые сделали,а на видео всё писали и объясняли,да получилось бы дольше,но мне кажется лучше разбить на несколько видео и тогда бы получилось более доходчиво,хоть и повторялись бы технологии,но так их лучше можно было бы запомнить и научиться применять,всё равно спасибо за видео,у вас лучший канал по питону на ютубе и вы очень хорошо объясняете,все мои знакомые,которые видели ваши видео это подтверждают,без вас я бы не умел писать ботов и делать маломальские проекты на джанго
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Заняло бы много времени... Такой код "навскидку" онлайн написать проблема, было бы много тестов. Постарался все рассказать.
@picha_titan
@picha_titan 3 ай бұрын
Согласен с автором. Очень много времени было бы. Здесь упор на информацию, очень много полезной информации.
@user-xr1ro9kn9q
@user-xr1ro9kn9q 5 күн бұрын
Крутой контент. Спасибо огромное... А у вас случайно нет желания сделать какой-нибудь классный проект на fastapi + aiogram? Было бы очень круто. И это сейчас очень востребовано!
@PythonHubStudio
@PythonHubStudio 2 күн бұрын
Желания в такой комбинации что-то делать нет. Хотя бы потому что aiogram - самостоятельная библиотека и если использовать что-то вроде fastapi, django или flask, то сразу к бекенду сайта писать функционал для бота через них.
@ivanshinkevich974
@ivanshinkevich974 3 ай бұрын
😀
@user-ym7de5ke8q
@user-ym7de5ke8q 3 ай бұрын
Большое спасибо за Ваш труд! Планируете ли Вы рассказать о функционале веб приложений в telegram?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Ещё не знаю буду делать или нет..
@user-ym7de5ke8q
@user-ym7de5ke8q 3 ай бұрын
Спасибо! Если будет время, расскажите пожалуйста об этом функционале.
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
​@@PythonHubStudioочень актуальная тема. На вас вся молитва. Подумайте хорошо. Никто, кроме вас, не сможет так вашим преданным подписчикам донести эту тему. Чистые боты уже не так интересны заказчикам, как с веб приложениями. Надеюсь благодарные подписчики будут потом 10% от продаж отдавать в поддержку канала)
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
))), сделаю, но не "завтра")
@user-nv6cv3im1y
@user-nv6cv3im1y 2 ай бұрын
Здравствуйте, делала бота по вашему туториалу, заметила такую штуку, что в callstack создается много asyncio_0, asyncio_1 и тд, которые не завершаются. Можно это както решить, или если будет под 100 асинков, то ничего страшного?
@SuperYuri009
@SuperYuri009 2 ай бұрын
Спасибо вам за ликвидацию безграмотности.
@MrSasuke1337
@MrSasuke1337 2 ай бұрын
Здравствуйте, добавьте пожалуйста на 9 уроке раздел тех.поддержки для бота, очень полезная функция
@PythonHubStudio
@PythonHubStudio 2 ай бұрын
Тех поддержка это - базовый вопрос-ответ. Вся инфа по aiogram, чтоб это реализовать уже показана
@ur_senior
@ur_senior 9 күн бұрын
Спасибо большое, но у меня есть нюанс, в вашем видео во всех уровнях есть фото, поэтому можно без проблем использовать метод edit_media(). Но что если в предыдущем сообщении нет фото? Можно ли как-нибудь изменить сообщение и заодно добавить фото и наоборот?
@PythonHubStudio
@PythonHubStudio 7 күн бұрын
Нет, как и говорилось, изменить текстовое сообщение на сообщение с фото нельзя. Именно поэтому, в данном варианте, первое сообщение от бота сразу с изображением.
@user-gp3fs8nz6h
@user-gp3fs8nz6h 3 ай бұрын
Здраствуйте, я обожаю ваши видео, учиться по ним одно удовольствие, у меня есть вопрос, я попробовал повторить вашего кренделя, получилось просто замечательно, взял даже как проект в колледже, голосовой ассистент для колонки, подключить вход колонки получилось, а вот с выходом проблемы, не представляю, как сделать так, чтобы голос воспроизводился не на компьютере, а на колонке, буду крайне благодарен вам если поможете с этим вопросом!
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Получите озвучку в виде готового файла или потока и передавайте через библиотеку для блютуз работы, а не воспроизводить на пк
@user-gp3fs8nz6h
@user-gp3fs8nz6h 3 ай бұрын
@@PythonHubStudio спасибо за совет
@jessicalang3654
@jessicalang3654 2 ай бұрын
Расскажите пожалуйста про рабочие VPN
@user-ro8iq2kd7w
@user-ro8iq2kd7w Ай бұрын
Здравствуйте, продолжение будет,чтобы в группу приходил заказ от пользователя?
@user-fo3wf3ry6x
@user-fo3wf3ry6x 2 ай бұрын
А будут ли ещё видео по интернет мпгазину джанго
@sunso2262
@sunso2262 3 ай бұрын
Привет! Лучший туториал-обучение на ютубе! Можешь подсказать, как красиво удалять сообщение ботом, после отправки след смс? Буду очень благодарен!
@sunso2262
@sunso2262 3 ай бұрын
Именно кодом, никак не могу найти, спасибо!
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Простой вариант: await message.delete() или await callback.message.delete() Также можно через бота: В параметрах хендлера пробрасываем экземпляр бота: from aiogram import Bot (message: Message, bot: Bot): await bot.delete_message(chat_id, message_id) Или await bot.delete_messages(chat_id, list_message_ids)
@sunso2262
@sunso2262 3 ай бұрын
@@PythonHubStudio Спасибо! Лучшие обучение и фид бек в этой сфере!
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
​@@PythonHubStudioя над этим вопросом тоже туплю. Так хочется убрать лишний мусор в чате с юзером. Хочется просто делать edit_text в обычных хендлерах, а не callback или хоть просто удалять не предыдущее, не текущее, а именно то, что я хочу сообщение. Гуглю, аилю, но результата никак не добьюсь. Уже и бота в параметрах прописывал, и делал bot.delete, но вечно получаю ошибку. То много аргументов, то чат айди не найден. Уже думаю в fsm вставлять. Короче.... Забор. Можете немного подробней описать как сделать так, чтоб messege был выведен в одном хендлере, а удаление его или изменение можно было сделать не в следующем, а в абсолютно произвольном хендлере? Как правильно сохранить вначале chat_id и message_ID и потом как правильно обратиться именно к ним?
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
​​​​@@PythonHubStudioя хочу сделать так, чтоб было понятно зачем мне это. Добавляю, к примеру, юзера. Вывожу сообщение с его именем, подразделением, датой рождения... всякая информация и через тире - пусто. Потом запускаю fsm и начинаю добавлять значения в поля. Хочу после каждого добавления обновлять как то входящее сообщение, чтоб было визуально красиво, что уже добавлено, а что ещё нужно добавить. Особенно большая проблема, если выводится информация с инлайн клавиатурой типа "добавить" "изменить" по нажатию запускаем fsm в callback (там легко сделать edit_text), но потом вызывается message для добавления данных и уже edit_text не проходит, а удалить через одно у меня не выходит, чтоб вывести заново информацию. А так же. Повторно вызвать обычную функцию, где ранее выводился message, легко. А можно ли вызвать заново callbeck функцию? Как ей сново передать в аргументы тот фильтр, с которым связан её вызов? ПОМОГИТЕ
@user-xd5wq9ce6p
@user-xd5wq9ce6p 2 ай бұрын
А можешь записать урок как сделать FSM для добавления данных в БД на inline клавиатуре ?
@PythonHubStudio
@PythonHubStudio 2 ай бұрын
Об этом было сказано, в том числе в миксе с message и callback хендлерах: Шаги по fsm зависят только от вашей команды в любом хендлере, о смене состояния на следующее. И не важно где.
@user-dd1cy2qs5z
@user-dd1cy2qs5z 3 ай бұрын
Добрый день!!! Вы очень большой Молодец, у Вас самый позновательный и с доступным языком для понимания. Я с первого урока делаю все, как показанно в видео и все получалось до этого выпуска. Было бы не плохо создать группу в телеграме для единомышленников так сказать и обсуждения технических вопросов. А вопросов много!!! Например у меня не запускается меню и я думаю что это связано с загрузкой Image. Так же обратил внимание на то что выложенная папка banners в коде прописана как banner если я все правельно понимаю. Ошибка у меня идет при обпрощении пользователя при старте Input should be an instance of InputFile. Подскажите что зделать что бы все заработало.
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Название папки не имеет вообще никакого значения. banner (в единственном числе) это имя таблицы в бд, откуда считывается запись с информацией о баннере (ид изображения, имя, описание). У вас скорее всего в хендлере start не хватает распаковки объекта InputMedia на media.media, как в исходнике и было показано. Или изображения баннеров не загрузили через админку
@user-dd1cy2qs5z
@user-dd1cy2qs5z 3 ай бұрын
Спасибо за ответ!!! Загрузил через админа меню все продукты отражаются в pgAdmin все супер!
@user-dd1cy2qs5z
@user-dd1cy2qs5z 3 ай бұрын
pythonhubstudio Есть же группа 11 чел. подписаны но группа закрыта для обсуждения. Автор это Ваша группа? Откройте будет веселей, и обсуждений и идей накидают
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Нет, это не моя группа, свою ещё не делал, а шакалов много... Сверьтесь с моим исходником на GitHub.
@user-dd1cy2qs5z
@user-dd1cy2qs5z 3 ай бұрын
@@PythonHubStudio Пожалуйста сделайте группу!!! Очень актуально!!! Дело пяти минут, и Вас не кто дергать не будет, я думаю наберётся группа единомышленников и многие вопросы, предложения и идеи будем там обсуждать. Очень хочу понять тему и разобраться но даже спросить не у кого нет в моем окружении кто бы подсказал.
@USER_____Oo_____USER
@USER_____Oo_____USER 3 ай бұрын
Сколько ещё видео планируешь по этому курсу?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Не знаю еще
@avaz_ohunov
@avaz_ohunov 3 ай бұрын
А будут ещё уроки для этого плейлиста? Или всё, что нужно, Вы уже рассказали?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Ещё не знаю буду делать дальше или нет
@shemyatin_konstantin
@shemyatin_konstantin 3 ай бұрын
​@@PythonHubStudio, пожалуйста, делайте дальше!
@ArtemAnt-bj1uh
@ArtemAnt-bj1uh 3 ай бұрын
Здравствуйте, писал бота. На некоторых моментах обращался к вашим видео. Спасибо вам огромное. Мой бот работает по типу тех поддержки отвечает на заготовленные вопросы. И все бы ничего но не могу сделать кнопку назад. Процесс должен быть построен таким образом: выбрали категорию вопроса и запомнили его айди. после нажатия на кнопку назад мы должны откотится к этому айди по нему сделать запрос. Для сохранения мне обязательно использовать ФСМ?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Если вам что-то нужно запомнить для конкретного юзера - есть два варианта: 1) сохранить это в fsm или 2) в каждом следующем хендлере делать запрос по id в бд. 1й вариант дешевле по производительности
@ArtemAnt-bj1uh
@ArtemAnt-bj1uh 2 ай бұрын
@@PythonHubStudio Спасибо огромное!
@user-dr.Pazzle
@user-dr.Pazzle 3 ай бұрын
Будет ли видео по добавлению в проект платежного сервиса какого-либо?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Будет
@nusudo3381
@nusudo3381 3 ай бұрын
Здравствуйте, пожалуйста сделайте в будующем как делать бота на дискорд на пайтоне
@sc0sc0rp10n
@sc0sc0rp10n Ай бұрын
Подскажите, после первого редактирования меню у пользователя (49:42) после команды Старт появляется обложка и все кнопок нету, в комментариях писали что в команде старт должно быть media.media , но это у меня написано, + я из конечного Вашего файла скопировал фрагменты отвечающие за кнопки и все равно результат тот же. Может подскажете в чем может быть проблема?
@PythonHubStudio
@PythonHubStudio Ай бұрын
Если нет ошибки, то помочь так не реально. Единственное что можно так посоветовать, это проверить, отправляются ли кнопки в хендлере вместе с картинкой
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 3 ай бұрын
Было бы круто реализовать внутри категории 'напитки" добавить "горячие напитки" "холодные напитки" и тд
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Да, было бы круто! Реализуете, вся инфа предоставлена. Для отдельного видео это точно делаться не будет, чтоб не дублировать информацию.
@ypohut1673
@ypohut1673 3 ай бұрын
могли бы вы для ВК Бота так же создать пожалуйста? ВК куча бабла сравнительно с телеграмм
@sunso2262
@sunso2262 3 ай бұрын
Здравствуй! А можно ли изменить, обновить, добавить каикое-либо данные в таблице бд, без фсм машины?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Без проблем, просто она позволяет контролировать процесс. Можно вводить четкие данные по команде с дополнительными аргументами: Допустим есть хендлер на команду /add, чтоб передать доп аргумент, в чате нужно ввести: /add some_text_with_data А в хендлере, который ловит команду add, просто извлеч эти доп данные: message.text.split()[-1]
@user-qp1ew9tq8o
@user-qp1ew9tq8o 3 ай бұрын
А эти заказы куда идут? Админу?
@MILAshka666
@MILAshka666 2 ай бұрын
Спасибо большое за курс!Но есть одна проблема с ботом, когда админ удаляет товар из ассортимента и этот самый товар лежит у пользователя в корзине, то корзина ломается полностью. Пытался исправить сам, не выходит, подскажите пожалуйста🥺
@PythonHubStudio
@PythonHubStudio 2 ай бұрын
Сверьтесь с исходником, это учтено в коде, и в видео это было (насколько помню)
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
Столкнулся с нелепой ошибкой. У меня 2 юзера. Один давний и его ID 8 цифр. Второй свежее - 10 цифр. Там где 8, то добавляет в базу юзеров и все работает без ошибок, а вот там где 10 не добавляет. OverflowError: value out of int32 range. Как я понимаю нужно заменить на Bigint. Но в базе самой то поменять легко, а вот как оно звучит в models?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
BigInteger или храните как строковое значение. docs.sqlalchemy.org/en/20/core/types.html
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
@@PythonHubStudio Ура!!!! Решил. Буду у автора тестировщиком Изменил одну строку в классе User с последующим импортом на user_id: Mapped[int] = mapped_column(BigInteger, unique=True) !!!!!и все работает!!!! И, кстати, еще одно заметил. Если вы делаете новую базу, сделали дроп, запустили бота и не увидели никакой реакции, то не пугайтесь. Вводите /admin сразу и приступайте к наполнению базы.
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
👍, (поправил в репозитории). На самом деле это очень смешной баг с моей стороны)))) Я прикинул, что в int32 - 10 знаков, и вроде как как раз для id, но пропустил что эти 10 знаков до числа 2147483647... И мой id "влез" в диапазон)))
@Great_Ave
@Great_Ave 3 ай бұрын
Стоит ли ждать видео по подключению redis?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Стоит, но не знаю когда выпущу) Поэтому, если срочно, то не стоит
@Great_Ave
@Great_Ave 3 ай бұрын
@@PythonHubStudio с нетерпением ждем! Это в любом случае должно быть интересно
@TheTVfootbal
@TheTVfootbal 2 ай бұрын
А как можно сделать, чтобы старые сообщения удалялись и от бота и от пользователя , чтобы не заполнять чат? Что нужно использовать middleware или handler с callback?
@PythonHubStudio
@PythonHubStudio 2 ай бұрын
Сообщения можно удалить только первые 48 часов. Чтоб это делать нужно вести базу данных по чатам+сообщениям с датой, и через, 47 часов каждое сообщение удалять. Тут дел очень много и вариантов.... В комментариях не описать. Взгляните на библиотеку celery, для фоновых отложенных задач. А вообще, их можно сразу удалять и все, или смоделировать поведение бота через измение сообщения.
@yerkinakhmetzhanov
@yerkinakhmetzhanov 3 ай бұрын
а как загрузить изображения с полями str вне бота ? отдельно в Postgresql ? за работу отдельное спасибо, проделан гиганский труд.!
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Бот может отправлять изображения по id, только если эти изображения были отправлены ему (или в личке или он его видел в группе, где он участвует). Без участия бота изображение в бд придется грузить в поле типа BLOB (для бинарных данных, так сказать). Это значит прочитать изображение через InputFile или open в режиме rb, или лучше через BytesIO и писать как строку байтов...
@yerkinakhmetzhanov
@yerkinakhmetzhanov 3 ай бұрын
@@PythonHubStudio или base64
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
Добрый день. Еще вопрос. Вижу у вас он не реализован тоже. Если при добавлении или изменении товара нерадивый админ вместо текста введет /start, то состояние не сбрасывается, мы переходим на страницу старт и все виснет. Как ему запретить вводить команды, когда он в состоянии? F.text & ~ F.text.startswith('/') результатов не дает. Если есть четко прописанная команда, то он ее выполняет все равно.
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Вы можете добавить то, что мы уже проходили, в фильтр хендлеров команд, а именно "стэйт фильтр None", или хендлеры команд опустить ниже в очередности и другие варианты.
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
@@PythonHubStudio Ниже тоже думал. Но вот None думаю будет получше. Спасибо. Как всегда обратная связь на высоте. Как Вы все успеваете? Жду ответов на delete(). Больной вопрос на сегодня(
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Ответ уже есть) Проблем с ответом на комменты раз в день нет), как на смс-ки)
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
@@PythonHubStudio Вот бывает, что простое рядом, а ты все усложняешь. Поставил в хендлере @admin_router.message(StateFilter(None), CommandStart()) и все. И нет пути админу к старту в состоянии ввода. Спасибо огромное.
@user-tl1xy9bc2i
@user-tl1xy9bc2i 3 ай бұрын
подскажите пожалуйста, на какой платформе собирать пк для пайтона? amd или intel?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Не собирайте ПК только для python, или под какой-то другой отдельный язык..., потому что всегда в итоге придется выучить второй. Но, (исключительно мое мнение!!!), между этими вариантами, насколько мне встречалось и известно, не будет разницы. По крайней мере, в сферах где я работаю, особой разницы не наблюдалось, даже на мак и прочих arm все работают. Но погуглите ещё, чтоб не зависеть от мнения одного
@user-tl1xy9bc2i
@user-tl1xy9bc2i 3 ай бұрын
@@PythonHubStudio Я в этой сфере только начинаю, даже книгу Эрик Мэтиз читаю)). У Меня брат работает только вот в железе ничего не понимает. Знаю только пайтон, докер и пайчарм эти программы нужны
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Спросите у брата, как с этим дела у его компаньонов...
@user-tl1xy9bc2i
@user-tl1xy9bc2i 3 ай бұрын
@@PythonHubStudio спасибо огромное) только им как моему брату в магазине собирали))
@yerkinakhmetzhanov
@yerkinakhmetzhanov 3 ай бұрын
"категари"=)))
@creativejuices91
@creativejuices91 21 күн бұрын
подскажите пожалуйста что может быть не так в пагинаторе? делал всё по видосам. но что-то пошло не так. start = (self.page - 1) * self.per_page ~~~~~~~~~~^~~ TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
@creativejuices91
@creativejuices91 21 күн бұрын
товары не показывает после того как выбрал категорию
@creativejuices91
@creativejuices91 20 күн бұрын
я в get_menu_content попробовал по дефолту передавать в page = 1, тогда показывает товары, но пагинация не работает. Пишет: Telegram server says - Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message
@creativejuices91
@creativejuices91 19 күн бұрын
решил проблему. я просто не передавал параметр page в эту функцию
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 3 ай бұрын
Как добавить категорию или изменить "о нас", без дропа базы?
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Я этот функционал здесь не делал. Но вы уже можете доделать это сами: Для изменения "о нас": добавьте пункт в fsm по добавлению/изменению баннера (как пример есть fsm по добавлению/изменению товара), а сам запрос к орм менять почти не нужно, просто добавьте туда ещё один аргумент description. Для добавления новой категории: написать запрос через орм для добавления категории и сделать микро fsm для этого по аналогии.
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 3 ай бұрын
Пасиб👍 обязательно попробую 👍
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
@@musoroszhigayschiy_zavod76 Так как эта информация не особо изменяемая, а заносится почти один раз, то можно просто зайти в базу и изменить значение поля. Как по мне
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Соглашусь с тем, что все манипуляции с бд не нужно делать через админку в боте. Она только для основных нужд, иначе код бота станет слишком избыточным. Но всё-таки можно, особенно с реализацией для магазина. (Один шаблон потом можно продавать разным заказчикам)))
@zarinamanasbekkyzy4233
@zarinamanasbekkyzy4233 28 күн бұрын
Этот проект выполнен в Джанго?
@PythonHubStudio
@PythonHubStudio 27 күн бұрын
Нет, в aiogram 3
@user-sd6rx4sj1r
@user-sd6rx4sj1r 5 күн бұрын
Добрый день! Хотел бы узнать можно ли как это удалить кнопку после ее нажатия? Ни как не могу найти решение(
@PythonHubStudio
@PythonHubStudio 2 күн бұрын
Это в видео было . one time keyboard параметр True . В инлайн кнопка тоже было пояснение
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 3 ай бұрын
как из цены убрать знак доллара??? а то люди не поймут про суп стоимостью в 250 долларов)))
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Просмотрите код... Знак $ добавлен в строках при формировании caption изображения....
@tatianasmatova5963
@tatianasmatova5963 16 күн бұрын
а как вывести дополнительно название категории в описании товара?
@PythonHubStudio
@PythonHubStudio 15 күн бұрын
category.name, если ваш объект из бд о категории назван category (переменная)
@tatianasmatova5963
@tatianasmatova5963 15 күн бұрын
@@PythonHubStudio Это было первое и естесственное, что я попробовала. Но тут же словила ошибку AttributeError: 'int' object has no attribute 'name'. Сейчас борюсь с тем, как правильно передать category.name.
@user-mi2eb8mc1n
@user-mi2eb8mc1n 2 ай бұрын
Здравствуйте! Хотел бы заказать у вас реализацию одного проекта, просто своих знаний не хватает. Ответьте пожалуйста в комментариях как с вами связаться. Заранее спасибо!
@PythonHubStudio
@PythonHubStudio 2 ай бұрын
Заказы не беру
@neruzo1697
@neruzo1697 Ай бұрын
*бать я вах*и а всего-то хотел реализовать кнопку «назад», неужели придется все эти ролики с начала досматривать?
@PythonHubStudio
@PythonHubStudio Ай бұрын
Нет не нужно. Посмотрите только этот. Тем более репозиторий для старта этого есть. Но это и не нужно, смысл тот же, для любой кнопки назад.
@user-ln5tr2mg3g
@user-ln5tr2mg3g 7 күн бұрын
ошибку выдает не могу исправить
@PythonHubStudio
@PythonHubStudio 42 минут бұрын
Хотя бы какую, а так про констатацию факта ни о чем...
@alexandrgurov8154
@alexandrgurov8154 Ай бұрын
я ваще ни**я ничего не понимаю
@supreltd
@supreltd 2 ай бұрын
А что если сделать класс метод в классе групп состояний? Вдохновился твоим объяснением. class AddProduct(StatesGroup): # Шаги состояний name = State() description = State() category = State() price = State() image = State() product_for_change = None @classmethod def previous_state(cls, current_state: str) -> State: cur_ind = cls.all_states.index(current_state) if cur_ind > 0: return cls.all_states[cur_ind - 1] texts = { "AddProduct:name": "Введите название заново:", "AddProduct:description": "Введите описание заново:", "AddProduct:category": "Выберите категорию заново ⬆", "AddProduct:price": "Введите стоимость заново:", "AddProduct:image": "Этот стейт последний, поэтому...", } @admin_router.message(StateFilter("*"), Command("назад")) @admin_router.message(StateFilter("*"), F.text.casefold() == "назад") async def back_step_handler(message: types.Message, state: FSMContext) -> None: current_state = await state.get_state() print(type(current_state)) previous = AddProduct.previous_state(current_state) if previous: await state.set_state(previous) await message.answer( f"Ок, вы вернулись к прошлому шагу {AddProduct.texts[previous.state]}" ) else: await message.answer( 'Предидущего шага нет, или введите название товара или напишите "отмена"' )
@PythonHubStudio
@PythonHubStudio 2 ай бұрын
Классно получилось!
@MrSasuke1337
@MrSasuke1337 3 ай бұрын
Люди, помогите пожалуйста, 8 урок из гитхаба у меня не работает, даёт ошибку: Cause exception while process update id=502593091 by bot id=6827290110 ValidationError: 2 validation errors for InputMediaPhoto media.str Можете сказать что не так? И скажите пожалуйста что должно быть в .env файле
@Flomasterok
@Flomasterok 3 ай бұрын
Скорее всего ты баннеры просто закинул в папку а не добавил их через телегу как показано на видео
@user-dd1cy2qs5z
@user-dd1cy2qs5z 3 ай бұрын
Для того что бы понять зачем нужен env необходимо посмотреть все уроки, особенно тот где его создали. Подсказка там должен быть Ваш Токен
@MrSasuke1337
@MrSasuke1337 3 ай бұрын
@@user-dd1cy2qs5z я просматривал весь курс гениус и .еnv файл не забыл -_- до 8 урока все работало, потом когда с корзиной начал работать к хуяи все
@user-dd1cy2qs5z
@user-dd1cy2qs5z 3 ай бұрын
@@MrSasuke1337 Таблицы старые снесли? Баннеры через телегу установили?
@MrSasuke1337
@MrSasuke1337 3 ай бұрын
@@user-dd1cy2qs5z я вот не понимаю как снести, я в бд ноль, потому я только тг боты изучаю
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
Спасибо!
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Благодарю за поддержку канала!
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
@@PythonHubStudio Доброй ночи. Если можно, такой вопрос. Снова изобретаю велосипед и в колесе запутался 1. Получаю записи с БД в виде списка. Хочу их вывести в сообщение через as_marked_section,. Он хочет текст в body. Ни список, ни кортеж не принимает. И я никак не могу сдвинуться с места. 2. Видел в одном боте (и это мне просто теперь необходимо) выводятся в сообщение данные в виде списка с активной html ссылкой. Дальше при нажатии на ссылку уже вызывается, как я думаю, колбэк и мы переходим к работе с выбранным элементом. Удобно было бы для небольших справочников вывести весь, выбрать элемент и потом дать выбор удалять или менять. Да и много мыслей с этими ссылками у меня. Спасибо.
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
@Kovryzhkin 1) он хочет строки, перечисленные как отдельные аргументы, туда нужно передать не просто список, а распаковать его вот так: *список 2) нужно делать полноценное вебапп чтоб работало так 3) А по поводу вообще ссылок в тексте: В market section такое не получится, там экранируются теги, но самостоятельно собрать такой вариант с гиперссылкой через тег а: text='нажми на ссылку' Или с ссылкой на бота: "t.me/Your_bot/?start=-command" - это диплинк, работает при первом заходе на бота, или если пользователь уже работает с ботом, то ему всё равно покажет кнопку старт/запустить.
@Kovryzhkin
@Kovryzhkin 3 ай бұрын
@@PythonHubStudio Добрый день. Спасибо огромное. Питон за месяц все таки ещё не досконально изучен. Я ночь на * убил. Через for сделал, но хотелось именно так. А вот по второму вопросу меня только что осенило. Можно же просто в тексте сообщения формировать "/command' через links и она будет выводиться как активная ссылка. А затем в хендлере отлавливать значение Сказал просто, теперь ночь на реализацию))) Спасибо вам огромное.