Ошибка типа: не удается прочитать свойство ’emoji’ неопределенного

#javascript #node.js #discord.js #bots

#javascript #node.js #discord.js #боты

Вопрос:

Я пытаюсь вызвать реакцию emoji для моего бота discord, все в порядке, пока я не нажму «❌» emoji, но когда я нажимаю «❌» emoji, я получаю эту ошибку: TypeError: Cannot read property 'emoji' of undefined

и ошибка показывает эту строку : if (reaction.emoji.name === '❌')

 const Discord = require("discord.js");
const ayarlar = require("../ayarlar.json");

module.exports.run = async (bot, message, args) => {

    let gonderenKisi = message.author;
    let mesaj = args.slice(0).join(" ");
    if(!mesaj) return message.reply("**➤ Mesaj Atabilmek İçin Bir Mesaj Yazmalısın!**").then(message => {
        message.delete({ timeout: 5000 });
    });
  
  const filter = (reaction, user) => {
            return ['❌'].includes(reaction.emoji.name) amp;amp; user.id === message.author.id;
        };
  
    const sEmbed = new Discord.MessageEmbed()
        .setDescription(`➤ `   mesaj)
        .setAuthor(`➤ Yeni Bir Fotoğraf Paylaşıldı !`)
        .setThumbnail(message.guild.iconURL())
        .setColor('RANDOM')
        .setFooter(`➤ Fotoğraf Atan: ${message.author.username}`, message.author.displayAvatarURL())
        .setTimestamp(message.createdAt)
    message.delete();
    message.channel.send(sEmbed).then(e => 
      e.react("❤️")).then(e =>
      e.message.react("❌")).catch(e => {

        console.error('Emojiler De Sorun Var.');
    });

message.awaitReactions(filter, { max: 1 })
    .then(collected => {
  
     const reaction = collected.first();
  
     if (reaction.emoji.name === '❌') {

            collected.on('collect', () => {
              
                message.delete();

                var s2Embed = new Discord.MessageEmbed()

                .setTitle(`${message.author.username} Mesajın Silindi.`)

                .setColor('RANDOM')

                .setDescription(`Mesajı Silen : ${message.author.username}`, message.author.displayAvatarURL())
                
                message.channel.send(s2Embed)
            });
        }
   

   }).catch(e => {
  console.error(e)
})
};


module.exports.config = {
    name: 'instagram',
    aliases: ['i']
}
  

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

1. Это ` собрано. first()` возвращает значение undefined для вас. Вам нужно сначала проверить, что он возвращает желаемый объект, а затем reaction будет иметь emoji свойство

Ответ №1:

Фактической причиной ошибки является эта строка:

 const reaction = collected.first();
  

Здесь значение reaction не определено, поэтому вы получаете ошибку.Вы пытаетесь прочитать свойство emoji с неопределенным значением.Вы можете изменить условие на:

 if (reaction amp;amp; reaction.emoji amp;amp; reaction.emoji.name){
////logic
}
  

Также я вижу, что в версии discord есть какая-то проблема, которая, вероятно, дает вам неопределенное значение. Проверьте этот поток, это может вам помочь.

https://github.com/discordjs/discord.js/issues/3868