Класс Bot¶
Класс Bot — центральный HTTP-клиент для взаимодействия с MAX Bot API.
Создание экземпляра¶
from maxgram import Bot
from maxgram.client.default import DefaultBotProperties
from maxgram.enums import ParseMode
# Минимальная инициализация
bot = Bot(token="YOUR_BOT_TOKEN")
# С настройками по умолчанию
bot = Bot(
token="YOUR_BOT_TOKEN",
default=DefaultBotProperties(
parse_mode=ParseMode.HTML,
disable_link_preview=True,
notify=False,
),
)
Конструктор¶
Bot(
token: str,
session: Any | None = None,
default: DefaultBotProperties | None = None,
**kwargs: Any,
)
Параметры:
- token (
str) — токен бота MAX Messenger. Обязательный параметр. Не может быть пустым. - session (
Any | None) — HTTP-сессия. По умолчанию создаётсяAiohttpSession(). - default (
DefaultBotProperties | None) — настройки по умолчанию для отправки сообщений. - **kwargs — произвольные параметры, сохраняются как атрибуты экземпляра.
# Пример с пользовательскими параметрами
bot = Bot(
token="TOKEN",
db=database_pool,
config=app_config,
)
print(bot.db) # database_pool
print(bot.config) # app_config
Свойства¶
| Свойство | Тип | Описание |
|---|---|---|
token |
str |
Токен бота (только чтение) |
id |
int \| None |
ID бота. Доступен после вызова get_me() |
username |
str \| None |
Username бота. Доступен после вызова get_me() |
session |
BaseSession |
HTTP-сессия для выполнения запросов |
default |
DefaultBotProperties |
Настройки по умолчанию |
Методы: информация о боте¶
get_me¶
Возвращает информацию о боте. Результат кэшируется в свойстве me().
me¶
Кэшированная версия get_me(). При первом вызове делает запрос к API,
при последующих возвращает закэшированный результат.
edit_info¶
await bot.edit_info(
name: str | None = None,
description: str | None = None,
commands: list[BotCommand] | None = None,
photo: dict | None = None,
) -> BotInfo
Изменяет информацию о боте (PATCH /me). Передавайте только те поля, которые нужно обновить.
set_commands¶
Устанавливает список команд бота. Шорткат для edit_info(commands=...).
from maxgram.types import BotCommand
await bot.set_commands([
BotCommand(name="start", description="Запуск бота"),
BotCommand(name="help", description="Справка"),
])
delete_commands¶
Удаляет все команды бота.
Методы: чаты¶
get_chats¶
Получает список чатов бота.
- count — максимальное количество чатов
- marker — маркер для пагинации
get_chat¶
Получает информацию о конкретном чате по ID.
get_chat_by_link¶
Получает информацию о чате по ссылке.
edit_chat¶
await bot.edit_chat(
chat_id: int,
title: str | None = None,
icon: dict[str, Any] | None = None,
pin: str | None = None,
notify: bool | None = None,
) -> Chat
Редактирует параметры чата. Возвращает обновлённый объект Chat.
delete_chat¶
Удаляет чат.
Методы: сообщения¶
send_message¶
await bot.send_message(
chat_id: int | None = None,
user_id: int | None = None,
text: str | None = None,
attachments: list[Any] | None = None,
link: Any | None = None,
notify: bool | None = None,
format: str | None = None,
disable_link_preview: bool | None = None,
) -> Message
Отправляет сообщение. Нужно указать chat_id или user_id.
- chat_id — ID чата для отправки
- user_id — ID пользователя для отправки в личку
- text — текст сообщения
- attachments — список вложений (клавиатуры, файлы и т.д.)
- link — ссылка на другое сообщение (для ответа/пересылки)
- notify — отправлять уведомление (
True/False) - format — формат текста:
"html"или"markdown" - disable_link_preview — отключить превью ссылок
edit_message¶
await bot.edit_message(
message_id: str,
text: str | None = None,
attachments: list[Any] | None = None,
notify: bool | None = None,
format: str | None = None,
) -> bool
Редактирует существующее сообщение.
delete_message¶
Удаляет сообщение.
get_messages¶
await bot.get_messages(
chat_id: int | None = None,
message_ids: list[str] | None = None,
from_: int | None = None,
to: int | None = None,
count: int | None = None,
) -> list[Message]
Получает список сообщений из чата. from_ и to — фильтрация по времени (Unix ms).
get_message_by_id¶
Получает сообщение по ID.
Методы: участники чата¶
get_members¶
await bot.get_members(
chat_id: int,
user_ids: list[int] | None = None,
marker: int | None = None,
count: int | None = None,
) -> list[ChatMember]
add_members¶
remove_member¶
get_my_membership¶
leave_chat¶
Методы: администраторы¶
get_admins¶
assign_admins¶
remove_admin¶
Методы: закреплённые сообщения¶
get_pinned_message¶
pin_message¶
unpin_message¶
Методы: действия в чате¶
send_action¶
Отправляет индикатор действия (например, «печатает...»).
Доступные действия (ChatAction):
typing_on— печатаетsending_photo— отправляет фотоsending_video— отправляет видеоsending_audio— отправляет аудиоsending_file— отправляет файлmark_seen— прочитано
Методы: callback¶
answer_callback¶
await bot.answer_callback(
callback_id: str,
text: str | None = None,
attachments: list[Any] | None = None,
notification: str | None = None,
notify: bool | None = None,
format: str | None = None,
) -> bool
Отвечает на callback-запрос от нажатия inline-кнопки.
- callback_id — ID callback-запроса
- text — текст ответного сообщения
- notification — текст уведомления (всплывающее)
- attachments — вложения к ответу
Методы: подписки (webhooks)¶
get_subscriptions¶
create_subscription¶
await bot.create_subscription(
url: str,
update_types: list[str] | None = None,
secret: str | None = None,
) -> bool
delete_subscription¶
Методы: обновления¶
get_updates¶
await bot.get_updates(
limit: int | None = None,
timeout: int | None = None,
marker: int | None = None,
types: list[str] | None = None,
) -> list[Update]
Получает обновления через long polling.
Note
Обычно вы не вызываете get_updates() напрямую — это делает Dispatcher.
Методы: загрузка файлов¶
get_upload_url¶
Получает URL для загрузки файла. Типы: "image", "video", "audio", "file".
upload_file¶
Двухэтапная загрузка файла. Возвращает токен для использования в вложениях.
Методы: видео¶
get_video_info¶
Контекстный менеджер¶
Bot поддерживает async with для автоматического закрытия сессии:
async with Bot(token="TOKEN") as bot:
me = await bot.get_me()
print(me.first_name)
# Сессия автоматически закрыта
Выполнение произвольных методов¶
Bot можно вызывать как функцию, передавая объект MaxMethod:
from maxgram.methods import SendMessage
result = await bot(SendMessage(
chat_id=12345,
text="Hello!",
))
DefaultBotProperties¶
from maxgram.client.default import DefaultBotProperties
from maxgram.enums import ParseMode
DefaultBotProperties(
parse_mode: str | None = None, # ParseMode.HTML или ParseMode.MARKDOWN
disable_link_preview: bool | None = None,
notify: bool | None = None,
)
Эти значения используются как значения по умолчанию при отправке сообщений, если соответствующие параметры не указаны явно.