Телеграм-боты на Python: продвинутый уровень
813 subscribers
6 photos
1 video
19 links
Общая информация и новости о курсе «Телеграм-боты на Python: продвинутый уровень» на Stepik.

https://stepik.org/a/153850
Download Telegram
🎉 Этот день настал! Дорогие читатели, сегодня мы готовы показать вам плоды своих трудов последних полугода (или даже больше).

Курс доступен для просмотра и покупки на Stepik по ссылке: https://stepik.org/a/153850

❗️ Важный дисклеймер: это пре-релиз, поэтому вы увидите не все модули, а только часть:
• Общая информация о курсе
• Введение в Bot API и aiogram
• Aiogram Dialog
• Тестирование
• Деплой

В течение следующих месяцев мы откроем новые модули и улучшим уже имеющиеся. Сейчас наша главная задача — собрать обратную связь и понять, насколько наши идеи совпадают с вашими потребностями в знаниях о предметной области.

👛 Если вы хотите получить полностью готовый и отполированный курс, то, пожалуйста, повремените с покупкой курса и подождите, пока мы реализуем все наши задумки и планы. Но если в вас горит жажда неизведанного, вы хотите нас поддержать и готовы предоставлять обратную связь на пусть и целостный, но не всеобъемлющий материал, то мы с радостью пойдём вам навстречу и предложим скидку: пока курс находится в «раннем доступе», его стоимость составляет всего 2550 рублей. По мере открытия новых модулей и дополнения имеющихся стоимость будет постепенно расти.

Ещё раз: подумайте и внимательно изучите содержание перед покупкой курса, вас никто под дулом пистолета не держит :)

Ну а если тяга к знаниям сильнее вас, то ещё раз напомним ссылку: https://stepik.org/a/153850

Удачи!
🔥11👍1
Хочу пару слов сказать о библиотеке aiogram_dialog, разбираемой в курсе. Первый раз про нее я услышал примерно год назад от одного из авторов текущего курса - Александра Данилова. Он активно рекомендовал использовать диалоги вместо классического подхода апдейт-фильтр-хэндлер. Меня заинтересовал подход и я решил посмотреть, что за библиотека и как она работает...

Просто сказать, что это было больно - это сильно преуменьшить те страдания, которые я испытывал, пытаясь разобраться по документации и сделать хотя бы эхо-бота в новой парадигме. Несколько раз я бросал изучение библиотеки, потому что каждый раз, когда мне казалось, что я, наконец, понял как это работает, оно работало не так как надо. Но я не сдавался, потому что периодически читал отзывы благодарных пользователей библиотеки, которым новый способ управления диалогами упростил разработку ботов. Ну, и настойчивость принесла результаты. В какой-то момент пазл сложился и мои боты стали работать так, как нужно. И вы знаете что? Да, я тоже больше не хочу возвращаться на классическую схему :) Диалоги - это настолько удобно, что вообще непонятно, зачем теперь без них.

Когда я разбирался с библиотекой меня постоянно поддерживала мысль, что я смогу сделать вход в изучение диалогов проще. Что другим разработчикам придется страдать меньше. Как при изучении библиотеки, так и при разработке ботов в дальнейшем. И есть ощущение, что мне это удалось. Я доволен получившимся модулем в курсе, хотя и есть еще моменты, которые я планирую осветить в самое ближайшее время. Однозначно теперь всем советую переходить на диалоги. Тем более, что сделать это стало проще.

Если интересно, чтобы я написал отдельный пост про общую концепцию диалогов - ставьте ⚡️
29🔥5🤝1
Друзья, публикую долгожданное интервью с Михаилом Крыжановским! 🤓

Михаил — предприниматель и Python-разработчик, автор подкаста о машинном обучении и телеграм-канала "Стать специалистом по машинному обучению". Кроме того, он является создателем бесплатного курса на Stepik "Телеграм-боты на Python и aiogram", а недавно выпустил пре-релиз нового курса "Телеграм-боты на Python: продвинутый уровень" в соавторстве с крутыми python-разработчиками.

Мы поговорили с Михаилом о программировании, изучении Python, математике и машинном обучении, создании курсов и многом другом. Рекомендуем к просмотру на выходных! 😎

#интервью
🔥8👍6👨‍💻1
Рубрика «Автор месяца»🥇
Как и обещали ранее, представляем вам еще одного автора месяца. По итогам января 2024 автором месяца стал Михаил Крыжановский!🎉

У Михаила есть собственный подкаст про машинное обучение, в котором он рассказывает о развитии индустрии, проводит ликбез, объясняет терминологию и профессиональные жаргонизмы и общается с профессионалами из индустрии Искусственного Интеллекта. Он также доступен на youtube и в телеграм-канале.

На какие курсы Михаила мы предлагаем обратить внимание? В первую очередь на набирающий популярность «Телеграм-боты на Python: продвинутый уровень», в процессе прохождения которого предлагается создание собственного проекта.
Данный курс Михаил ведет в соавторстве с Александром Даниловым и Александром К.

Также у Михаила есть бесплатный курс «Телеграм-боты на Python и AIOgram» с рейтингом 5️⃣⭐️.

Мы желаем Михаилу успехов в его деятельности и с нетерпением ждем новых успешных курсов на Stepik!
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾13🏆7👏4
Привет, давно не виделись!
В настоящий момент команда курса трудится над несколькими новыми модулями и переработкой старых (да-да, даже уже выпущенные модули заслуживают того, чтобы их прочесали и навели красоту).
Надеемся, что очень скоро порадуем вас новым контентом. А пока хочется рассказать об одной интересной штуке.

Вчера в чате по разработке ботов был задан вопрос: а есть ли какие-то инструменты для обновления кода «на лету», без необходимости перезапускать процесс?
Короткий ответ: да.
Подробный ответ: да, но с оговорками.
Наглядный ответ: 👇
🔥3🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
💻 Jurigged — обновление кода без лишних перезапусков

Библиотека Jurigged позволяет «на лету» перечитывать изменившиеся функции и методы и подменять старые версии новыми.
Всё, что нужно, — это запустить ваш скрипт или модуль через jurigged и не забывать нажимать Ctrl+S/Cmd+S в вашей любимой IDE или редакторе.

К сожалению, нет в мире совершенства; и Jurigged не исключение: в некоторых случаях вам придётся «обернуть» некоторые вызовы в отдельные функции, чтобы библиотека могла обнаружить изменения, а у пользователей Windows могут возникнуть проблемы с кодировкой выводимых текстов (по этому поводу создан issue на гитхабе). Ну и, разумеется, Jurigged не сможет отследить изменения внешних ресурсов, код загрузки которых не меняется. Например, если вы выносите свои тексты в отдельные файлы локализации.

В любом случае, инструмент достаточно интересный, чтобы обратить на него внимание и попробовать. На видео выше мы подготовили демонстрацию работы библиотеки на простом демо-боте на aiogram.

Если вы раньше пробовали Jurigged или знаете интересные альтернативы, пишите в комментариях!

Приобрести курс «Telegram-боты на Python: продвинутый уровень» (ранний доступ)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
Привет! Спешим порадовать вас парочкой интересных новостей:

Во-первых, мы очень сильно переработали модуль по тестированию ботов. Первоначальная версия содержала опечатки и неточности, поэтому параллельно с подготовкой новых модулей было решено провести рефакторинг имеющихся текстов. А ещё добавили небольшой материал по запуску кода и тестов в 👩‍💻 PyCharm и 👩‍💻 Visual Studio Code Надеемся, вам понравится!

Во-вторых, было принято решение опубликовать часть исходников курса на GitHub. Кажется, что так будет проще и вам (удобнее просматривать код и клонировать целыми проектами для запуска локально), и нам (не придётся копировать все-все-все исходные тексты, создавая визуальный мусор в уроках). Репозиторий открытый, что означает, что любой желающий может изучить его содержимое, но мы настоятельно рекомендуем делать это совместно с чтением материалов курса 😉

P.S. Прямо сейчас Михаил выкладывает на Stepik материалы следующего модуля — «Интернационализация, локализация». Осталось ждать совсем недолго :)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍6🎉3🤮1
Друзья, привет!

Сейчас я закончу выкладывание материалов по интернационализации и, перед тем как перейти к написанию раздела по очередям, хочу немного расширить модуль по диалогам. В процессе общения со студентами часто возникает вопрос как правильно внедрить диалоги в классическую структуру многомодульного бота. Я думаю, что можно написать какого-то простого бота в классической схеме и показать как точно такого же функционала добиться с использованием диалогов. Отсюда вопрос. Есть ли у вас пожелания по функционалу такого учебного бота? Работу с какими виджетами вы хотели бы посмотреть в таком боте?
6🔥5
Происходят интересные тектонические сдвиги в мире Python: в кодовую базу добавлена поддержка флага, отключающего GIL (Global Interpreter Lock)

Напомнить себе о том, что такое GIL и зачем он нужен, можно здесь (на русском) и в официальной вики (на английском).
👍3🔥2🤔1👀1
Привет, друзья!

Выложены материалы по интернационализации в продвинутом курсе. На мой взгляд, это важная тема, потому что помогает понять как сразу проектировать ваши проекты готовыми к выводу на международный рынок, чтобы не думать об этом, когда приложение уже полностью рабочее и внедрять интернационализацию стало существенно дороже.

В модуле рассмотрены:

1. Различия терминов "интернационализация" и "локализация"
2. Подходы к интернационализации gettext и Fluent, их плюсы и минусы
3. Интернационализация и локализация с помощью babel (gettext) в aiogram
4. Обновление переводов и работа с множественным числом в рамках gettext
5. Почему я рекомендую Fluent
6. Основы синтаксиса Fluent, работа с селекторами
7. Библиотека fluentogram, упрощающая работу в парадигме Fluent и работа с ней в контексте интернационализации (fluentogram написан Александром Даниловым - одним из авторов курса)
8. Совместная работа fluentogram и aiogram_dialog

Причем, даже если вы не собираетесь делать ваших ботов мультиязычными - я все равно советую закладывать в них возможность локализации с помощью Fluent, потому что накладные расходы низкие, а в замен вы получаете удобный способ хранения контента для бота (тексты, медиа, документы и прочее) и возможность очень легко добавить дополнительный язык, в случае, если возникнет такая необходимость.

P.S. В течение нескольких дней на GitHub появятся исходники к курсу, а также будут добавлены несколько заданий для самопроверки.
🔥23👍94🤝1
Читаю сейчас статью по виджетам для Jupyter Notebook и вижу:

"Несмотря на то, что этот подход наиболее похож на подходы, используемые в Swing и WinForms, он порождает проблему с возвратом на предыдущую форму, если она должна хранить какое-то состояние. Именно это является проблемой реализации кнопки «Назад». На практике, в больших приложениях дебаг этой кнопки с очень большой вероятностью превратиться в ад. Именно поэтому я в своем опыте и данном приложении использую вкладки, так как это наиболее простой способ перемещаться на более старые формы. Более того, если вкладка не будет закрыта, то ее состояние сохранится до конца работы приложения, даже если были открыты несколько таких форм в других вкладках."

То есть, не только разработчики ботов страдают :)

Сразу подумалось, как же хорошо, что в aiogram_dialog эта проблема решена. Как вспомню костыли, которые все время приколачивать приходилось. Спасибо, @Tishka17!
👍192👏1💯1
Начинаем настраивать на соответствующий лад для чтения нового материала курса, который появится совсем скоро :)
🔥29👍6😁3
Всем привет! Мы начали выкладывать новый модуль нашего курса, посвящённый работе с PostgreSQL при помощи SQLAlchemy.

Сейчас доступна вводная часть с описанием проблемы и возможных решений, а также глава по работе с SQLAlchemy Core в рамках простого бота. Вы узнаете:
• Как подключаться к базе данных
• Как правильно и как неправильно делать вставку данных. Узнаете, почему формировать SQL-запросы при помощи f-строк приводит к беде.
• Как искать данные в базе
• Как удалять данные из базы
• Когда можно использовать SQLite в ботах, а когда лучше не надо

Через некоторое время станут доступны ещё две главы: про SQLAlchemy ORM (подробнее, чем Core) и про миграции с помощью Alembic. Ну и всё остальное, что не попадает под категории выше.

Ознакомиться с первой частью материала можно тут:
https://stepik.org/lesson/1321957/step/1?unit=1337395
🔥28👍6👏3
Абсолютно проклято
😁15👻2🥴1
Друзья!
Сегодня пользователи из России могли столкнуться с ошибкой при работе в DockerHub. На Хабре есть заметка, в комментариях к которой люди делятся советами по решению проблемы.

Одно из решений — прописать "зеркала" Докерхаба в настройках демона Docker:

sudo sh -c 'echo "{"registry-mirrors": ["https://mirror.gcr.io", "https://daocloud.io", "https://c.163.com/", "https://huecker.io/", "https://registry.docker-cn.com"]}" > /etc/docker/daemon.json'

(отсортируйте список зеркал по своему усмотрению)
🔥3
Быстрый опрос: заметили ли вы проблемы с DockerHub сегодня?
Anonymous Poll
25%
Да, всё сломалось
16%
Нет, всё работает, как и раньше
59%
Я не пользуюсь Docker
Полезный веб-сайт, который показывает, какая версия того или иного приложения, сервиса или устройства перестаёт выпускаться или поддержкиваться производителем.

Например, меньше, чем через полгода для Python 3.8 перестанут выходить обновления безопасности (багфиксы уже давно закончились), поэтому если у вас есть какие-то очень древние легаси-проекты, то либо уже пора обновиться, либо хотя бы зацементировать в виде Docker-контейнера.

https://endoflife.date
👍9🤮1
Всё, что вы хотели знать о новых платежах при помощи Telegram Stars, но боялись спросить:

https://mastergroosha.github.io/aiogram-3-guide/payments

Бесплатно, без регистрации и смс. А мы тем временем продолжим готовить для вас новые материалы нашего основного курса, чтобы уже в этом месяце у вас был доступ к новому контенту.
🔥232👍1🤮1
Готов урок, посвященный NATS Core - ядру надежного высокопроизводительного брокера сообщений NATS. Хорошо разобравшись с базовыми возможностями NATS Core, будет сильно проще понять как реализован широкий функционал хранения информации и гарантий доставки на базе надстройки над NATS Core - NATS JetStream. Также хочу обратить внимание на общую простоту концепции маршрутизации сообщений, на то как просто запустить сервер NATS и на то как общаться с сервером с помощью скриптов на python. Особенно, в сравнении с RabbitMQ. Для тех, кто ждал - велкам :)
https://stepik.org/lesson/1171716/step/1?unit=1184134
🔥294🤮1🤝1
Начало урока по NATS JetStream, который довольно скоро выйдет:

Собственно, NATS не был бы так крут и универсален, если бы состоял только из NATS Core. На всякий случай еще раз повторю некоторые ограничения NATS Core:

- Так называемая "эфемерность" сообщений. Они теряются, если не доставлены немедленно. Подписчики должны быть постоянно подключены, чтобы получать сообщения, так как повторная доставка отсутствует.

- Отсутствие персистентности. Сообщения в NATS Core не сохраняются на диск или в другую долговременную память и теряются в случае сбоя сервера.

- Отсутствие управления состоянием сообщений. Нет встроенных механизмов для управления состоянием сообщений (например, подтверждение доставки, повторная отправка).

- Ограниченная поддержка потребителей. То есть отсутствуют механизмы для создания долговременных подписок с сохранением состояния. Подписчики получают только текущие сообщения и пропускают сообщения, отправленные в их отсутствие.


Ну и, наверное, несложно догадаться, что все эти ограничения красиво обходит NATS JetStream.
🔥10🙏21🤮1