Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Node.js问题中使用Telegraf的电报机器人_Javascript_Node.js_Telegram_Telegraf - Fatal编程技术网

Javascript 在Node.js问题中使用Telegraf的电报机器人

Javascript 在Node.js问题中使用Telegraf的电报机器人,javascript,node.js,telegram,telegraf,Javascript,Node.js,Telegram,Telegraf,我对Node.js还是个新手, 我正在尝试制作一个机器人,它会提示用户搜索一个单词,然后在MySQL数据库中查找匹配的行。 搜索过程应分为两个步骤: 用户被要求通过内联键盘选择一个选项,只有这样; 用户被要求写下要搜索的单词。 Bot应该在步骤1中的option选择的表中搜索数据库,查找步骤2中输入的单词,然后检索该行。 此外,bot还应该处理多个用户。 我尝试过使用向导,但由于没有太多文档,我无法处理内联键盘回调。 Sql部分不是什么大问题,我使用的是npm mysql 下面是我想出的代码:

我对Node.js还是个新手, 我正在尝试制作一个机器人,它会提示用户搜索一个单词,然后在MySQL数据库中查找匹配的行。 搜索过程应分为两个步骤:

用户被要求通过内联键盘选择一个选项,只有这样; 用户被要求写下要搜索的单词。 Bot应该在步骤1中的option选择的表中搜索数据库,查找步骤2中输入的单词,然后检索该行。 此外,bot还应该处理多个用户。 我尝试过使用向导,但由于没有太多文档,我无法处理内联键盘回调。 Sql部分不是什么大问题,我使用的是npm mysql

下面是我想出的代码:

const { Telegraf } = require('telegraf');
const session = require('telegraf/session');
const Stage = require('telegraf/stage');
const WizardScene = require('telegraf/scenes/wizard');
const bot = new Telegraf('token-here');

bot.start( (ctx) => {
    ctx.reply('Bot started!');
})

const menuKeyboard = [
    [
        {text: 'OPT1', callback_data: 'CB_OPT1'},
        {text: 'OPT2', callback_data: 'CB_OPT2'},
        {text: 'OPT3', callback_data: 'CB_OPT3'}
    ],
    [
        {text: 'OPT4', callback_data: 'CB_OPT4'},
        {text: 'OPT5', callback_data: 'CB_OPT5'},
        {text: 'OPT6', callback_data: 'CB_OPT6'}
    ]
]

bot.action(['CB_OPT1', 'CB_OPT2', 'CB_OPT3', 'CB_OPT4', 'CB_OPT5', 'CB_OPT6'], (ctx) => {
    ctx.deleteMessage();
    ctx.reply(`Insert search term:`);
    return ctx.wizard.steps[1](ctx); //Re-enters wizard?
})

//Wizzard setup
const superWizard = new WizardScene('super-wizard',
    //Step 1 - Ask option
    ctx => {
        ctx.reply("Select an option:", {
            reply_markup: {
                inline_keyboard: menuKeyboard
            }
        });
        ctx.wizard.state.data = {};
        return ctx.wizard.next();
        //Callback calls bot.action above
    },

    ctx => {
        ctx.deleteMessage();
        ctx.wizard.state.data.option = ctx.message.text;
    }
);

const stage = new Stage([superWizard]);

bot.use(session());
bot.use(stage.middleware());

bot.command('search', (ctx) => {
    //ctx.scene.enter('super-wizard');
    ctx.reply("Select an option:", {
        reply_markup: {
            inline_keyboard: menuKeyboard
        }
    });
})

bot.launch();
使用向导是最好的方法吗? 谢谢我刚开始: