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

Prompt и PromptRegistry

Композитный текстовый билдер. Хранит упорядоченный список частей и рендерит их в одну строку.

from edgebot import Prompt
Prompt(template: str = "")
ПараметрОписание
templateСтартовый шаблон. Может содержать плейсхолдеры {name} для подстановки

Добавляет блок текста в конец.

prompt.append(text: str) -> Prompt

Добавляет блок текста в начало.

prompt.prepend(text: str) -> Prompt

Склеивает части через \n и подставляет значения через str.format_map.

prompt.render(**kwargs) -> str
p = Prompt("Привет, {name}!")
p.append("Баланс: {balance}")
text = p.render(name="Иван", balance=1500)
# "Привет, Иван!\nБаланс: 1500 ₽"
header = Prompt("📋 Заголовок")
body = Prompt("Основной текст")
body.prepend(header.render()) # добавить заголовок сверху

Реестр фабрик промптов. Фабрика — функция, декорированная через @registry.register(key), возвращающая Prompt.

from edgebot import PromptRegistry
registry = PromptRegistry()

Декоратор для регистрации фабрики.

@registry.register("welcome")
def p_welcome(username: str) -> Prompt:
return Prompt(f"Привет, @{username}!")
ПараметрОписание
keyСтроковый ключ, по которому UIComponent запросит промпт

Вызывает фабрику и возвращает Prompt.

registry.get(key: str, **kwargs) -> Prompt
RaisesУсловие
PromptNotFoundКлюч не зарегистрирован
TypeErrorФабрика вернула не Prompt

Проверяет наличие зарегистрированного промпта.

registry.has(key: str) -> bool

Фабрика объявляет только нужные параметры. Лишние ключи из kwargs отбрасываются автоматически по сигнатуре функции:

@registry.register("profile")
def p_profile(username: str, is_active: bool) -> Prompt:
...
# При вызове get("profile", username="john", is_active=True, age=25)
# age будет тихо отброшен

Если фабрика объявляет **kwargs — фильтрация отключается, все данные передаются как есть.