aiogram
#
Небезпека
Ще в розробці!
aiogram це сучасний та повністю асинхронний фреймворк для розробки чат-ботів Telegram Bot API на Python 3.8 з використанням asyncio та aiohttp.
Зробіть своїх ботів швидшими та потужнішими!
- Документація
🇺🇸 English
🇺🇦 Українською
Небезпека
Важливі новини
aiogram 3.0 має зміни, що ламають зворотну сумісність.
Порушує зворотну сумісність, вводячи нові критичні зміни!
Особливості#
Асинхронність (asyncio docs, PEP 492)
Має анотації типів (PEP 484) та може використовуватись з mypy
Працює з PyPy
Supports Telegram Bot API 6.6 and gets fast updates to the latest versions of the Bot API
Код інтеграції з Bot API є автогенерованим що надає змогу дуже легко оновлювати фреймворк до останніх версій АПІ
Має роутери подій (Blueprints)
Має вбудований кінцевий автомат
Uses powerful magic filters <https://docs.aiogram.dev/en/dev-3.x/dispatcher/filters/magic_filters.html#magic-filters>
Підтримує мідлвари (для вхідних подій від АПІ та для вихідних запитів до АПІ)
Підтримує можливість відповіді у вебхук
Має вбудовану інтеграцію для використання інтернаціоналізації та локалізації GNU Gettext (або Fluent)
Попередження
Наполегливо рекомендується навчитись працювати з asyncio перед тим, як починати використовувати цей фреймворк. asyncio
Якщо є якість додаткові запитання, ласкаво просимо до онлайн-спільнот:
🇺🇸 @aiogram
🇺🇦 @aiogramua
🇺🇿 @aiogram_uz
🇰🇿 @aiogram_kz
🇮🇷 @aiogram_fa
🇮🇹 @aiogram_it
🇧🇷 @aiogram_br
Приклад використання#
import asyncio
import logging
from aiogram import Bot, Dispatcher, Router, types
from aiogram.filters import Command
from aiogram.types import Message
# Bot token can be obtained via https://t.me/BotFahter
TOKEN = "42:TOKEN"
# All handlers should be attached to the Router (or Dispatcher)
router = Router()
@router.message(Command(commands=["start"]))
async def command_start_handler(message: Message) -> None:
"""
This handler receive messages with `/start` command
"""
# Most event objects have aliases for API methods that can be called in events' context
# For example if you want to answer to incoming message you can use `message.answer(...)` alias
# and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage`
# method automatically or call API method directly via
# Bot instance: `bot.send_message(chat_id=message.chat.id, ...)`
await message.answer(f"Hello, <b>{message.from_user.full_name}!</b>")
@router.message()
async def echo_handler(message: types.Message) -> None:
"""
Handler will forward received message back to the sender
By default, message handler will handle all message types (like text, photo, sticker and etc.)
"""
try:
# Send copy of the received message
await message.send_copy(chat_id=message.chat.id)
except TypeError:
# But not all the types is supported to be copied so need to handle it
await message.answer("Nice try!")
async def main() -> None:
# Dispatcher is a root router
dp = Dispatcher()
# ... and all other routers should be attached to Dispatcher
dp.include_router(router)
# Initialize Bot instance with a default parse mode which will be passed to all API calls
bot = Bot(TOKEN, parse_mode="HTML")
# And the run events dispatching
await dp.start_polling(bot)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
asyncio.run(main())
Зміст#
- Встановлення
- Бот API
- Обробка подій
- Утиліти
- Changelog
- 3.0.0b8 [UNRELEASED DRAFT] (2023-03-11)
- 3.0.0b7 (2023-02-18)
- 3.0.0b6 (2022-11-18)
- 3.0.0b5 (2022-10-02)
- 3.0.0b4 (2022-08-14)
- 3.0.0b3 (2022-04-19)
- 3.0.0b2 (2022-02-19)
- 3.0.0b1 (2021-12-12)
- 3.0.0a18 (2021-11-10)
- 3.0.0a17 (2021-09-24)
- 3.0.0a16 (2021-09-22)
- 3.0.0a15 (2021-09-10)
- 3.0.0a14 (2021-08-17)
- 2.14.3 (2021-07-21)
- 2.14.2 (2021-07-26)
- 2.14 (2021-07-27)
- 2.13 (2021-04-28)
- 2.12.1 (2021-03-22)
- 2.12 (2021-03-14)
- 2.11.2 (2021-11-10)
- 2.11.1 (2021-11-10)
- 2.11 (2021-11-08)
- 2.10.1 (2021-09-14)
- 2.10 (2021-09-13)
- 2.9.2 (2021-06-13)
- 2.9 (2021-06-08)
- 2.8 (2021-04-26)
- 2.7 (2021-04-07)
- 2.6.1 (2021-01-25)
- 2.6 (2021-01-23)
- 2.5.3 (2021-01-05)
- 2.5.2 (2021-01-01)
- 2.5.1 (2021-01-01)
- 2.5 (2021-01-01)
- 2.4 (2021-10-29)
- 2.3 (2021-08-16)
- 2.2 (2021-06-09)
- 2.1 (2021-04-18)
- 2.0.1 (2021-12-31)
- 2.0 (2021-10-28)
- 1.4 (2021-08-03)
- 1.3.3 (2021-07-16)
- 1.3.2 (2021-05-27)
- 1.3.1 (2018-05-27)
- 1.3 (2021-04-22)
- 1.2.3 (2018-04-14)
- 1.2.2 (2018-04-08)
- 1.2.1 (2018-03-25)
- 1.2 (2018-02-23)
- 1.1 (2018-01-27)
- 1.0.4 (2018-01-10)
- 1.0.3 (2018-01-07)
- 1.0.2 (2017-11-29)
- 1.0.1 (2017-11-21)
- 1.0 (2017-11-19)
- 0.4.1 (2017-08-03)
- 0.4 (2017-08-05)
- 0.3.4 (2017-08-04)
- 0.3.3 (2017-07-05)
- 0.3.2 (2017-07-04)
- 0.3.1 (2017-07-04)
- 0.2b1 (2017-06-00)
- 0.1 (2017-06-03)
- Contributing