我需要帮助在Bot菜单中重新分配变量

Ste*_*oxy 6 javascript bots discord discord.js

我正在尝试为我的机器人构建一个设置菜单,服务器所有者可以使用该菜单来配置该机器人。所有者键入时将触发菜单=setup。我希望该机器人回复一些嵌入消息,询问用户问题,以便正确配置该机器人。

这是我的第一个Discord.js项目,因此我不了解语法,但尝试学习。=当机器人在服务器中实现时,我有一个名为prefix的常量变量分配给该变量。

Bot菜单上的第一个提示要求用户将更prefix改为所需的任何内容。我需要帮助来了解如何将我的原始常量变量重新分配给他们所请求的新前缀。

var PREFIX = '=';

bot.on('message', message=>{
    let args = message.content.substring(PREFIX.length).split(" ");

    switch(args[0]){
        case 'setup':
            const embed = new Discord.RichEmbed()
            .setTitle('Step 1 of 1')
            .setDescription('Set your Prefix')
            .setColor(0xF1C40F)
            message.channel.sendEmbed(embed);
            //I want the user to now enter their own PREFIX and have the
            //bot save their responce as the new PREFIX
        break;
    }
})
Run Code Online (Sandbox Code Playgroud)

我要发生的是,当用户键入所需的内容时prefix,机器人将重新分配prefix代码,并删除机器人问题,然后用户响应并开始提示下一个问题。

kem*_*ica 0

您无法让prompt用户回复(据我所知),您需要等待用户编写另一条消息并对其进行分析。

消息链接到用户,因此当用户启动更改前缀的命令时,您需要确保同一用户更改了前缀。

这未经测试,但应该接近您正在寻找的解决方案。


let prefix = '=';
let expectingResponseFrom = null;

bot.on('message', message=>{

    // same user sent a response
    if(expectingResponseFrom !== null && expectingResponseFrom === message.user.id){
      expectingRepsonseFrom = null;
      prefix = message.content.trim();
      return;
    }

    const regex = new RegExp(`^${prefix}([^\s]+)`, 'g');
    cosnt command = regex.exec(message.content)[1] || '';

    switch(command){
        case 'setup':
            const embed = new Discord.RichEmbed()
            .setTitle('Step 1 of 1')
            .setDescription('Set your Prefix')
            .setColor(0xF1C40F)
            message.channel.sendEmbed(embed);
            // memorize user who initiated a prefix change
            expectingResponseFrom = message.user.id;
        break;
    }
})
Run Code Online (Sandbox Code Playgroud)

正则表达式允许以更好的(我认为)方式获取命令


let prefix = '=';
let expectingResponseFrom = null;

bot.on('message', message=>{

    // same user sent a response
    if(expectingResponseFrom !== null && expectingResponseFrom === message.user.id){
      expectingRepsonseFrom = null;
      prefix = message.content.trim();
      return;
    }

    const regex = new RegExp(`^${prefix}([^\s]+)`, 'g');
    cosnt command = regex.exec(message.content)[1] || '';

    switch(command){
        case 'setup':
            const embed = new Discord.RichEmbed()
            .setTitle('Step 1 of 1')
            .setDescription('Set your Prefix')
            .setColor(0xF1C40F)
            message.channel.sendEmbed(embed);
            // memorize user who initiated a prefix change
            expectingResponseFrom = message.user.id;
        break;
    }
})
Run Code Online (Sandbox Code Playgroud)