MaxMethod base¶
Базовый класс для всех API-методов.
MaxMethod[T]¶
class MaxMethod(BotContextController, BaseModel, Generic[MaxType], ABC):
__returning__: ClassVar[type] # Тип возвращаемого значения
__http_method__: ClassVar[str] # HTTP метод (GET, POST, PUT, PATCH, DELETE)
__api_path__: ClassVar[str] # Путь API (/messages, /chats/{chat_id})
model_config = ConfigDict(
extra="allow",
populate_by_name=True,
arbitrary_types_allowed=True,
)
Методы¶
| Метод | Описание |
|---|---|
build_request_path() -> str |
Подставляет параметры в __api_path__ (например, {chat_id} → 123) |
build_query_params() -> dict |
Формирует query-параметры для GET/DELETE запросов |
build_request_body() -> dict \| None |
Формирует JSON-тело для POST/PUT/PATCH запросов |
emit(bot) -> T |
Выполняет метод через переданный бот |
__await__() -> T |
Позволяет await method (требует привязанный bot через контекст) |
Принцип работы¶
build_request_path()формирует URL-путьbuild_query_params()илиbuild_request_body()формирует данные- Сессия выполняет HTTP-запрос
BaseSession.check_response()парсит ответ в__returning__тип
Response[T]¶
class Response(BaseModel, Generic[MaxType]):
success: bool = True
message: str | None = None
result: MaxType | None = None
Обёртка ответа API. Используется для парсинга ответов вида {"success": true, "result": ...}.
Пример создания метода¶
from maxgram.methods.base import MaxMethod
from typing import ClassVar
class MyCustomMethod(MaxMethod[bool]):
__returning__: ClassVar[type] = bool
__http_method__: ClassVar[str] = "POST"
__api_path__: ClassVar[str] = "/custom/{entity_id}"
entity_id: int
value: str
# Использование
result = await bot(MyCustomMethod(entity_id=1, value="test"))
Исходный файл¶
maxgram/methods/base.py