在discord.js中切换命令的前缀

时间:2020-03-01 10:30:01

标签: discord.js

该网站上的第一篇文章,如果我没有正确格式化某些内容,那就不好了。我一直在尝试发出一个更改前缀命令,但是我不知道如何检查下一条消息内容中要使用的变量而不是旧前缀。

msg.reply("Which prefix do you want?");
        const collector = new Discord.MessageCollector(msg.channel, m => m.author.id === msg.author.id, { time: 5000 });
        console.log(collector)
        collector.on('collect', msg => {
            newprefix=collector.content();
          msg.reply('Prefix succesfully changed!');
        });

1 个答案:

答案 0 :(得分:0)

我强烈建议您使用awaitMessages方法。首先,您需要定义一个过滤器,一个委托函数,如果反应是您想要的,该函数将返回true。通常,在命令/响应设置中,您需要一个过滤器来指示原始命令调用者已答复。

const filter = (reaction, user) => {
    return user.id === msg.author.id;
};

然后可以为awaitMessages定义选项。 (通常使用awaitMessages方法来内联执行此操作,如果您觉得更清楚就可以了)

const options = { 
    max: 1, 
    time: 30000,
    errors: ['time'] 
}

以上示例在30秒内接受1条消息,否则会引发异常。

最后,您准备开始...

msg.reply("Which prefix do you want?").then(() => {
    msg.channel.awaitMessages(filter, options)
        .then(collected => {
            newprefix = collected.first();
            // Record newprefix to a persistent config here
            msg.reply('Prefix successfully changed!');
        })
        .catch(collected => {
            msg.reply("You didn't respond fast enough.");
        });
}

请记住,这是异步发生的,因此,如果您需要在某个地方(例如JSON配置文件)编写newprefix,则应该在.then

的范围内进行操作