Загрузка...

Использование WizardScene на NodeJS Telegraf TypeScript

Тема в разделе Node.js создана пользователем RichPerson 28 ноя 2023. 745 просмотров

  1. RichPerson
    RichPerson Автор темы 28 ноя 2023 Разработка - https://zelenka.guru/threads/4480553/ 2160 23 сен 2019
    Как использовать сцены WizardScene на NodeJS Telegraf TypeScript, пример.
    Трабл с обобщениями. Не совпадают типы.
     
  2. ChatGPT
    ChatGPT 28 ноя 2023 2250 14 мар 2023
    RichPerson, чтобы использовать сцены WizardScene в NodeJS Telegraf с TypeScript, вам нужно выполнить следующие шаги:

    1. Установите необходимые пакеты:
    BASH

    npm install telegraf telegraf-session-redis
    2. Создайте файл `index.ts` и добавьте следующий код:

    TYPESCRIPT

    import { Telegraf, Context, session, Scenes } from 'telegraf';
    import RedisSession from 'telegraf-session-redis';

    // Создание сцены
    const stepHandler = new Scenes.WizardScene<Context>('wizard',
    (ctx) => {
    ctx.reply('Шаг 1. Введите ваше имя:');
    return ctx.wizard.next();
    },
    (ctx) => {
    ctx.reply(`Шаг 2. Привет, ${ctx.message.text}! Введите ваш возраст:`);
    return ctx.wizard.next();
    },
    (ctx) => {
    ctx.reply(`Шаг 3. Ваш возраст: ${ctx.message.text}. Завершение.`);
    return ctx.scene.leave();
    }
    );

    // Создание экземпляра бота
    const bot = new Telegraf(process.env.BOT_TOKEN);

    // Подключение сессии
    const sessionConfig = {
    store: new RedisSession({
    host: 'localhost',
    port: 6379,
    }),
    };
    bot.use(session(sessionConfig));

    // Регистрация сцены
    const stage = new Scenes.Stage([stepHandler]);
    bot.use(stage.middleware());

    // Запуск бота
    bot.start((ctx) => ctx.reply('Привет! Добро пожаловать в мастер-сценарий!'));
    bot.command('wizard', (ctx) => ctx.scene.enter('wizard'));

    bot.launch();
    3. Запустите бота, выполнив команду:
    BASH

    node index.ts
    Теперь вы можете использовать команду `/wizard`, чтобы начать использование сцены WizardScene. Бот будет задавать вам вопросы и сохранять введенные данные.

    Если у вас возникли проблемы с обобщениями и несовпадением типов, пожалуйста, уточните, в какой части кода возникают ошибки, и я постараюсь помочь вам решить проблему.
     
    1. RichPerson Автор темы
      ChatGPT, Как использовать сцены WizardScene на NodeJS Telegraf TypeScript, пример.
      C использованием в сессии переменных
    2. ChatGPT
      RichPerson, чтобы использовать сцены WizardScene в NodeJS Telegraf с TypeScript и сохранять переменные в сессии, вам нужно выполнить следующие шаги:

      1. Установите необходимые пакеты:
      BASH

      npm install telegraf telegraf-session-redis
      2. Создайте файл `index.ts` и добавьте следующий код:

      TYPESCRIPT

      import { Telegraf, Context, session, Scenes } from 'telegraf';
      import RedisSession from 'telegraf-session-redis';

      // Создание сцены
      const stepHandler = new Scenes.WizardScene<Context>('wizard',
      (ctx) => {
      ctx.reply('Шаг 1. Введите ваше имя:');
      return ctx.wizard.next();
      },
      (ctx) => {
      ctx.session.name = ctx.message.text; // Сохранение имени в сессии
      ctx.reply(`Шаг 2. Привет, ${ctx.session.name}! Введите ваш возраст:`);
      return ctx.wizard.next();
      },
      (ctx) => {
      ctx.session.age = ctx.message.text; // Сохранение возраста в сессии
      ctx.reply(`Шаг 3. Ваш возраст: ${ctx.session.age}. Завершение.`);
      return ctx.scene.leave();
      }
      );

      // Создание экземпляра бота
      const bot = new Telegraf(process.env.BOT_TOKEN);

      // Подключение сессии
      const sessionConfig = {
      store: new RedisSession({
      host: 'localhost',
      port: 6379,
      }),
      };
      bot.use(session(sessionConfig));

      // Регистрация сцены
      const stage = new Scenes.Stage([stepHandler]);
      bot.use(stage.middleware());

      // Запуск бота
      bot.start((ctx) => ctx.reply('Привет! Добро пожаловать в мастер-сценарий!'));
      bot.command('wizard', (ctx) => ctx.scene.enter('wizard'));

      bot.launch();
      3. Запустите бота, выполнив команду:
      BASH

      node index.ts
      Теперь вы можете использовать команду `/wizard`, чтобы начать использование сцены WizardScene. Бот будет задавать вам вопросы и сохранять введенные данные в сессии. Вы можете получить доступ к этим данным в любой части кода, используя `ctx.session.name` и `ctx.session.age`.

      Если у вас возникли проблемы или у вас есть дополнительные вопросы, пожалуйста, дайте мне знать. Я буду рад помочь вам.
Загрузка...
Top