Python | Программирование
9.73K subscribers
1.95K photos
3 videos
138 files
1.66K links
Python без границ для всех

Владелец, реклама @Ak_Mihail

Преобрести рекламное размещение: https://telega.in/c/Python_libr
加入频道
📌 Кнопки

Есть два вида кнопок:

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

Инлайн-кнопки — появляются по сообщениями. Могут пересылать людей на определённый URL, отправлять сообщения с данными боту и т.д.

Код

#урок #aiogram
👍72
📌 Фабрика колбэков

Передавать данные в Inline-кнопки как строки — не удобно. Данные тяжело считывается, код тяжело читается.

Для решения проблемы есть класс CallbackData, с его помощью создаётся класс, который самостоятельно составляет строку и обрабатывает её. Программисту остаётся работать только с объектом.

Код

#урок #aiogram
🔥5👍3
📌 Middleware

Это код, который выполняется перед тем как запустится обработчик. Так можно контролировать нагрузку, делать Antiflood или собирать статистику.

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

#урок #aiogram
👍5
📌 Finite State Machine

Конечный автомат — модель, которая говорит что у пользователя может быть определённое состояние, от которого зависит код. Между состояниями можно переключатся.

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

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

Вообще, чтобы с этим всем не возиться, лучше использовать aiogram-dialog.

#урок #aiogram
👍52
📌 Хранение данных пользователя: FSM

Хранить данные о пользователи мы можем или в базе данных (Redis, Mongo) или в памяти. Для тестовой системы или простого бота вполне хватит второго варианта, а вот в проде лучше использовать БД.

Зачем? Таким образом, если у вас будет несколько серверов с запущенным ботом, данные будут всегда актуальны. К тому же, при обновлении бота, состояния пользователей не сбросятся.

#урок #aiogram
👍73