umbot - v2.1.3
    Preparing search index...

    Класс для тестирования бота Предоставляет интерактивный режим для отладки и тестирования функциональности

    BotTest

    const botTest = new BotTest();
    botTest.setAppConfig({
    intents: [{
    name: 'greeting',
    slots: ['привет', 'здравствуйте']
    }]
    });
    botTest.initBotController(new MyController());

    // Запуск тестирования
    await botTest.test({
    isShowResult: true,
    isShowStorage: true
    });

    Hierarchy (View Summary)

    Index

    Constructors

    • Создает новый экземпляр бота

      Parameters

      • Optionaltype: TAppType

        Тип платформы (по умолчанию Алиса)

      • OptionalbotController: BotController<IUserData>

        Контроллер с логикой

      • OptionaluseGlobalState: boolean = false

        Определяет нужно ли использовать глобальное состояние(mmApp). Не рекомендуется использовать.

      Returns BotTest

      Если не удалось инициализировать бота

      // Создание бота для Telegram
      const bot = new Bot(T_TELEGRAM, new MyController());

      // Создание бота для VK
      const bot = new Bot(T_VK, new MyController());

      // Создание бота для Алисы
      const bot = new Bot(T_ALISA, new MyController());

    Properties

    _appContext: AppContext

    Контекст приложения

    _auth: TBotAuth

    Авторизационный токен пользователя. Используется для авторизованных запросов (например, в Алисе)

    _botController: BotController<IUserData>

    Контроллер с бизнес-логикой приложения. Обрабатывает команды и формирует ответы

    BotController

    _content: TBotContent = null

    Полученный запрос от пользователя. Может быть JSON-строкой, текстом или null

    _serverInst: Server<typeof IncomingMessage, typeof ServerResponse> | undefined

    Экземпляр HTTP-сервера

    Accessors

    Methods

    • Protected

      Определяет тип платформы и возвращает соответствующий класс для обработки

      Parameters

      • OptionaluserBotClass: TemplateTypeModel | null = null

        Пользовательский класс бота

      Returns IBotBotClassAndType

      Объект с типом платформы и классом обработчика

      Если не удалось определить тип приложения

      Метод определяет тип платформы на основе _appContext.appType и возвращает соответствующий класс:

      • T_ALISA → Alisa
      • T_VK → Vk
      • T_Max → Max
      • T_TELEGRAM → Telegram
      • T_VIBER → Viber
      • T_MARUSIA → Marusia
      • T_SMARTAPP → SmartApp
      • T_USER_APP → Пользовательский класс
    • Добавляет команду для обработки пользовательских запросов

      Type Parameters

      Parameters

      • commandName: string

        Уникальный идентификатор команды

      • slots: TSlots

        Триггеры для активации команды

        • Если элемент — строка → ищется как подстрока (text.includes(...)).
        • Если элемент — RegExp → проверяется как регулярное выражение (.test(text)).
        • Параметр isPattern учитывается только если в slots нет RegExp.
        • При наличии хотя бы одного RegExp, isPattern = false игнорируется, и каждый элемент обрабатывается согласно своему типу.
      • Optionalcb: (userCommand: string, botController: TBotController) => string | void

        Функция-обработчик команды

      • isPattern: boolean = false

        Использовать регулярные выражения (по умолчанию false)

      Returns Bot

      Простая команда со словами:

      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 // включаем поддержку регулярных выражений
      );

      Команда с доступом к состоянию:

      bot.addCommand(
      'stats',
      ['статистика'],
      async (cmd, ctrl) => {
      if (ctrl) {
      // Доступ к пользовательским данным
      const visits = ctrl.userData?.visits || 0;
      ctrl.text = `Вы использовали бота ${visits} раз`;

      // Доступ к кнопкам и другим UI элементам
      ctrl.buttons
      .addBtn('Сбросить статистику')
      .addBtn('Закрыть');
      }
      }
      );
      • Команды обрабатываются в порядке добавления
      • При isPattern=true используются регулярные выражения JavaScript
      • В callback доступен весь функционал BotController
      • Можно использовать async функции в callback
    • Закрывает HTTP-сервер. Освобождает ресурсы и завершает работу сервера.

      Returns void

      // Закрытие сервера
      bot.close();
    • Protected

      Формирует конфигурацию для тестирования конкретной платформы. Создает структуру данных, соответствующую формату выбранной платформы

      Parameters

      • query: string

        Пользовательский запрос

      • count: number

        Номер сообщения в диалоге

      • state: string | object

        Данные из хранилища

      • OptionaluserBotConfig: TUserBotConfigCb | null

        Функция для пользовательской конфигурации

      Returns any

      Конфигурация для выбранной платформы

    • Инициализирует контроллер с бизнес-логикой бота Устанавливает контроллер, который будет обрабатывать команды и формировать ответы

      Parameters

      Returns Bot

      class MyController extends BotController {
      public action(intentName: string): void {
      switch (intentName) {
      case 'greeting':
      this.text = 'Привет!';
      break;
      case 'help':
      this.text = 'Чем могу помочь?';
      break;
      }
      }
      }

      bot.initBotController(new MyController());
    • Инициализирует конфигурацию приложения

      Parameters

      • config: IAppConfig

        Конфигурация приложения

      Returns void

      setAppConfig

    • Инициализирует параметры приложения

      Parameters

      • params: IAppParam

        Параметры приложения

      Returns void

      setPlatformParams

    • Инициализирует тип бота через GET-параметры Если в URL присутствует параметр type с корректным значением, устанавливает соответствующий тип платформы

      Returns boolean

      true если инициализация прошла успешно

      // URL: https://bot.example.com?type=telegram
      if (bot.initTypeInGet()) {
      console.log('Тип бота успешно инициализирован для Telegram');
      }

      // URL: https://bot.example.com?type=vk
      if (bot.initTypeInGet()) {
      console.log('Тип бота успешно инициализирован для VK');
      }
    • Запускает обработку запроса Выполняет основную логику бота и возвращает результат

      Parameters

      • OptionaluserBotClass: TemplateTypeModel | null = null

        Пользовательский класс бота

      Returns Promise<TRunResult>

      Результат выполнения бота

      // Обработка запроса
      const result = await bot.run();
      console.log(result);

      // Обработка с пользовательским классом
      const result = await bot.run(new MyBotClass());
    • Задает конфигурацию приложения Устанавливает настройки бота, включая интенты, базу данных и другие параметры

      Parameters

      • config: IAppConfig

        Конфигурация приложения

      Returns Bot

      // Конфигурация с базой данных
      bot.setAppConfig({
      db: {
      host: 'localhost',
      database: 'bot_db',
      user: 'user',
      pass: 'password'
      }
      });


      @remarks
      Важно! Чувствительные данные рекомендуется сохранять в .env файл, передав путь к нему:
      ```typescript
      bot.setAppConfig({
      env: './.env', // путь до файла
      });
    • Устанавливает контент запроса Используется для передачи данных от пользователя в бота

      Parameters

      Returns void

      // Установка текстового сообщения
      bot.setContent('Привет!');

      // Установка JSON-данных
      bot.setContent({
      request: {
      command: 'привет',
      original_utterance: 'Привет, бот!'
      }
      });
    • Устанавливает режим разработки

      Parameters

      • isDevMode: boolean

        Флаг включения режима разработки

      Returns Bot

      В режиме разработки в консоль выводятся все ошибки и предупреждения

    • Позволяет установить свою реализацию для логирования

      Parameters

      Returns void

    • Задает параметры для платформ Устанавливает дополнительные параметры для работы бота

      Parameters

      • params: IAppParam

        Параметры платформы

      Returns Bot

      // Базовая настройка
      bot.setPlatformParams({
      intents: [{
      name: 'help',
      slots: ['помощь', 'справка']
      }],
      });

      @remarks
      Важно! Чувствительные данные рекомендуется сохранять в .env файл, передав путь к нему:
      ```typescript
      bot.setAppConfig({
      env: './.env', // путь до файла
      });
    • Запускает HTTP-сервер для обработки запросов. Создает сервер на указанном хосте и порту

      Parameters

      • hostname: string = 'localhost'

        Имя хоста

      • port: number = 3000

        Порт

      • OptionaluserBotClass: TemplateTypeModel | null = null

        Пользовательский класс бота

      Returns Server

      // Запуск сервера на localhost:3000
      bot.start('localhost', 3000);

      // Запуск с пользовательским классом
      bot.start('localhost', 3000, new MyBotClass());
    • Запускает интерактивное тестирование бота Позволяет вводить команды и получать ответы в консоли

      Parameters

      • Optionalparams: IBotTestParams = {}

        Параметры тестирования

      Returns Promise<void>

      // Базовое тестирование
      await botTest.test();

      // Расширенное тестирование с отображением всех данных
      await botTest.test({
      isShowResult: true,
      isShowStorage: true,
      isShowTime: true
      });