aiogram is a modern and fully asynchronous framework for Telegram Bot API written in Python using asyncio
Find a file
Alex Root Junior cd4e811856
Refactor: Introduce Union types for streamlined type handling (#1649)
* Refactor: Introduce Union types for streamlined type handling

Implemented Union types across various modules to consolidate and simplify type annotations. This change replaces repetitive union declarations with reusable Union aliases, improving code readability and maintainability. Updates applied to affected classes, methods, and imports accordingly.

* Refactor unions into type aliases for better reusability

Replaced inline `Union` types with predefined aliases like `MediaUnion`, `ReplyMarkupUnion`, and `ChatIdUnion`. Simplifies type annotations, improves code readability, and reduces duplication. Added `media_union.py` for grouping related media types.

* Refactor type unions with ResultChatMemberUnion and ResultMenuButtonUnion

Replaced verbose type definitions of chat member and menu button unions with `ResultChatMemberUnion` and `ResultMenuButtonUnion` for improved readability and maintainability. Updated relevant methods, modules, and documentation to use the new type aliases consistently.

* Added changelog
2025-03-08 02:19:57 +02:00
.butcher Added full support for the Bot API 8.3 (#1638) 2025-02-16 22:37:18 +02:00
.github Enabled tests on Python 3.13, disabled on Python 3.8 (#1589) 2024-10-19 14:55:38 +03:00
aiogram Refactor: Introduce Union types for streamlined type handling (#1649) 2025-03-08 02:19:57 +02:00
CHANGES Refactor: Introduce Union types for streamlined type handling (#1649) 2025-03-08 02:19:57 +02:00
docs Refactor: Introduce Union types for streamlined type handling (#1649) 2025-03-08 02:19:57 +02:00
examples Added full support of Bot API 7.8 (#1551) 2024-08-09 19:10:39 +03:00
scripts Added full support of Bot API 7.9 (#1560) 2024-08-16 00:44:40 +03:00
tests Fix handler registration order in Scene (#1642) 2025-03-01 22:08:14 +02:00
.apiversion Added full support for the Bot API 8.3 (#1638) 2025-02-16 22:37:18 +02:00
.editorconfig docs: migration feeding updates (#1531) 2024-07-06 20:33:01 +03:00
.gitignore Migrate to hatchling (#1095) 2023-01-12 02:49:58 +02:00
.pre-commit-config.yaml Bump lint dependencies 2024-07-08 00:39:32 +03:00
.readthedocs.yml Added MongoDB dependency to ReadTheDocs configuration (#1502) 2024-06-01 01:56:38 +03:00
CHANGES.rst A little bit of change changelog categories 2025-02-16 22:45:56 +02:00
CITATION.cff Update citation 2023-10-27 00:50:21 +03:00
codecov.yaml Remove compatibility with Python 3.7 2021-05-25 01:00:36 +03:00
CONTRIBUTING.md Fixed contributing URL 2023-04-13 00:02:15 +03:00
HISTORY.rst towncrier integration (#647) 2021-08-01 19:08:03 +03:00
LICENSE Update dates interval in license file 2023-09-03 03:16:48 +03:00
Makefile Fixed docs build 2024-09-08 15:53:44 +03:00
pyproject.toml Typed data (#1647) 2025-03-02 01:24:30 +02:00
README.rst Added full support for the Bot API 8.3 (#1638) 2025-02-16 22:37:18 +02:00

#######
aiogram
#######

.. image:: https://img.shields.io/pypi/l/aiogram.svg?style=flat-square
    :target: https://opensource.org/licenses/MIT
    :alt: MIT License

.. image:: https://img.shields.io/pypi/status/aiogram.svg?style=flat-square
    :target: https://pypi.python.org/pypi/aiogram
    :alt: PyPi status

.. image:: https://img.shields.io/pypi/v/aiogram.svg?style=flat-square
    :target: https://pypi.python.org/pypi/aiogram
    :alt: PyPi Package Version

.. image:: https://img.shields.io/pypi/dm/aiogram.svg?style=flat-square
    :target: https://pypi.python.org/pypi/aiogram
    :alt: Downloads

.. image:: https://img.shields.io/pypi/pyversions/aiogram.svg?style=flat-square
    :target: https://pypi.python.org/pypi/aiogram
    :alt: Supported python versions

.. image:: https://img.shields.io/badge/dynamic/json?color=blue&logo=telegram&label=Telegram%20Bot%20API&query=%24.api.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Faiogram%2Faiogram%2Fdev-3.x%2F.butcher%2Fschema%2Fschema.json&style=flat-square
    :target: https://core.telegram.org/bots/api
    :alt: Telegram Bot API

.. image:: https://img.shields.io/github/actions/workflow/status/aiogram/aiogram/tests.yml?branch=dev-3.x&style=flat-square
    :target: https://github.com/aiogram/aiogram/actions
    :alt: Tests

.. image:: https://img.shields.io/codecov/c/github/aiogram/aiogram?style=flat-square
    :target: https://app.codecov.io/gh/aiogram/aiogram
    :alt: Codecov

**aiogram** is a modern and fully asynchronous framework for
`Telegram Bot API <https://core.telegram.org/bots/api>`_ written in Python 3.8+ using
`asyncio <https://docs.python.org/3/library/asyncio.html>`_ and
`aiohttp <https://github.com/aio-libs/aiohttp>`_.

Make your bots faster and more powerful!

Documentation:
 - 🇺🇸 `English <https://docs.aiogram.dev/en/dev-3.x/>`_
 - 🇺🇦 `Ukrainian <https://docs.aiogram.dev/uk_UA/dev-3.x/>`_


Features
========

- Asynchronous (`asyncio docs <https://docs.python.org/3/library/asyncio.html>`_, :pep:`492`)
- Has type hints (:pep:`484`) and can be used with `mypy <http://mypy-lang.org/>`_
- Supports `PyPy <https://www.pypy.org/>`_
- Supports `Telegram Bot API 8.3 <https://core.telegram.org/bots/api>`_ and gets fast updates to the latest versions of the Bot API
- Telegram Bot API integration code was `autogenerated <https://github.com/aiogram/tg-codegen>`_ and can be easily re-generated when API gets updated
- Updates router (Blueprints)
- Has Finite State Machine
- Uses powerful `magic filters <https://docs.aiogram.dev/en/latest/dispatcher/filters/magic_filters.html#magic-filters>`_
- Middlewares (incoming updates and API calls)
- Provides `Replies into Webhook <https://core.telegram.org/bots/faq#how-can-i-make-requests-in-response-to-updates>`_
- Integrated I18n/L10n support with GNU Gettext (or Fluent)


.. warning::

    It is strongly advised that you have prior experience working
    with `asyncio <https://docs.python.org/3/library/asyncio.html>`_
    before beginning to use **aiogram**.

    If you have any questions, you can visit our community chats on Telegram:

    - 🇺🇸 `@aiogram <https://t.me/aiogram>`_
    - 🇺🇦 `@aiogramua <https://t.me/aiogramua>`_
    - 🇺🇿 `@aiogram_uz <https://t.me/aiogram_uz>`_
    - 🇰🇿 `@aiogram_kz <https://t.me/aiogram_kz>`_
    - 🇷🇺 `@aiogram_ru <https://t.me/aiogram_ru>`_
    - 🇮🇷 `@aiogram_fa <https://t.me/aiogram_fa>`_
    - 🇮🇹 `@aiogram_it <https://t.me/aiogram_it>`_
    - 🇧🇷 `@aiogram_br <https://t.me/aiogram_br>`_