Bot
Класс Bot — точка входа EdgeBot SDK. Регистрирует обработчики событий, подключает реестры и маршрутизирует апдейты от Telegram.
Конструктор
Заголовок раздела «Конструктор»from edgebot import Bot
bot = Bot(token: str, parse_mode: str | None = None)| Параметр | Тип | Описание |
|---|---|---|
token | str | Токен Telegram-бота |
parse_mode | str | None | Режим парсинга по умолчанию ("Markdown", "HTML" или None) |
Конфигурация (chaining)
Заголовок раздела «Конфигурация (chaining)»Все методы конфигурации возвращают self для chaining:
bot = ( Bot(env.BOT_TOKEN, parse_mode="Markdown") .env(env) .ctx(ctx) .with_users(user_registry) .with_keyboards(keyboard_registry) .with_prompts(prompt_registry) .register_ui(screen1, screen2)).env(env)
Заголовок раздела «.env(env)»Сохраняет объект env из Cloudflare Workers (биндинги KV, D1, R2 и т.д.). Доступен в обработчиках через ctx.env.
.ctx(ctx)
Заголовок раздела «.ctx(ctx)»Сохраняет ExecutionContext текущего запроса (для waitUntil и пр.). Доступен через ctx.request.
.with_users(registry)
Заголовок раздела «.with_users(registry)»Подключает UserRegistry. После этого доступен в обработчиках как ctx.users.
.with_keyboards(registry)
Заголовок раздела «.with_keyboards(registry)»Подключает KeyboardRegistry. Используется UI-компонентами для получения клавиатуры по ключу.
.with_prompts(registry)
Заголовок раздела «.with_prompts(registry)»Подключает PromptRegistry. Используется UI-компонентами для получения текста экрана по ключу.
.register_ui(*components)
Заголовок раздела «.register_ui(*components)»Регистрирует один или несколько UIComponent. Каждый компонент должен иметь уникальный __prefix__.
bot.register_ui(ProfileScreen(), SettingsScreen())Декораторы обработчиков
Заголовок раздела «Декораторы обработчиков»@bot.on_command(command)
Заголовок раздела «@bot.on_command(command)»@bot.on_command("/start")async def start_handler(ctx: Context): await ctx.send("Привет!")Реагирует на конкретную команду. command — строка с ведущим /.
@bot.on_message
Заголовок раздела «@bot.on_message»@bot.on_messageasync def message_handler(ctx: Context): await ctx.reply(f"Эхо: {ctx.text}")Ловит текстовые сообщения, которые не являются командами и не содержат медиа.
@bot.on_callback
Заголовок раздела «@bot.on_callback»@bot.on_callbackasync def callback_handler(ctx: Context): await ctx.answer_callback()Обрабатывает нажатия на inline-кнопки. Вызывается после UI-компонентов — если ни один UIComponent не перехватил callback.
Медиа-обработчики
Заголовок раздела «Медиа-обработчики»| Декоратор | Атрибут ctx | Описание |
|---|---|---|
@bot.on_photo | ctx.photo | Список PhotoSize |
@bot.on_video | ctx.video | Объект видео |
@bot.on_voice | ctx.voice | Голосовое сообщение |
@bot.on_audio | ctx.audio | Аудиофайл |
@bot.on_sticker | ctx.sticker | Стикер |
@bot.on_animation | ctx.animation | GIF / MP4 |
@bot.on_document | ctx.document | Файл-документ |
Чеклист-обработчики
Заголовок раздела «Чеклист-обработчики»| Декоратор | Описание |
|---|---|
@bot.on_checklist | Обработчик чеклистов |
@bot.on_checklist_tasks_done | Обработчик выполненных задач чеклиста |
process_update(update)
Заголовок раздела «process_update(update)»await bot.process_update(update: dict)Главный метод маршрутизации. Принимает сырой апдейт от Telegram и вызывает обработчики в порядке приоритета:
- Callback query → UI-компоненты →
@bot.on_callback - Команды →
@bot.on_command - Медиа → соответствующий
@bot.on_* - Текст →
@bot.on_message
Getter-методы
Заголовок раздела «Getter-методы»| Метод | Возвращает | Raises |
|---|---|---|
bot.get_env() | Объект env или None | — |
bot.get_cf_ctx() | ExecutionContext или None | — |
bot.get_users() | UserRegistry | AttributeError если не подключён |
bot.get_keyboards() | KeyboardRegistry | AttributeError если не подключён |
bot.get_prompts() | PromptRegistry | AttributeError если не подключён |