Javascript Discord.js是否存在消息循环?

Javascript Discord.js是否存在消息循环?,javascript,loops,discord.js,bots,Javascript,Loops,Discord.js,Bots,我正在尝试在Discord机器人(Discord.js)上为一个简单的游戏编写一个包含消息循环的循环 以下是迄今为止我在此模块的代码: message.channel.awaitMessages(filter2, { max: 1 }) .then(collected2 => { const response2 = collected2.first(); if (response1.author.id === Figh

我正在尝试在Discord机器人(Discord.js)上为一个简单的游戏编写一个包含消息循环的循环

以下是迄今为止我在此模块的代码:

message.channel.awaitMessages(filter2, { max: 1 })
            .then(collected2 => {
            const response2 = collected2.first();
            if (response1.author.id === Fighter1 && response2.author.id === Fighter2)
                message.channel.send(`Round #1, FIGHT!!`);
                message.channel.send(`${Fighter1.user.username} Punch, Kick, or Block?`);
                message.channel.awaitMessages(filter1, { max: 1 })
                .then(collected => {
                    const response = collected.first();
                    });
                    if (response.author.id === Fighter1)
                        const Move1 = response.content
                    else
                        message.channel.send(`Not your turn!`)

我想将其还原为wait.Messages,如果满足else条件(并且在此过程中不发送“not your turn!”消息)。有人能帮忙吗?

我不熟悉discord.js,但首先我要删除此承诺链并使用async/wait。您可以随时在以后还原此内容,但这将使其更易于阅读:

//等待第一个响应
const collected2=await message.channel.await messages(filter2,{max:1});
const response2=collected2.first();
if(response1.author.id==Fighter1&&response2.author.id==Fighter2){
等待消息。频道。发送(`Round#1,FIGHT!!`);
}
//提示输入攻击
wait message.channel.send(`${Fighter1.user.username}打孔、踢或阻塞?`);
const collected=await message.channel.await messages(filter1,{max:1});
const response=collected.first();
//进程攻击响应
if(response.author.id==Fighter1){
const Move1=response.content;
}
否则{
等待消息。频道。发送(`不轮到你!`);

}
当你说“并且在过程中不要垃圾邮件发送‘not your turn!’消息”时,你的意思是你只想发送该消息一次,而不管人们在不轮到他们的时候写了多少次消息?我的意思是,如果它转到else子句,当它围绕if子句循环时,直到另一个用户发布某个消息时,它才会得到满足。我们不希望它在等待另一条消息时滥发该消息。因此,我没有包括代码的第一部分,它在其中标识了两架战斗机。开始游戏的命令是f$fight@user1@user2,然后第一位代码等待两个指定用户响应开始比赛。(我决定故意只检查用户响应的ID,以确认这是正确的两个用户,而不必费心确保他们使用了正确的关键字,这样他们就可以说任何话继续前进。这将移动到循环部分,在循环部分,它要求两个玩家依次选择、打孔、踢腿或拦网。这两个输入将在使用d20 RNG脚本。所以你的大部分代码都很棒,但我没有得到Move1=response.content部分。我仍然需要为此编写一个模块来处理两个输入的移动(每个玩家一个)它不仅仅是向所选的移动发布响应消息。它必须使用d20 RNG来确定响应。@Startropic1,
const Move1=response.content;
只是从原始问题中逐字复制而来。如果您可以提供更多信息,说明您希望如何处理
waitForAttackInput
中的输入,那么我可以希望能提供更多帮助。我已经更新了我的答案,删除了
const Move1=response.content;
部分,因为它似乎对您没有任何意义。这对您@Startropic1更清楚了吗?噢,天哪,现在我记起来了Move1=response.content的用途。我将变量Move1定义为玩家选择的任何单词,(打、踢或挡)移动1,(在第二个玩家输入他们的响应后移动2),然后用d20 RNG进行检查。然后,机器人根据两次d20转鼓的结果发回一条消息。我知道常量是一个永久变量,但在循环中,每次循环运行时都可以重新定义它。因此,使用常量应该很好,因为我理解它。