我正在尝试制作一个智能问题机器人,我想知道是否存在一种方法,如果先执行命令A,则允许执行命令B
} else if(message.content.match(/Discord/gi)){
const Embed = new Discord.MessageEmbed()
}
这将查找包含不和谐的消息(小写或大写) 我不希望该漫游器查找包含Discord的每条消息。 我希望只有先执行前面的命令才能执行,然后再禁用它,听起来很复杂,但是可能
答案 0 :(得分:1)
假设我正确理解了您的意图,则只想在调用命令A后再查找命令B,然后一旦执行了命令B,就想停止寻找它。这可以通过使用搜索命令B的消息收集器来实现。这是一些示例代码(在最新版本中有效):
if (message.content.match("Command A")) {
//Execute your command A code
message.channel.send("Did some command A stuff");
//After command A code is executed, do the following:
var filter = m => m.author.id == message.author.id;
//Creates a message collector, to collect messages sent by the same user
//When max is 1, only 1 message will be collected and then the collector dies
const collector = new Discord.MessageCollector(message.channel, filter, {max: 1});
collector.on("collect", msg => {
//msg is the new message that the user just sent, so check if it contains Discord
if(msg.content.match(/Discord/gi)){
//Do your command B stuff:
const Embed = new Discord.MessageEmbed()
}
});
}
此代码检查命令A,并执行命令A代码。然后,它创建一个消息收集器。消息收集器将一直等到刚刚执行命令A的用户发送另一条消息。用户发送另一条消息后,它将运行代码以侦听collect
事件。因此,我们采用收集的消息(在这种情况下为msg
),并检查它是否与“ Discord”匹配。从那里,您可以执行Command B功能。
请注意,用户在执行命令A后发送消息后,收集器立即结束。这意味着,如果用户在1次尝试中未输入包含“ Discord”的消息,则收集器将结束,并且用户必须再次执行命令A,才能再次尝试执行命令B。如果要允许用户更多尝试执行命令B,或者希望用户在执行命令A之后可以连续执行命令B多次,则需要增加max
。