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

https://stepik.org/a/153850
Download Telegram
Друзья, привет!

Сейчас я закончу выкладывание материалов по интернационализации и, перед тем как перейти к написанию раздела по очередям, хочу немного расширить модуль по диалогам. В процессе общения со студентами часто возникает вопрос как правильно внедрить диалоги в классическую структуру многомодульного бота. Я думаю, что можно написать какого-то простого бота в классической схеме и показать как точно такого же функционала добиться с использованием диалогов. Отсюда вопрос. Есть ли у вас пожелания по функционалу такого учебного бота? Работу с какими виджетами вы хотели бы посмотреть в таком боте?
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
В курсе открылась секция про SQLAlchemy ORM.

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

Также вы узнаете:
• Что такое сессия базы данных.
• Как описывать модели БД как классы Python.
• Как создавать, получать, изменять и удалять объекты при помощи ORM.
• Что такое "создатель сессий" и чем он полезен.
• Как выстраивать отношения между таблицами.
• И, наконец, как это всё применить в своих ботах?

https://stepik.org/lesson/1370839/step/1?unit=1387034

P.S. В течение нескольких дней возможны небольшие исправления материала, пожалуйста, оставляйте комментарии обо всех недочётах или непонятных моментах. А следующий материал модуля про СУБД будет посвящён инструменту для миграций Alembic.
❤‍🔥23🔥10👍5🍓2🤮1👌1🤝1
Выложена часть материалов по NATS JetStream и показаны первые примеры применения NATS в телеграм-ботах.

NATS JetStream - это надстройка над NATS Core, обеспечивающая, в первую очередь, персистентность сообщений и расширенные возможности управления потоками данных, такие как хранение, повторная доставка, подтверждение (acknowledgements), фильтрация и управление потребителями. На базе NATS JetStream можно строить надежные хранилища типа ключ-значение с автоматическим сохранением истории изменений данных, хранилища объектов, типа S3, можно достигать любых уровней гарантий доставки и так далее.

В открывшихся уроках вы уже сможете узнать:

- Как включить NATS JetStream
- Как настроить мониторинг NATS-сервера через веб-интерфейс
- Как запустить сервис NUI - графический интерфейс для управления NATS-сервером с помощью браузера
- Что такое стримы, как их создавать и как удалять
- Как создать свое собственное хранилище для контекста FSM на базе NATS
- Как реализовать надежное отложенное удаление сообщений в чатах, доступных боту
- Как запускать несколько консьюмеров в одном потоке с ботом...

А в ближайшее время еще станут доступны следующие материалы:

- Настройка стримов
- Что такое бакеты и зачем они нужны
- Уровни гарантий доставки и какие способы их достижения предлагает NATS
- Отложенная публикация сообщений ботом через NATS
- Рассылки
- Очередь тяжелых задач
- Хранилище объектов

https://stepik.org/lesson/1359951/step/1?unit=1375819
🔥25👍95🤮1
Привет, друзья!

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

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

Как от задачек на знание синтаксиса языка перейти к реальным проектам?

Пошаговый план создания своих проектов на примере телеграм-ботов.

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

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

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

Поделюсь важными мыслями о том, чего следует делать разработчику, а чего лучше избегать.

Объясню почему нужно брать готовые решения, а не пилить свои велосипеды.

Расскажу о том, что современные исследователи искусственного интеллекта думают о будущем разработки и стоит ли вообще тратить время на изучение программирования.

Мы рассмотрим:

- Как выбрать редактор кода для полноценной работы над проектом
- Зачем нужно изолировать проекты друг от друга и какие средства для этого существуют
- Почему разработчику, скорее всего, придется столкнуться с ОС Linux, даже если он не горит желанием
- Где хранить код и зачем его версионировать
- Почему почти не реально встретить проекты без базы данных и зачем сразу брать в проект хорошую, надежную и масштабируемую СУБД
- Что такое очереди и как они решают задачи восстановления состояния сервиса, даже если тот временно в коме
- Стоит ли в первый проект брать докер, если итак "сложнааа"
- Как взрослые дяди программисты автоматизируют развертывание проекта на удаленном сервере
- Почему телеграм-боты - это хороший старт, чтобы почувствовать себя настоящим программистом
- Зачем создавать своих собственных автоматических помощников
- Как ускорить обучение и получить первые заказы, пока их ещё не отобрал ИИ

Кому будет полезен вебинар:

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

Кто ведет вебинар:

Михаил Крыжановский. Python-разработчик, автор Machine Learning Podcast, автор (и соавтор) курсов по телеграм-ботам на Степике.

Когда:

Вторник, 29 октября 2024 года, 18:00 по МСК.
👍15🔥113👏2🤮1
Скоро-скоро уже в курсе проект и шаблон! :)
🔥26👍7😁2🗿2🤮1
Всем привет! Как вы могли заметить, выход раздела про шаблон немного 👀 задержался. Но, к сожалению, это типичная проблема планирования в IT. Особенно с учётом того, что в процессе подготовки, мы решили добавить несколько интересных штук, про которые тоже надо будет рассказать.

Так или иначе, какое-то время назад мы залили первую итерацию шаблона на GitHub, где его можно посмотреть по этой ссылке. Это не финальный вариант, планируются ещё дополнения, но уже в целом проект можно запустить и потыкать. Это бот, который позволяет накладывать текст на изображения (что-то вроде примитивного водяного знака). Но не так важно, что бот делает, потому что его задача — показать один из вариантов создания таких проектов: как разделять логику, куда складывать файлы, в какие сервисы какую логику выносить и так далее. Код выше написан преимущественно Александром Даниловым, и вы можете посмотреть, как разработчик с опытом строит свои проекты.

Альтернативная структура от другого Александра доступна в этом репозитории. Как можете заметить, подход несколько иной, но так или иначе, рабочий.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35👍13👏7🤮1
Forwarded from Mikhail Kryzhanovskiy
Закончил, наконец, выкладывать модуль по Docker в бесплатном курсе. Изначально вообще не думал его писать, но из-за резкого скачка сложности в продвинутом и обратной связи от студентов, решил понизить порог входа. Плюс, следующий модуль, который тоже скоро выйдет в бесплатном курсе, посвящён работе с СУБД PostgreSQL, которую надо уметь поднимать в докере, как и другие инфраструктурные инструменты.

Кто давно хотел разобраться с докером, но ждал соответствующего стечения обстоятельств - вот оно! Велкам.
🤮85🔥47👍17🆒53