98 lines
2.8 KiB
Python
98 lines
2.8 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, TypedDict
|
|
|
|
from typing_extensions import NotRequired
|
|
|
|
if TYPE_CHECKING:
|
|
from aiogram import Bot, Dispatcher, Router
|
|
from aiogram.dispatcher.event.handler import HandlerObject
|
|
from aiogram.dispatcher.middlewares.user_context import EventContext
|
|
from aiogram.fsm.context import FSMContext
|
|
from aiogram.fsm.storage.base import BaseStorage
|
|
from aiogram.types import Chat, Update, User
|
|
from aiogram.utils.i18n import I18n, I18nMiddleware
|
|
|
|
|
|
class DispatcherData(TypedDict, total=False):
|
|
"""
|
|
Dispatcher and bot related data.
|
|
"""
|
|
|
|
dispatcher: Dispatcher
|
|
"""Instance of the Dispatcher from which the handler was called."""
|
|
bot: Bot
|
|
"""Bot that received the update."""
|
|
bots: NotRequired[list[Bot]]
|
|
"""List of all bots in the Dispatcher. Used only in polling mode."""
|
|
event_update: Update
|
|
"""Update object that triggered the handler."""
|
|
event_router: Router
|
|
"""Router that was used to find the handler."""
|
|
handler: NotRequired[HandlerObject]
|
|
"""Handler object that was called.
|
|
Available only in the handler itself and inner middlewares."""
|
|
|
|
|
|
class UserContextData(TypedDict, total=False):
|
|
"""
|
|
Event context related data about user and chat.
|
|
"""
|
|
|
|
event_context: EventContext
|
|
"""Event context object that contains user and chat data."""
|
|
event_from_user: NotRequired[User]
|
|
"""User object that triggered the handler."""
|
|
event_chat: NotRequired[Chat]
|
|
"""Chat object that triggered the handler.
|
|
.. deprecated:: 3.5.0
|
|
Use :attr:`event_context.chat` instead."""
|
|
event_thread_id: NotRequired[int]
|
|
"""Thread ID of the chat that triggered the handler.
|
|
.. deprecated:: 3.5.0
|
|
Use :attr:`event_context.chat` instead."""
|
|
event_business_connection_id: NotRequired[str]
|
|
"""Business connection ID of the chat that triggered the handler.
|
|
.. deprecated:: 3.5.0
|
|
Use :attr:`event_context.business_connection_id` instead."""
|
|
|
|
|
|
class FSMData(TypedDict, total=False):
|
|
"""
|
|
FSM related data.
|
|
"""
|
|
|
|
fsm_storage: BaseStorage
|
|
"""Storage used for FSM."""
|
|
state: NotRequired[FSMContext]
|
|
"""Current state of the FSM."""
|
|
raw_state: NotRequired[str | None]
|
|
"""Raw state of the FSM."""
|
|
|
|
|
|
class I18nData(TypedDict, total=False):
|
|
"""
|
|
I18n related data.
|
|
|
|
Is not included by default, you need to add it to your own Data class if you need it.
|
|
"""
|
|
|
|
i18n: I18n
|
|
"""I18n object."""
|
|
i18n_middleware: I18nMiddleware
|
|
"""I18n middleware."""
|
|
|
|
|
|
class MiddlewareData(
|
|
DispatcherData,
|
|
UserContextData,
|
|
FSMData,
|
|
# I18nData, # Disabled by default, add it if you need it to your own Data class.
|
|
total=False,
|
|
):
|
|
"""
|
|
Data passed to the handler by the middlewares.
|
|
|
|
You can add your own data by extending this class.
|
|
"""
|