首页 > 解决方案 > TypeError:无法读取未定义的属性“表情符号”

问题描述

我正在尝试为我的不和谐机器人制作表情符号反应,在我单击“❌”表情符号之前一切正常,但是当我单击“❌”时 表情符号我收到此错误: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) && 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']
}

标签: javascriptnode.jsdiscord.jsbots

解决方案


错误的实际原因是这一行:

const reaction = collected.first();

此处反应的值未定义,因此您收到错误消息。您正在尝试读取未定义值的表情符号属性。您可以将条件更改为:

if (reaction && reaction.emoji && reaction.emoji.name){
////logic
}

此外,我可以看到不和谐版本中存在一些问题,这可能会给您一个未定义的值。检查这个线程它可能会帮助你。

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


推荐阅读