Как сделать так, чтобы он отвечал только в том случае, если его точное (Discord.JS )

#javascript #node.js #discord.js

#javascript #node.js #discord.js

Вопрос:

Я делаю это так, что если я наберу @Wide#9256, он ответит

вот мой код:

 if (message.mentions.members.first() !== undefined) {

    if (message.mentions.members.first().id === bot.user.id) { 

        const embed = new Discord.MessageEmbed()
        .setTitle("Prefix")
        .setDescription('My Prefix is "!"')
        .setFooter('Type !help for more information')
        .setThumbnail(bot.user.displayAvatarURL())
        .setColor('RANDOM')
        message.channel.send(embed)
  
   
  
    }
  
   }
 

Но в этом коде он также отвечает, если я сказал что-то вроде «Привет @Wide # 9256 h», я хочу, чтобы он отвечал, если это только «@Wide # 9256» и ничего больше.

Я пытался

 if (message.content === message.mentions.members.first().id === bot.user.id)
 

Не работает, заранее благодарю

Комментарии:

1. Не могли бы вы напрямую сравнить с bot.user.id без промежуточного сравнения?

Ответ №1:

В этом случае вам просто нужно напрямую сравнить содержимое сообщения с необработанным форматом упоминания ( <@ID> )

 // this leaves no spaces for anything before or after the mention
if (message.content === bot.user.toString()) { // generates mention format
  // ...
};
 

Комментарии:

1. Теперь это как-то не работает, неделю назад это работало, а теперь нет

Ответ №2:

Исправленный код:

     if(message.mentions.members.first() amp;amp; message.content.split(' ').length === 1) {
        // Your code here
    }
 

Как это работает:

message.content.split(' ') Возвращает массив всех частей сообщения в виде отдельных элементов, разделенных ' ' символом . Для получения дополнительной информации: https://www.w3schools.com/jsref/jsref_split.asp

Комментарии:

1. Как насчет '@Person#0000test'