【问题标题】:TypeError: Cannot read property 'emoji' of undefinedTypeError:无法读取未定义的属性“表情符号”
【发布时间】:2021-02-05 08:15:23
【问题描述】:

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

【问题讨论】:

  • 这个 `collected.first()` 为你返回 undefined。您需要首先验证它是否返回了您想要的对象,然后 reaction 将具有 emoji 属性

标签: javascript node.js discord.js bots


【解决方案1】:

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

const reaction = collected.first();

这里的反应值是 undefined 所以你得到了错误。你正在尝试读取一个未定义值的表情符号属性。你可以将条件更改为:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2020-08-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多