По какой-то причине мой оператор if срабатывает, несмотря ни на что - PullRequest
0 голосов
/ 21 июня 2020
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 и не получил ошибок в моей консоли! Спасибо за любую помощь!

1 Ответ

0 голосов
/ 21 июня 2020

Если вы сделаете отступ в коде более единообразно, то сразу заметите, что фигурные скобки должны быть несовпадающими, потому что } в последней строке не может одновременно закрывать блок elseif и блок async msg => {.

Причина, по которой ваш код компилируется, заключается в том, что блок elseif заканчивается дополнительным } в строке await GuildModel.findOneAndUpdate(...)};, поэтому return msg.channel.send(...) находится за пределами оператора if и всегда выполняется.

Чтобы избежать таких ошибок , помните, что всегда следует делать отступы в коде последовательно (одна фигурная скобка на уровень отступа). Кроме того, старайтесь избегать написания настолько длинных и запутанных строк, что лишний } не будет замечен.

...