aiogram 3 - Telegram бот python #6 FSM Машина состояний, Админка в боте, Диалоги, фильтр IsAdmin

  Рет қаралды 25,098

Python Hub Studio

Python Hub Studio

Күн бұрын

Пікірлер: 214
@artemoleinichenko1005
@artemoleinichenko1005 11 ай бұрын
Прекрасный разбор. Один из лучших русскоязычных авторов на платформе KZbin! Кто смотрит - будете довольны.
@belford123
@belford123 11 ай бұрын
Не выходные а фантастика! 😃✌🏻 Спасибо автор!
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Точно, сегодня же воскресенье 😀 Хорошего вечера!!!
@GameStreamJ
@GameStreamJ 11 ай бұрын
Как же я ждал этот видос 🎉
@Ильмир_Гильмияров
@Ильмир_Гильмияров 2 ай бұрын
я уже не первый плейлист смотрю на этом канале, очень подробно и полезно, полноценные уроки. Уважаемый автор канала, ты делаешь очень полезное дело, от всего сердца благодарю и надеюсь, что будет еще много полезных уроков
@PythonHubStudio
@PythonHubStudio 2 ай бұрын
Благодарю, очень приятно!
@alsoduos
@alsoduos 11 ай бұрын
Огромное спасибо за урок! С нетерпением жду следующего!
@Jloh9-11
@Jloh9-11 11 ай бұрын
Вы делаете очень качественный контент! Спасибо вам большое за труд!
@shemyatin_konstantin
@shemyatin_konstantin 11 ай бұрын
Многое для себя подметил, хотя уже писал ботов с FSM. Спасибо за ваши труды!
@Евгений-т3ц9к
@Евгений-т3ц9к 11 ай бұрын
Во, еще видос! Автор красава! Есть чем заняться в выходной день!))) Здоровья тебе! Лайк!
@IvaschenkoN
@IvaschenkoN 11 ай бұрын
Спасибо! Качество кода и подача материала на высоте! Огромная просьба завернуть проект в докер перед началом использования базы. Надеюсь что моя просьба не увеличит интервал подачи материала. С нетерпением ждем продолжение )
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Благодарю 👍.Давайте докер отложим на потом, чтоб не вмешивать не связанный с aiogram инструмент, в итак насыщенное следующее видео (middleware, sqlalchemy и тд).
@IvaschenkoN
@IvaschenkoN 11 ай бұрын
@@PythonHubStudio ну вот, один неудачный комментарий и сломалась частота подачи материала. 4й день подходит к концу, а видео все еще нет (
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Это не при чем)) с понедельника (скорее всего, максимум вторник) публикация продолжится
@nikulin7944
@nikulin7944 11 ай бұрын
Спасибо! Несколько раз пытался начать писать тг ботов но внятных уроков не попадалось. Ваши уроки 🔥
@АмирНасибуллин-ц2с
@АмирНасибуллин-ц2с 9 ай бұрын
Лучший курс, который я видел в интернете. Огромное Спасибо🤛
@Serg_NT
@Serg_NT 7 ай бұрын
за обработку некорректных данных в определенном состоянии - отдельное спасибо!!! Это гениально и просто)
@RoboTron_Channel
@RoboTron_Channel 11 ай бұрын
Ну это просто праздник какой-то! (с)
@АндрейЛосюк
@АндрейЛосюк 6 ай бұрын
Спасибо большое за этот замечательные курсы ! Понятно объясняете !!! 👍👍👍
@SuperYuri009
@SuperYuri009 8 ай бұрын
Лучший контент. Спасибо.
@neurotop
@neurotop 11 ай бұрын
Спасибо большое ❤Вы лучший
@Forrobloxstudio-h4x
@Forrobloxstudio-h4x 11 ай бұрын
хочу сказать спасибо автору канала
@yurgango6444
@yurgango6444 11 ай бұрын
Красавец! Спасибо!🤘
@ФедорГуглин-ш4з
@ФедорГуглин-ш4з 8 ай бұрын
Привет! Очень полезный курс у Вас получился, спасибо! Я час убил на то чтобы понять как работает функция go_back, хотел уже задать вопрос, но вдруг все понял. Конструкция цикла вскипетила мне мозг.:D
@courses_uz
@courses_uz 11 ай бұрын
Thank you very much. This is very good video
@tetraocean
@tetraocean 6 ай бұрын
Очень помогли, разобраться в основах aiogram, перехожу к след уроку😀
@андрейщеглов-й6б
@андрейщеглов-й6б 4 ай бұрын
Спасибо за работу. автор ты лучший
@gektorat
@gektorat 11 ай бұрын
однозначно лайк! спасибо!
@default6993
@default6993 8 ай бұрын
12:47 Пацаны, у кого не работает, добавьте в файл app следующие две строки: from handlers.admin_private import admin_router dp.include_router(admin_router)
@genylivnev7822
@genylivnev7822 7 ай бұрын
Спасибо тебе добрый человек! Реально заработало
@BEGovoy_DZEN
@BEGovoy_DZEN 10 ай бұрын
взял код из следующего видео и сработало
@xxx-jy1ji
@xxx-jy1ji 7 ай бұрын
Однозначно отлично рассказываешь. Подписка, лайки под всеми видео. Я только в этом уроке не мог понять почему у меня админ фильтр не работает. Дело в том, что я не скачиваю уроки твои, а сам набираю. Так лучше запоминается. Неделю пытался понять. Поковырялся в коде. Я не обратил внимания, а ты не упомянул, что нужно в апп, добавить диспетчер dp.include_router(admin_router). Хотя в моменте, где ты говоришь о добавлениии май админ лист к боту, там на экране видо, что рорутер админ, добавлен. Если бы я скопировал урок, то ошибки бы не было. А так сам пропустил, и сам нашел))). Т.к. я новичек (не яд), то долго не мог понять, пересмотрел этот ролик раз 30. Но зато сам разобрался и увидел, что сам роуртер не объявлен. ООООООООчень кайфонул когда решил проблему. Значит обучение идет). Спасибо.
@МаксГла
@МаксГла 4 күн бұрын
тоже сам набирал и упустил это)
@Dantes_RUS
@Dantes_RUS 2 күн бұрын
@@МаксГла я обычно забываю запятую или скобку закрыть)
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 11 ай бұрын
Уважаемый автор, не дайте пропасть пятнице) давайте новый ролик)
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Послезавтра(в понедельник), отдыхайте)
@robertfalken2699
@robertfalken2699 11 ай бұрын
Когда следующее видео? Жду с нетерпением!
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Через пару дней, дела...
@Loony666Noob
@Loony666Noob 11 ай бұрын
Думал, что клавиатуры трудны для понимания, но разобравшись с ними - теперь трудность в понимании возникает с FSMкой =) Надеюсь, что тоже при втором просмотре будет намного легче для понимания
@Prizrak_09
@Prizrak_09 11 ай бұрын
​Приветствую тебя! Посоветуй пожалуйста, что начать изучать для создания сайта, информационного портала с добавлением интерактивной картой? Нужно для реализации проекта, туристических маршрутов по вершинам Южного Урала/Кавказа. Сам работаю разработчиком 1С, но сайты никогда не разрабатывал Подробности по проекту могу больше описать, если это требуется
@ЕвгенийПетренко-ж1з
@ЕвгенийПетренко-ж1з 11 ай бұрын
Сделайте курс по FastAPI
@sunpluck
@sunpluck 11 ай бұрын
Великолепные уроки, спасибо большое! Почему, кстати, именно aiogram, а не pyrogram или telethon? Последние больше для пользовательских сессий подходят, или на них вообще не написать так легко бота?
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Даже не знаю.., возможно потому что "на глаз" понравилась простота и логичность
@photo_graf_khv
@photo_graf_khv 8 ай бұрын
Просто супер!
@2bdriveservice675
@2bdriveservice675 5 ай бұрын
Извините, а реализация хранения FSM в БД 18:04 будет рассмотрена в дальнейших видео?
@Paul-vt2ie
@Paul-vt2ie 4 ай бұрын
Если у вас Бот выдает заголовки видаОплата, то вам нужно дописать в последней строке await message.answer(text.as_html(), parse_mode="HTML")
@bunta8789
@bunta8789 10 ай бұрын
7:04 В метод __call__ помимо message и bot что еще можно передать? Если я правильно понимаю, то срабатывание этого метода происходит вообще где-то в глубине пакета aiogram (то есть не в коде, который мы написали, а в коде, который написали разработчики), несмотря на то, что мы даже явно не указали никаких экземпляров наших кастомных фильтров. Соответственно там происходит вызов экземпляра класса и уже там при вызове передаются экземпляры класса types.Message и Bot. Так вот не понятно, помимо этих классов, в метод __call__ что еще можно передать? В самих пакетах aiogram не смог найти где этот вызов находится. И в документации тоже, вроде бы, не сказано, что можно передавать.
@PythonHubStudio
@PythonHubStudio 10 ай бұрын
Можно взять любые данные которые передаются через словарь data из middleware (промежуточные слои). О middleware будет в следующих видео (которые уже есть)
@izi4191
@izi4191 11 ай бұрын
Есть вопрос ,подскажите как так бысто импортировать , как на 22:32
@МихаилВасин-о3ю
@МихаилВасин-о3ю 11 ай бұрын
Спасибо за подробный рассказ и обьяснения! А вопрос такой, у меня sinology дома, могу как то запустить бота, написаный по Вашим роликам? Направте на путь поиска информации, а если есть ответ-поделитесь
@wonderofu5609
@wonderofu5609 10 ай бұрын
Лучший!!!!
@shimhound
@shimhound 4 ай бұрын
Здравствуйте, я либо не понял, либо прослушал этот момент. Примерно когда начинается 18:00, у вас идет допустим async def add_description......а снизу идет: await message.answer("Введите стоимость товара") это идет у вас опечатка или так нужно делать? Заранее благодарю за ваше старание!
@legaru9738
@legaru9738 9 ай бұрын
Как можно сделать? Загрузка фото сразу несколько штук за раз . и чтоб каждое фото сохранилось.
@spielshow3474
@spielshow3474 11 ай бұрын
Жду с нетерпением базу данных. ❤
@erwinrommel693
@erwinrommel693 11 ай бұрын
Здравствуй, подскажи пожалуйста какой курс стоит покупать по питону, что бы не кинули, есть ли у тебя проверенные варианты? к кому можно будет пойти для платного обучения.
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 11 ай бұрын
дошел до 12:50 клавиатура админа не появляется
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
А если взять код с гитхаба работает? Если да, то у вас где-то ошибка/опечатка/чего-то не хватает.
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 11 ай бұрын
@@PythonHubStudio оттуда все работает)))
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Значит есть в чем поразбираться) Сделайте паузу, чтоб не было 'замыливания' взгляда.
@kootlife9432
@kootlife9432 11 ай бұрын
@@PythonHubStudio Добрый день подскажите пожалуйста у меня ошибка "Import "common.restricted_words" could not be resolvedPylancereportMissingImports)"если я удаляю хэндлер с restricted_word то все работает
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Закройте/откройте редактор заново, это просто pylance сбоит
@Барабашка-ц5с
@Барабашка-ц5с 11 ай бұрын
когда следующий урок?
@oleksanriya
@oleksanriya 10 ай бұрын
А есть ли возможность работать как-то с календарем? имею в виду например выбрать доставку на какой-то день и время, как в примере?
@belford123
@belford123 11 ай бұрын
Добрый день Автор! Все хорошо у тебя? Чет пропал ...
@alexandr_segeda
@alexandr_segeda 11 ай бұрын
Продолжение будет?)))
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Скорее всего в понедельник, дела...
@Texoras
@Texoras 11 ай бұрын
Спасибо вам большое, а будет видео про дискорд бота?
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Можно, это не сложно сделать(обновить существующий уже плейлист на канале по discord боту, там ничего существенного не изменилось, по сравнению с телеграм), но такой запрос поступил только один раз - от Вас!
@gametown1437
@gametown1437 11 ай бұрын
Здравствуйте! А что лучше использовать, MySQL или PSql В рамках такого бота по "продаже" товаров Я только начинаю свой путь в it, так что извините, если задал неразумный вопрос
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Разницы не будет в работе. Но по psql больше распространение и примеров в сети если возникнут вопросы/проблемы и более знакома другим разработчикам если проект будет совместный с кем-то впоследствии.
@gametown1437
@gametown1437 11 ай бұрын
​@@PythonHubStudio, спасибо!😊
@Никита-б7о1м
@Никита-б7о1м 7 ай бұрын
Добрый день! Большое спасибо за ваш труд, давно уже смотрю ваши видео)) Единственное, не разобрался как вы так быстро наведя на слово импортируете фильтры например и т.д. ? Точнее на видео это понятно как выглядит, но у меня такое не подсвечивается, чтобы он автоматически импортировал, а приходится руками всё время вбивать((
@PythonHubStudio
@PythonHubStudio 7 ай бұрын
Это плагин для vscode - pylance, соответственно настроенный. На канале есть видео как так его настроить
@МагестЛоил
@МагестЛоил 5 ай бұрын
28:00 У меня код вылетает. Ругается на admin_router.message(AddProduct.name, F.text). Не знаю из за чего. Бот просто не запускается теперь.
@МагестЛоил
@МагестЛоил 5 ай бұрын
я по ошибке в классе addProduct сделал запятые после полей name и т.д.
@vladimirfesenko12345
@vladimirfesenko12345 6 ай бұрын
Здравствуйте. Большое спасибо за обзор и понятное объяснение FSM. Подскажите пожалуйста, как решается проблема, если пользователю надо загрузить не одно, а несколько фото? Если они объединяются в media group, то есть mediagrouphandler. А вот если пользователь вдруг решил их не группой отправить, а по отдельности. Вы сталкивались с такой задачкой? Рылся в гугле и на форумах. Честно.
@PythonHubStudio
@PythonHubStudio 6 ай бұрын
Нет, я так не делал, но простое решение вроде есть, на первый взгляд. Просто не сразу меняйте Стейт на следующий, а сделайте общий хендлер, который ловит и это шаг и следующий (например на фото и текст), который ловит фото и что-то другое, что идёт следующим. И у вас получиться ловить любое количество фоток, а потом, когда он отправит , например текст, перейти к другим делам.
@vladimirfesenko12345
@vladimirfesenko12345 6 ай бұрын
@@PythonHubStudio Спасибо за ответ. Я уже рассматривал такой вариант поведения, но после фото он сразу должен выдавать сообщение с вопросом про контактные данные (пользователь не должен ничего вводить). Можно сделать reply кнопку "Подтвердить ввод", но в моем контексте это не совсем верно. Радует то, что по умолчанию несколько фото группируются и пользователю надо снять галочку эту, чтобы получить не совсем адекватное поведение. Тоже думал, что все просто, а по факту голову уже сломал и ничего толкового, кроме как в сообщении написать пользователю, чтобы при отправке группы фоток эту галку оставлял, не пришло. )))
@PythonHubStudio
@PythonHubStudio 6 ай бұрын
Последнее, на самом деле, очень верно, любое неадекватное поведение юзера предусмотреть невозможно, сразу предупредили текстом, и если что сделали кнопку назад и все.
@vladimirfesenko12345
@vladimirfesenko12345 6 ай бұрын
@@PythonHubStudio Да, вы правы. Спасибо.
@РусланТитаренко-ф6я
@РусланТитаренко-ф6я 5 ай бұрын
Как же кайфово, когда какие-то неточности и баги ловишь и потом такой целый ищешь причину. В общем из-за того, что диспеччер админки был размещен ниже диспечера приватки - у меня не реагировало в привате на /admin. Реально целый день потратил, на то, что бы это определить. dp = Dispatcher() dp.include_router(admin_router) dp.include_router(user_private_router) dp.include_router(user_group_router)
@zolotaya_pora
@zolotaya_pora 8 ай бұрын
спасибо!
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 11 ай бұрын
Админская клава при добавлении товара постоянно отправляет ""Введите описание товара". Как исправить?
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Проверить текст сообщений в хендлерах или фильтры, вообщем код. Если делали копипаст, то может глюк редактора
@musoroszhigayschiy_zavod76
@musoroszhigayschiy_zavod76 11 ай бұрын
​@@PythonHubStudioделал копи паст с гит хаба. Пайчарм перезапускал. Посмотрите пожалуйста почему название товара дает вводить, в как вводишь описание, то он повторяет сообщение "введите описание"
@СтудиядикихКазахскихмангустови
@СтудиядикихКазахскихмангустови 5 ай бұрын
Уже все перепробовал не видит my_admins_list Не знаю что делать уже скопировал репозитории полностью все равно не видит
@a11eyezonme1
@a11eyezonme1 11 ай бұрын
Добрый день, не подскажите как сделать так чтобы при проверке почты, imaplib не отмечал письма как прочитанные?
@АнтонК-ы8й
@АнтонК-ы8й 8 ай бұрын
Спасибо за видео! А можно про вариант добавления админов в отдельный список подробнее? Условно есть супер админ, который дает другим админам доступ к боту, как он это будет делать? Прописывать id пользователя и сохранять в базу? Как ему узнать этот id, если он понятия не имеет как это сделать? Вообще как в бота добавить пользователя, не абы кого, а конкретного пользователя?
@PythonHubStudio
@PythonHubStudio 8 ай бұрын
Как отличить админов поможет запрос к api get administrators (мы его делали в хендлере на команду /admin)(сделайте принт ответа чтоб посмотреть). Создатель бота вообще числится как owner/creator. По id пользователя можно удобно раздавать права. Это если более подробно чем в видео итак было показано
@АнтонК-ы8й
@АнтонК-ы8й 8 ай бұрын
​@@PythonHubStudio у меня сложность в том, что я не понимаю как добавить пользователя в бот. Допустим я написал бота и запустил его. Сейчас я один пользователь в нем, теперь я хочу добавить людей, которые этим ботом смогут пользоваться. Вариант прописать id нужных пользователей в настройках бота не подходит, их нужно добавлять через бот. Все ответы которые я смог найти свлядятся к тому, что пользователь регистрируется в боте самостоятельно, естественно тогда я его и username и id могу выцепить. А тут мне надо пользователя зарегистрировать в боте, только после этого он получит к нему доступ.
@ypohut1673
@ypohut1673 11 ай бұрын
Спасибо. Пожалуйста сделайте еще вк
@vladimirdedov5160
@vladimirdedov5160 10 ай бұрын
Ваш способ защиты от неправильных данных в конце, не фильтрует защиту от отправки emoji вместо текста. Не подскажите как с ними быть?
@PythonHubStudio
@PythonHubStudio 10 ай бұрын
И не должно, смайл это текст, который может быть в описании/названии. Можно, если нужно, сделать проверку строки на содержание емоджи через регулярные выражения или просто через проверку. Посмотрите как выглядит реальная строка emoji (сырая).
@Amirhan91
@Amirhan91 11 ай бұрын
Спасибо за видео! Подскажите как сделать рассылку?
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Если группы нет, то ведите базу данных пользователей бота и каждому отправляйте сообщение по id пользователя взятому из бд.
@Mintik24
@Mintik24 8 ай бұрын
Здравствуйте,как запустить отдельно один урок чтобы проверить что поучилось?
@PythonHubStudio
@PythonHubStudio 8 ай бұрын
Как отдельный проект. Суть та же. И бд под него можно отдельную также сделать . На одной бд для всех вариантов могут быть проблемы в совместимости бд по таблицам
@shu3s
@shu3s 11 ай бұрын
можешь в следующем уроке объяснить как сделать жирный шрифт конкретно в кнопке пожалуйста? хтмл, маркдаун парс там не работает(
@Amirhan91
@Amirhan91 11 ай бұрын
пните если ответит
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
А так вообще можно...?
@shu3s
@shu3s 11 ай бұрын
@@PythonHubStudio да, возможно. в некоторых ботах замечаю такое
@ЄвгенійМахота
@ЄвгенійМахота 11 ай бұрын
Огромное спасибо за урок. Можете ли сделать урок как создать опрос в группе при помощи бота? Спасибо
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Был же пример в теме про кнопки(там где request poll), или что-то другое?
@KroLenbDC
@KroLenbDC 11 ай бұрын
12:37 не знаю почему, но сообщение не удаляется, но при этом клавиатура в боте появляется исправно
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Бот должен быть админом в группе
@KroLenbDC
@KroLenbDC 11 ай бұрын
@@PythonHubStudio он и есть админ, да и доступ к удалению сообщений тоже у него есть
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Значит проверьте свой хендлер для группы /admin. Не может быть, что у меня работает (код на гитхабе есть), а у вас просто так нет. Если делали копипаст, то может редактор не воспринял некоторые строки(такое бывает) - добавьте где нибудь рандомный print, чтоб текст заново прочитался, или перезагрузите редактор(закрыть/открыть). Как-то так...
@rogalik4163
@rogalik4163 11 ай бұрын
как добавить боту кастомные emoji из премиумам?
@gametwitch8356
@gametwitch8356 2 ай бұрын
Здравствуйте, помогите пожалуйста. скопировал ваш год и бот не запускается и выдает ошибку from common.restricted_words import restricted_words ModuleNotFoundError: No module named 'common.restricted_words' перепробовал все, в интернете нет ответа
@RevolversSlav
@RevolversSlav 10 ай бұрын
Уважаемый автор! Благодарю Вас за качественный материал, не останавливайтесь) И есть у меня к Вам вопрос: При запуске бота, в терминал выдает предупреждение. Как переписать код в данном боте? Также работаю в PyCharm MacOS, остановился на создании BD. Все необходимые библиотеки инсталлировались после 20.03.2024. Заранее благодарю за ответы DeprecationWarning: Passing `parse_mode`, `disable_web_page_preview` or `protect_content` to Bot initializer is deprecated. This arguments will be removed in 3.5.0 version Use `default=DefaultBotProperties(...)` instead. bot = Bot(token=os.getenv('TOKEN'), parse_mode=ParseMode.HTML)
@PythonHubStudio
@PythonHubStudio 10 ай бұрын
Это просто предупреждение о том что, в версии 3.5 aiogram-a будет перемещение способа указания parse mode.
@akobelyov
@akobelyov 9 ай бұрын
если прям сильно напрягает это предупреждение, то можно заменить на bot = Bot(token=os.getenv('TOKEN'), default=DefaultBotProperties(parse_mode=ParseMode.HTML)) у меня на версии 3.4.1 с такой строкой всё работает.
@poroshochek1
@poroshochek1 5 ай бұрын
Так понимаю, передача списка my_admin_list через бота, является не совсем верным способом передачи зависимостей. Лучше это делать через workflow_data.
@poroshochek1
@poroshochek1 5 ай бұрын
Плюс все это обновление можно сделать динамическим, где при старте бота будет автоматически создаваться нужный список, и при добавлении/удалении админов этот список будет обновляться через получение апдейтов типа chat_member. А иначе совсем уж какой-то кривой велосипед получается, когда это все вручную нужно делать при каждом перезапуске бота и при каждом изменении списка админов.
@kootlife9432
@kootlife9432 11 ай бұрын
@PythonHubStudio когда уже новый видос неделя прошла((( каждый день жду уже не могу
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Код 7го урока на гитхабе уже есть, после монтажа завтра публикация
@wonderofu5609
@wonderofu5609 10 ай бұрын
Привет! Обращаюсь к вам так как зашёл в тупик. В кратце я создал два экземпляра бота, и проблема в том что команды пересекаются между ними (роутерами) Какой сделать фильтр? У меня идея была сделать фильтр на имя роутера, но к сожалению дало ошибку(
@PythonHubStudio
@PythonHubStudio 10 ай бұрын
Одни роутеры вешайте на одного бота, а другие на другого, в этом то и суть - разделить
@wonderofu5609
@wonderofu5609 10 ай бұрын
@@PythonHubStudio та уже решил) Вопрос был в том, как сделать кастомный фильтр, и додумался сделать фильтр на сам экземляр бота и всё сработало как надо Я просто не знал, что у message есть свойство bot Вот такой фильтр у меня получился class ChatBotFilter(Filter): def __init__(self, bot: Bot) -> None: self.bot = bot async def __call__(self, message: types.Message) -> bool: return message.bot == self.bot
@wonderofu5609
@wonderofu5609 10 ай бұрын
@@PythonHubStudio но у меня появилась другая проблема, как между роутерами передавать переменные? может знаете
@1230pp
@1230pp 11 ай бұрын
Здравствуйте как связаться с вами? мне нужно инлайн бот телеграм
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Уже только что связались... Заказы не принимаю
@1230pp
@1230pp 11 ай бұрын
Понятно 😐
@PaxtonFettel_EBM
@PaxtonFettel_EBM 8 ай бұрын
Атрибут bot.my_admins_list случайно не в оперативной памяти хранит список? Если это так, значит после перезапуска бота нужно будет каждый раз в ручную тянуть командой в группе заново список, верно?
@PythonHubStudio
@PythonHubStudio 8 ай бұрын
Правильно
@PaxtonFettel_EBM
@PaxtonFettel_EBM 8 ай бұрын
​@@PythonHubStudio Хочу выразить вам благодарность за отличный контент и что активно общаетесь с аудиторией) Жду ваши видео как любимый сериал)
@sanyajc5300
@sanyajc5300 11 ай бұрын
В конце 6го урока автор отдельным хэндлером ловит ошибку ввода пользователя, а не проще обернуть в try except и в except написать что что то пошло не так и выкинуть в начало его, так он не только неправильный ввод будет ловить, но и другие ошибки без помех работы бота. Я лично каждый хэндлер оборачиваю в try/except, иногда бывает долгий ответ от сервера и бот лег, а так отписал что то не так и работает дальше)
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Не проще. Отдельный хендлер нужен для отлова отправки вместо текста - стикера или фото или ..., try except имеет смысл писать только внутри хендлера, и то, если через if elif не смогли предусмотреть варианты (как запасной вариант).
@migoamigo5553
@migoamigo5553 9 ай бұрын
Здравствуйте, сталкивался кто с такой проблемой(from common.restricted_world import restricted_world ) ошибка (Доступ к "restricted_world" не осуществляется Pylance) и много где такое бывает, как можно это исправить?Автору огромное спасибо!Лучший!
@PythonHubStudio
@PythonHubStudio 9 ай бұрын
Проект открыт в редакторе нормально или на папку выше в которой все проекты?
@migoamigo5553
@migoamigo5553 9 ай бұрын
@@PythonHubStudio проект открыт нормально,все проверил,вы сказали, что скопируйте код... скопировал и в хендлерах вылазит что то подобное. Например "from sqlalchemy.ext.asyncio import AsyncSession" (Unable to import'sqlalchemy.ext.asyncio'PylintE0401:import-error Не удается разрешить импорт "sqlalchemy.ext.asyncio" Pylance(reportMissingImports) Весь интеренет перерыл, ничего не нашел на данную проблему
@АлександрБеляев-с1ю
@АлександрБеляев-с1ю 11 ай бұрын
Как сделать, если допустим имеется несколько магазинов и у каждого свой ассортимент (пиццы, пироги, пироженные, торты и т. д) как добавить список магазинов в виде инлайн клавиатуры и уже проваливаясь в магазин работать с ассортиментом, далее с названиями? Или другой пример, список объектов, на объектах есть оборудование (разного назначения, количества и с разными характеристиками). В боте инлайн клавиатура со списком объектов, проваливаемся в объект, получаем инлайн клавиатуру список оборудования по типу, проваливаемся далее, получаем названия, характеристики, количество, фото...
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Вы сильно круто берете, как для начинающего разрабатывать ботов. Тут могу ответить так: делить базы данных по id (и это не значит в прямом смысле id в телеграмме) клиента (заказчика).
@ivansim3364
@ivansim3364 2 ай бұрын
У меня не работает админка почему то(
@maksimklisenko2867
@maksimklisenko2867 11 ай бұрын
у меня работают команды назад только если их писать вместе с "/". Что делать??
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Просмотрите фильтры в вашем обработчике
@zhanybekov9616
@zhanybekov9616 11 ай бұрын
Добрый вечер, благодарен за ваши видео они очень крутые. У меня возникла проблема на этапе написания команды /admin в группу, не вылезает клавиатура как у вас в видео. Был бы рад если бы подсказали как решить.
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Просмотрите разницу между исходником на гитхабе или ошибку сюда напишите
@zhanybekov9616
@zhanybekov9616 11 ай бұрын
@@PythonHubStudio сравнил свой код с исходником, вроде нет различий. Не вылезает никакой ошибки, просто бот не отправляет клавиатуру.
@zhanybekov9616
@zhanybekov9616 11 ай бұрын
Может быть проблема в телеграме? Боту нужно давать админку в группе?
@zhanybekov9616
@zhanybekov9616 11 ай бұрын
@@PythonHubStudio нашел ошибку, спасибо за помощь. У вас классный канал.
@АртёмГородской-ф4ъ
@АртёмГородской-ф4ъ 11 ай бұрын
​@@zhanybekov9616Здравствуйте. Точно такая же проблема. Подскажите пожалуйста как исправили её
@cryptohyde
@cryptohyde 13 күн бұрын
С "админом" что-то не совсем понятно. Любой юзер заходит в чат пишет "/админ" и вуаля - в боте он уже админ
@PythonHubStudio
@PythonHubStudio 13 күн бұрын
Только админы группы. Внимательнее.
@Python-i2z
@Python-i2z 5 ай бұрын
Здравствуйте, видео урок очень полезный, но хотел сказать что у вас запись подлагивает
@MrSasuke1337
@MrSasuke1337 11 ай бұрын
Здравствуйте, у меня с самого начала уже вопросы, у меня Pycharm, в папке filter файл chat_types, у меня где my_admin_list не работает (ошибку показывает), хотя весь код скопировал с гита, но все равно показывает ошибку + для каждой папки создал __init__.py и прописал туда все импорты, но все равно не помогло, можете сказать в чем моя ошибка? 😢
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Наверно у вас в редакторе проект открыт на папку выше чем положено (должна быть открыта папка, где файл app.py). Или можно в окне папок и файлов проекта(експлорере), тыкнуть ПКМ, по ней, и выбрать "пометить как папка проекта")
@kifurrer
@kifurrer 10 ай бұрын
скорее всего ты забыл включить роутер в главный файл апп пу, пропиши эту команду "dp.include_router(admin_router)"
@JohnMapukuta
@JohnMapukuta 6 ай бұрын
@@kifurrer От души тебе!❤❤❤❤❤
@konand5
@konand5 9 ай бұрын
Добрый день! Как быть если в личных сообщениях с ботом обычным пользователям (не администраторам) тоже необходимо использовать команду "/admin". Если я пропишу обработчик для этой команды в @user_private_router, то этот роутер будет перехватывать сообщения и от администраторов и отрабатывать как общий хендлер. Очевидный вариант: в диспчер включать роутер администратора первым, а потом уже роутер обычных пользователей, но вариант не очень красивый, как можно сделать лучше? Заранее спасибо!
@PythonHubStudio
@PythonHubStudio 9 ай бұрын
1) ваш вариант хорош 2) изменить имя команды и не париться (или для админа или для пользователей)
@tormozzzful
@tormozzzful 9 ай бұрын
Хехехе, у меня пока диалог из 38 пунктов) Вот такой вот бот
@xboxseriess5844
@xboxseriess5844 10 ай бұрын
Спасибо за классный туториал! Но почему бы кнопки не сделать с помощью словаря, а вместо else if , использовать math case. Я не учу ни кого , я просто предложил😅
@PythonHubStudio
@PythonHubStudio 10 ай бұрын
См. дальше
@xboxseriess5844
@xboxseriess5844 10 ай бұрын
@@PythonHubStudio щас два дня на работе буду, поэтому хотелось бы спойлер
@PythonHubStudio
@PythonHubStudio 10 ай бұрын
Match case не будет, чтоб сохранить совместимость с более ранними версиями python. Кнопки из словарей будут
@xboxseriess5844
@xboxseriess5844 10 ай бұрын
@@PythonHubStudio имеет смысл такому быть
@xboxseriess5844
@xboxseriess5844 10 ай бұрын
@@PythonHubStudio 👍👍👍
@dimalakida8052
@dimalakida8052 10 ай бұрын
Здравствуйте. Очень сильно помогли ваши видео. Уже много ветвлений в коде и стал вопрос, как их фильтровать. Попробовал по аналогии собрать свой фильтр, который смотрел бы в базу, но он не работает... class IsAdmin(Filter): async def __call__(self, session: AsyncSession, message: types.Message) -> bool: admins = [] for a in await orm_get_admins(session): admins.append(a.admin) return message.from_user.id in admins TypeError: IsAdmin.__call__() got multiple values for argument 'session' Язык знаю плохо, точнее почти не знаю. Позскажите плз, что я делаю не так? И как лучше сделать?
@PythonHubStudio
@PythonHubStudio 10 ай бұрын
Именно об этом (о сессиях бд) рассказано в следующем видео. Там используются middleware (промежуточные) слои.
@SeDiSlayer
@SeDiSlayer 10 ай бұрын
Так запросы к базе, по отдельности, у меня все работают, а вот в фильтре, ошибку выдаёт. Про мидлваре смотрел, но не совсем понятно что там и для чего.
@koshied850
@koshied850 11 ай бұрын
Подскажите, может, кто шарит? Как в vs code изменить тему, но оставить дефолтную подсветку текста? Был бы очень благодарен за помощь. Ролик - огонь!
@MortyTown-c6p
@MortyTown-c6p 3 ай бұрын
очень крутая реализация перехода на предыдущее состояние стейта трек тайм 34:50 . с начала не въехал а потом как въехал)))))))))))))))))) previous обновляется после каждой итерации , хитроумный алгоритм огромное вам спасибо.
@PythonHubStudio
@PythonHubStudio 3 ай бұрын
Я всё ждал, оценит кто-то лайфхак или нет)))
@smash6792
@smash6792 11 ай бұрын
Очень нравиться ваш контент!! Возник вопрос: Как я могу скачать файл (в моем случае это .doc), который был отправлен моему боту пользователем? В документации нашел только await bot.download(document) Но как только я импортирую в файл user_private.py этого bot с файла app.py, то возникают ошибки я пытался переставлять импорты в файлах,в итоге я переставил from app import bot прямо перед строчкой await bot.download(document),но в этот раз другая ошибка RuntimeError: Router is already attached to Я понимаю,что ошибка заключается в том,что что-то вызывается несколько раз(а должно 1 раз) Если сможете помочь буду очень благодарен!!! *структура папок такая же как у вас на видео
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Видимо пропустили, я говорил, что если нужен экземпляр бота в хендлере, то всего лишь нужно добавить соответствующий параметр в ваш хендлер, он туда прокинется aiogram-ом сам: (message: types.Message, bot: Bot) И юзайте вашего бота в хендлере как захочется. А для аннотации типа параметра bot: Bot, нужно просто добавить импорт экземпляра класса Bot, чтоб видеть его методы в автокомплите: from aiogram import Bot
@smash6792
@smash6792 11 ай бұрын
Благодарю за ответ!!!@@PythonHubStudio
@alexanderzimin6019
@alexanderzimin6019 9 ай бұрын
Всем привет. В файле reply.py такая строка: sizes: tuple[int] = (2,), При ней у меня лезет ошибка: TypeError: 'type' object is not subscriptable Исправил на: sizes: tuple = (2,), все заработало. Вопросы: У всех, кто в восторге, какая строка работает? Если первая - почему у меня нет? Если сами исправили - почему не отписали? А курс реально крутой.
@denimani8990
@denimani8990 8 ай бұрын
Потому что у тебя версия питона 3.8, либо ещё ниже
@alexanderzimin6019
@alexanderzimin6019 8 ай бұрын
@@denimani8990 Спасибо. Точно - 3.8. "О сколько нам открытий чудных. Готовят..."
@icrypter
@icrypter 11 ай бұрын
+
@Dantes_RUS
@Dantes_RUS Күн бұрын
Из за того, что код дополнялся за кадром получилось очень запутанно. Пытался дописывать то что видно в видео, но постоянно чего то не хватает, где-то какие-то ошибки. А если просто копипастить, то мало что запоминается. сейчас на 13ой минуте пытаюсь разобраться почему у меня не работает команда /admin в личке))
@CryT0R
@CryT0R 11 ай бұрын
Интересно ваше мнение. В коде обработчиков FSM есть ли мотивация писать в порядке await message.answer ("Введите название") #говорим что хотим от человека await state.set_state(AddProduct.name) #переходим к ожиданию ввода Вместо - сначала установки состояния, а затем отправки сообщения типа "Введите название"? await state.set_state(AddProduct.name) #переходим к ожиданию ввода await message.answer ("Введите название") #говорим что хотим от человека
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Без разницы
@MrSasuke1337
@MrSasuke1337 9 ай бұрын
Объясните пожалуйста момент 26:48, как преобразовать словарик в отдельный элемент, мне там число надо вводить, а я хочу получить не как {'number': '3'}, а как 3, что в этом случае делать У меня получилось так, это работает, но так не удобно писать: @user_private_router.message(Games.data_input, F.text) async def add_data_output(message: types.Message, state: FSMContext): await state.update_data(data_input=message.text) random_number = random.randint(1, 2) data = await state.get_data() # await message.answer(str(data)) if data == {'data_input': f'{random_number}'}: await message.answer('Вы угадали') else: await message.answer("Вы не угадали :(") await message.answer(f"Было загадано число {random_number}") await state.clear()
@PythonHubStudio
@PythonHubStudio 9 ай бұрын
if data["data_input"] == r_n:
@MrSasuke1337
@MrSasuke1337 9 ай бұрын
@@PythonHubStudio спасибо, работает!
@МагестЛоил
@МагестЛоил 5 ай бұрын
await message.answer(f"Шаг назад {AddProduct.texts[previous.state]}") AttributeError: 'NoneType' object has no attribute 'state'. И я его понимаю. Как мы можем что то сюда передать если у нас previous на данный момент типа None.
@mark.visotskiy
@mark.visotskiy 11 ай бұрын
Приветствую, админа, у меня проблема с админ панелью, когда запускаю бота /admin не работает, бот вообще не заходит в handler с командой /админ и пропускает через обычный handler с фильтром F.text, подскажите как решить эту проблему. Единственная ошибка которую выдаёт ide, в файле chat_types не работает обращение к списку админов bot.my_amins_list , что делать?
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
1) Опечатка не my_amins_list, a my_admins_list 2) Сверьтесь с кодом на гитхабе. В любом случае опечатка где-то
@mark.visotskiy
@mark.visotskiy 11 ай бұрын
@@PythonHubStudioпришел к тому что он не заходил в handler admin из-за того что был F.text() поменял местами вызов в app.py, но чтобы бот сам определил админа так и не допер, в итоге вбил напрямую свой id
@genylivnev7822
@genylivnev7822 7 ай бұрын
День добрый! Помогите разобраться с проблемой. В модуле chat_types в классе IsAdmin, bot не видит my_admins_list, я прописал его в модуле app, попытался импортировать саму переменную bot из app, но код не запускается, а в самом классе Is Admin, bot.my_admins_list он его не видит. Импорты не помогают
@PythonHubStudio
@PythonHubStudio 7 ай бұрын
Проверьте на опечатки в свойстве my_admins_list, и там и там
@genylivnev7822
@genylivnev7822 7 ай бұрын
@@PythonHubStudio проверил и даже с вашего гита качнул код, не получается. В модуле chat_types в классе IsAdmin, он my_admins_list просто не видит, подкрашивается серым. Если импорт делать, то там то же ошибка ( ImportError: cannot import name 'user_private_router' from partially initialized module )
@genylivnev7822
@genylivnev7822 7 ай бұрын
@@PythonHubStudio все, разобрался ) там, внизу коментов есть ответ )
@LoRaX-ru4ge
@LoRaX-ru4ge Ай бұрын
@@genylivnev7822 не подскажешь где? Найти не могу
@nimble2268
@nimble2268 11 ай бұрын
await state.reset_state()
@CryT0R
@CryT0R 11 ай бұрын
И еще не совсем понятно как на видео отработал код #Хендлер для отлова некорректного ввода для состояния если среда ругается, что функция уже определена: #Ловим данные для состояние price и потом меняем состояние на image @admin_router.message(AddProduct.price, F.text) async def add_price #Хендлер для отлова некорректных ввода для состояния price @admin_router.message(AddProduct.price) async def add_price(message: types.Message, state: FSMContext): \\ Получим ошибку function already defined
@PythonHubStudio
@PythonHubStudio 11 ай бұрын
Отработал нормально, как видно на видео. Это предупреждение линтера вашего редактора. Имя декорируемой функции не имеет значения. Переименуйте если мешает
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН
“Don’t stop the chances.”
00:44
ISSEI / いっせい
Рет қаралды 62 МЛН
Арыстанның айқасы, Тәуіржанның шайқасы!
25:51
QosLike / ҚосЛайк / Косылайық
Рет қаралды 700 М.