Создает новый экземпляр бота
Optionaltype: TAppTypeТип платформы (по умолчанию автоопределение)
OptionalbotController: TBotControllerClass<TUserData>Контроллер с логикой
Protected_Полученный запрос от пользователя. Может быть JSON-строкой, текстом или null
Protected_Protected_Определяет тип платформы и возвращает соответствующий класс для обработки
OptionalappType: TAppType | nullТип платформы
OptionaluserBotClass: TTemplateTypeModelClass | null = nullПользовательский класс бота
Объект с типом платформы и классом обработчика
Protected_Добавляет команду для обработки пользовательских запросов
Уникальный идентификатор команды
Триггеры для активации команды
text.includes(...))..test(text)).isPattern учитывается только если в slots нет RegExp.RegExp, isPattern = false игнорируется, и каждый элемент
обрабатывается согласно своему типу.Optionalcb: (userCommand: string, botController: TBotController) => string | voidФункция-обработчик команды
Использовать регулярные выражения (по умолчанию false)
Простая команда со словами:
appContext.addCommand(
'greeting',
['привет', 'здравствуй'],
(cmd, ctrl) => {
if (ctrl) ctrl.text = 'Здравствуйте!';
}
);
Команда с регулярными выражениями:
// Обработка чисел от 1 до 999
bot.addCommand(
'number',
['\\b([1-9]|[1-9][0-9]|[1-9][0-9][0-9])\\b'],
(cmd, ctrl) => {
if (ctrl) ctrl.text = `Вы ввели число: ${cmd}`;
},
true // включаем поддержку регулярных выражений
);
Библиотека проверяет регулярные выражения на ReDoS и логирует предупреждения по необходимости
Команда с доступом к состоянию:
bot.addCommand(
'stats',
['статистика'],
async (cmd, ctrl) => {
if (ctrl) {
// Доступ к пользовательским данным
const visits = ctrl.userData?.visits || 0;
ctrl.text = `Вы использовали бота ${visits} раз`;
// Доступ к кнопкам и другим UI элементам
ctrl.buttons
.addBtn('Сбросить статистику')
.addBtn('Закрыть');
}
}
);
Удаляет все команды
Возвращает контекст приложения
Инициализирует контроллер с бизнес-логикой бота Устанавливает контроллер, который будет обрабатывать команды и формировать ответы
Контроллер бота
Удаляет команду
Имя команды
Запускает обработку запроса. Выполняет основную логику бота и возвращает результат
OptionaluserBotClass: TTemplateTypeModelClass | null = nullПользовательский класс бота
OptionalappType: TAppType | null = nullТип приложения. Если не указан, будет определен автоматически
Optionalcontent: string | null = nullКонтент запроса. Если не указан, будет взят из this._content
Результат выполнения бота
Задает конфигурацию приложения Устанавливает настройки бота, включая интенты, базу данных и другие параметры
Конфигурация приложения
Устанавливает контент запроса. Используется для передачи данных от пользователя в бот. Не рекомендуется использовать напрямую, использовать только в крайнем случае, либо для тестов
Контент запроса
Установка пользовательского обработчика команд.
По умолчанию umbot использует линейный поиск с поддержкой подстрок и регулярных выражений.
Это обеспечивает простоту, предсказуемость и соответствие поведению других платформ (порядок регистрации важен).
Однако при числе команд >1000 или в условиях высокой нагрузки вы можете подключить собственный алгоритм поиска:
const bot = new Bot();
bot.setCustomCommandResolver((userCommand, commands) => {
// Пример: возврат команды по хэшу (ваши правила)
for (const [name, cmd] of commands) {
if (cmd.slots.some(slot => userCommand.includes(slot as string))) {
return name;
}
}
return null;
});
💡 Рекомендации:
Сохраняйте порядок перебора, если он критичен для вашей логики Используйте кэширование (Map<string, string>) для часто встречающихся фраз Для fuzzy-поиска рассмотрите fuse.js или natural При использовании регулярных выражений — не забывайте про защиту от ReDoS
Задает параметры для платформ Устанавливает дополнительные параметры для работы бота
Параметры платформы
Устанавливает контроллер с базой данных
Запускает HTTP-сервер для обработки запросов. Создает сервер на указанном хосте и порту
Имя хоста
Порт
OptionaluserBotClass: TTemplateTypeModelClass | null = nullПользовательский класс бота
Регистрирует middleware, вызываемый до выполнения BotController.action().
Middleware получает доступ к полному BotController (включая text, isEnd, userData, buttons и т.д.)
и может:
next())Middleware-функция
Текущий экземпляр Bot для цепочки вызовов
Регистрирует middleware, вызываемый только для указанной платформы.
Идентификатор платформы (alisa, telegram, vk, и т.д.)
Middleware-функция
Текущий экземпляр Bot
Обрабатывает входящий webhook-запрос от любой поддерживаемой платформы.
Объект входящего запроса (IncomingMessage или совместимый)
Объект ответа (ServerResponse или совместимый)
Пользовательский класс бота
Основной класс для работы с ботом Отвечает за инициализацию, конфигурацию и запуск бота Поддерживает различные платформы: Алиса, Маруся, Telegram, VK, Viber и др.
Bot
Example
Создание простого бота:
Example
Использование с базой данных:
Example
Создание бота для Telegram: