【问题标题】:For some reason my if statement triggers no matter what出于某种原因,我的 if 语句无论如何都会触发
【发布时间】:2020-10-11 01:42:34
【问题描述】:
bot.on('message', async msg => {
    let args = msg.content.split(" ");
if(!msg.guild) return;
if(msg.author.bot) return;

if (msg.content === '<prefix>') {

    const req = await GuildModel.findOne({ id: msg.guild.id });
    if (!req) return msg.reply('Sorry! doc doesnt exist.');
    return msg.reply(`Found a document! Prefix: ${req.prefix} Suffix: ${req.suffix}`);

}else if(msg.content.includes(`<setprefix>`)) {
    const req = await GuildModel.findOne({ id: msg.guild.id });
    if(!req) return msg.reply('Sorry there was an error!');
    await GuildModel.findOneAndUpdate({ id: msg.guild.id }, { $set: { suffix: `${args[1]}`}}, { new: true})};
    
    return msg.channel.send('Your new prefix is asdasd')

})

所以本质上我的问题是,当我测试机器人时,在机器人所在的任何服务器中发送的任何消息都会以Your new prefix is asdasd 进行响应,我试图排除故障,但我已经达到了我的极限并且无法弄清楚。我正在使用 discord.js,并且在我的控制台中没有收到任何错误!感谢您的帮助!

【问题讨论】:

  • 请添加一些显示行为的示例输入。
  • 在任何频道中发送任何内容都会导致机器人发送Your new prefix is asdasd这一行

标签: javascript if-statement discord discord.js


【解决方案1】:

如果您更一致地缩进您的代码,您会立即注意到您的花括号必须不匹配,因为最后一行的 } 不能同时关闭 elseif 块和 async msg =&gt; { 块。

您的代码编译的原因是 elseif 块以 await GuildModel.findOneAndUpdate(...)}; 行上的额外 } 结束,因此 return msg.channel.send(...) 在 if 语句之外,并且始终被执行。

为避免此类错误,请注意始终一致地缩进代码(每个缩进级别一个大括号)。另外,尽量避免写出太长太复杂以至于没有注意到额外的} 的行。

【讨论】:

  • 解决了!非常感谢!我是一个非常新的开发人员,所以我必须牢记正确缩进的提示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 2020-03-19
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多