#javascript #node.js #discord #discord.js
Вопрос:
Бот реагирует только тогда, когда содержимое author.name
точно, но если у него есть дополнительное слово, оно не работает, но не выдает пример ошибки:
const ListClaims = ["rick sanchez", "alex", "juan"];
rick sanchez
не имеет ошибки, потому что это с точностью до ListClaims
rick sanchez morty
имеет ошибку, потому что в нем есть дополнительные буквы, которые morty
,
var ListClaims = ["rick sanchez","alex","juan"];
if(message.embeds.length >= 0)
// Check if the Message has embed or not
{
let embed = message.embeds
// console.log(embed) just a console.log
for(let i = 0; i < embed.length; i )
{
if (!embed[i] || !embed[i].author || embed[i].author.name === null) return;
// check each embed if it has setAuthor or not, if it doesnt then do nothing
{
if(embed[i].author.name.toLowerCase().includes(ListClaims))
// check each embed if it includes word
{
message.react('🎉')
}
}
}
}
Комментарии:
1. Можете ли вы четко сформулировать, какова ваша цель? Ваш вопрос-это просто изложение того, что происходит в данный момент.
2. Я отформатировал ваш пост, но фрагмент содержит некоторые ошибки (призрачные скобки), поэтому я не трогал ваш код, вы должны исправить это сами, так как я не хочу ломать ваше приложение 🙂
Ответ №1:
Я переформулировал ваш код, чтобы его было проще и легче читать. Если вы приведете лучший пример того, что вы хотите, чтобы произошло, я могу отредактировать этот ответ, чтобы решить его лучше.
function messageHandler() {
const msg = {
embeds: [
{ author: { name: "alex" }},
{ author: { name: "john"}},
{ author: { name: "rick sanchez morty"}},
]
}
const listClaims = ["rick sanchez", "alex", "juan"];
// 0 is falsey by default, so you dont have to check if it's == 0.
if (!msg.embeds.length) return;
// Check if the Message has embed or not
msg.embeds.forEach(embed => {
// "", null and undefined are also falsey, so we don't need to check them.
// also this if statement is not needed, since you can just do Array.includes().
if (!embed.author.name) return;
// .includes() is an array method, not a string method, so you have to do Array.includes(target), not target.includes(array).
if (listClaims.includes(embed.author.name.toLowerCase())) message.react('🎉');
});
}
const message = {
react: console.log
};
messageHandler()