Перейти к содержимому

Bot

Класс Bot — точка входа EdgeBot SDK. Регистрирует обработчики событий, подключает реестры и маршрутизирует апдейты от Telegram.

from edgebot import Bot
bot = Bot(token: str, parse_mode: str | None = None)
ПараметрТипОписание
tokenstrТокен Telegram-бота
parse_modestr | NoneРежим парсинга по умолчанию ("Markdown", "HTML" или None)

Все методы конфигурации возвращают 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 из Cloudflare Workers (биндинги KV, D1, R2 и т.д.). Доступен в обработчиках через ctx.env.

Сохраняет ExecutionContext текущего запроса (для waitUntil и пр.). Доступен через ctx.request.

Подключает UserRegistry. После этого доступен в обработчиках как ctx.users.

Подключает KeyboardRegistry. Используется UI-компонентами для получения клавиатуры по ключу.

Подключает PromptRegistry. Используется UI-компонентами для получения текста экрана по ключу.

Регистрирует один или несколько UIComponent. Каждый компонент должен иметь уникальный __prefix__.

bot.register_ui(ProfileScreen(), SettingsScreen())
@bot.on_command("/start")
async def start_handler(ctx: Context):
await ctx.send("Привет!")

Реагирует на конкретную команду. command — строка с ведущим /.

@bot.on_message
async def message_handler(ctx: Context):
await ctx.reply(f"Эхо: {ctx.text}")

Ловит текстовые сообщения, которые не являются командами и не содержат медиа.

@bot.on_callback
async def callback_handler(ctx: Context):
await ctx.answer_callback()

Обрабатывает нажатия на inline-кнопки. Вызывается после UI-компонентов — если ни один UIComponent не перехватил callback.

ДекораторАтрибут ctxОписание
@bot.on_photoctx.photoСписок PhotoSize
@bot.on_videoctx.videoОбъект видео
@bot.on_voicectx.voiceГолосовое сообщение
@bot.on_audioctx.audioАудиофайл
@bot.on_stickerctx.stickerСтикер
@bot.on_animationctx.animationGIF / MP4
@bot.on_documentctx.documentФайл-документ
ДекораторОписание
@bot.on_checklistОбработчик чеклистов
@bot.on_checklist_tasks_doneОбработчик выполненных задач чеклиста
await bot.process_update(update: dict)

Главный метод маршрутизации. Принимает сырой апдейт от Telegram и вызывает обработчики в порядке приоритета:

  1. Callback query → UI-компоненты → @bot.on_callback
  2. Команды@bot.on_command
  3. Медиа → соответствующий @bot.on_*
  4. Текст@bot.on_message
МетодВозвращаетRaises
bot.get_env()Объект env или None
bot.get_cf_ctx()ExecutionContext или None
bot.get_users()UserRegistryAttributeError если не подключён
bot.get_keyboards()KeyboardRegistryAttributeError если не подключён
bot.get_prompts()PromptRegistryAttributeError если не подключён