Python | Программирование
9.87K subscribers
1.81K photos
2 videos
139 files
1.53K links
Python без границ для всех

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

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

Альтернативный способ получать обновления от серверов Telegram — вебхуки. Бот говорит, на какую ссылку нужно отправлять данные когда происходит какое-то событие.

Библиотека aiogram использует aiohttp как клиент и сервер. Чтобы проверить работоспособность нужен сервер или белый IP, это есть не у всех, поэтому лучше использовать ngrok.

Вебхуки в Telegram работают только с https ссылками. Если вы не желаете покупать сертификат, можете использовать самоподписанный, но его надо будет передавать в bot.set_webhook().

Гайд по вебхукам от тг

#урок #aiogram
📌 Bot polling

Чтобы понять, написал кто-либо боту или нет, он несколько раз в минуту отправляет запрос на сервера Telegram и спрашивает: «Случилось ли что-то интересненькое?»

Такой подход называется Bot polling. Он не очень эффективный, время от времени отваливается и создаёт много «шума», поэтому лучше использовать Webhook'и (в след. посте), но за них кому-то придётся платить.

#урок #aiogram
📌 Bot и Dispatcher

Bot(token)
— объект, для работы с API телеграмм. Это просто обёртка, никакой магии здесь нет.

Dispatcher(bot) — обработчик входящих событий: полученное сообщение, отредактированное, Callback'и. Через него можно передавать объекты в функции.

Пока простые темы, дальше будет интереснее. Всё про aiogram 3.0

Код

#урок #aiogram
📌 Разница между aiogram 2.x и aiogram 3.0

Объективно, у третьей версии красивее документация. К сожалению, она не полная. У неё много фич, по типу роутов (чуть позже поговорим о них), поддержки приглашений и «мультиботов».

Установка: pip install --pre -U aiogram

Вторая версия более стабильная, она уже «проверена временем». Если вам важна стабильность и не нужны новые фичи, то выбирайте вторую версию, если хочется что-то нового, aiogram 3.0 — отличный вариант.

Установка: pip install -U aiogram

#урок #aiogram
📌 aiogram-dialog

Библиотека для создания многоуровневых и трудных диалоговых меню в ботах, используемая с aiogram.

Поддерживает бета версию aiogram, для этого нужно к pip install добавить --pre.

📕 Документация

Я увидел, что вы набрали в два раза больше ⚡️ чем нужно на предыдущем посте. Уже готовлю материал.

#урок #aiogram
📌 aiogram

Асинхронная библиотека для создания telegram ботов. У неё 3к звёзд на Github, большое сообщество и неплохая документация.

Сейчас доступна ещё и бета версия с новыми возможности. Ей доступны новые фишки тг, по типу приглашений в чат, но она ещё тестируется и со скудной документацией.

Тут можно найти список по шаблонам, примерам и библиотекам для aiogram.

Когда наберёте 10 ⚡️, сделаю небольшой курс по aiogram

#урок #aiogram
📌 aiogram

Асинхронная библиотека для создания telegram ботов. У неё 3к звёзд на Github, большое сообщество и неплохая документация.

Сейчас доступна ещё и бета версия с новыми возможности. Ей доступны новые фишки тг, по типу приглашений в чат, но она ещё тестируется и со скудной документацией.

Тут можно найти список по шаблонам, примерам и библиотекам для aiogram.

Когда наберёте 10 ⚡️, сделаю небольшой курс по aiogram

#урок #aiogram
📌 aiogram-dialog

Библиотека для создания многоуровневых и трудных диалоговых меню в ботах, используемая с aiogram.

Поддерживает бета версию aiogram, для этого нужно к pip install добавить --pre.

📕 Документация

Я увидел, что вы набрали в два раза больше ⚡️ чем нужно на предыдущем посте. Уже готовлю материал.

#урок #aiogram
📌 Разница между aiogram 2.x и aiogram 3.0

Объективно, у третьей версии красивее документация. К сожалению, она не полная. У неё много фич, по типу роутов (чуть позже поговорим о них), поддержки приглашений и «мультиботов».

Установка: pip install --pre -U aiogram

Вторая версия более стабильная, она уже «проверена временем». Если вам важна стабильность и не нужны новые фичи, то выбирайте вторую версию, если хочется что-то нового, aiogram 3.0 — отличный вариант.

Установка: pip install -U aiogram

#урок #aiogram
📌 Bot и Dispatcher

Bot(token)
— объект, для работы с API телеграмм. Это просто обёртка, никакой магии здесь нет.

Dispatcher(bot) — обработчик входящих событий: полученное сообщение, отредактированное, Callback'и. Через него можно передавать объекты в функции.

Пока простые темы, дальше будет интереснее. Всё про aiogram 3.0

Код

#урок #aiogram
📌 Bot polling

Чтобы понять, написал кто-либо боту или нет, он несколько раз в минуту отправляет запрос на сервера Telegram и спрашивает: «Случилось ли что-то интересненькое?»

Такой подход называется Bot polling. Он не очень эффективный, время от времени отваливается и создаёт много «шума», поэтому лучше использовать Webhook'и (в след. посте), но за них кому-то придётся платить.

#урок #aiogram
📌 Webhook'и

Альтернативный способ получать обновления от серверов Telegram — вебхуки. Бот говорит, на какую ссылку нужно отправлять данные когда происходит какое-то событие.

Библиотека aiogram использует aiohttp как клиент и сервер. Чтобы проверить работоспособность нужен сервер или белый IP, это есть не у всех, поэтому лучше использовать ngrok.

Вебхуки в Telegram работают только с https ссылками. Если вы не желаете покупать сертификат, можете использовать самоподписанный, но его надо будет передавать в bot.set_webhook().

Гайд по вебхукам от тг

#урок #aiogram
📌 Переходим к новинкам: Router()

Это объект, с помощью которого можно разделить обработчики (handlers) на несколько файлов, а после подключить к основному Dispatcher().

Раньше для этого приходилось делать dispatcher глобальным или писать register_handlers().

#урок #aiogram
📌 Типы обработчики (handlers)

Функции которые обрабатывают сообщения — обработчики. Они принимает определённый тип сообщений и работают с ними.

Бот может принимать все обновления, сообщения, событие о редактировании сообщения, ответа на опрос. Весь список событий тут.

#урок #aiogram
📌 Форматирование сообщений

Telegram поддерживает два типа форматирования: HTML и MarkdownV2. Есть ещё Markdown, но он уже устарел.

HTML — форматирование с помощью тегов. Если пользователь отправит <b>Этот тест будет жирным<b>, чтобы не применять форматирование, нужно использовать html.quote().

MarkdownV2 — форматирование с помощью спецсимволов: __underline__, bold text, link on MarkdownV2.

Предпочтительный использовать HTML, с ним меньше шанс допустить ошибку. Вот тут документация от Telegram.

Код

#урок #aiogram
📌 Кнопки

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

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

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

Код

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

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

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

Код

#урок #aiogram
📌 Middleware

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

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

#урок #aiogram
📌 Finite State Machine

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

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

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

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

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

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

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

#урок #aiogram