Ошибка типа: не удается прочитать свойство ‘content’ неопределенного значения с помощью try catch?

#node.js #discord #discord.js

#node.js #Discord #discord.js

Вопрос:

Я попытался добавить try и catch в свой код, чтобы он делал то, что я хочу, однако я получаю эту ошибку:

 TypeError: Cannot read property 'content' of undefined
 

Это мой код:

 if (!message.guild.me.hasPermission(`MANAGE_CHANNELS`)) return message.reply('I lack the required permissions to run this command. (Required Permissions: ``MANAGE_CHANNELS``)');          
        if(message.member.hasPermission("MANAGE_CHANNELS")){
            const channel = message.channel;
            
            const Discord = require("discord.js");
            let role = message.mentions.roles.first() || message.guild.roles.cache.find(role => role.name === args.join(" "));
            if(!role){
                message.reply("please mention a role.")
            } else{
                message.reply('Are you sure you want to continue this command, it will disallow send permissions from the role you mentioned. Type ``yes`` to continue.')
                let filter = msg => msg.author.id == message.author.id
                message.channel.awaitMessages(filter, {max: 1, time: 20000}).then(collected => {           
  (Error line)> if (collected.first().content.toLowerCase() !== 'yes') return;
                    try {
                        const embed = new Discord.MessageEmbed()
                                    .setTitle("Channel Locked")
                                    .setColor("RED")
                                    .setDescription(`Channel locked to the specified role`)
                    
                                    message.channel.updateOverwrite(role, {
                                        SEND_MESSAGES: false
                                    })
                                    .then(channel => channel.send(embed))
                                    .catch(console.error)
                    }
                    catch(error) {
                        message.reply("Command either timed out or there was an error.")
                    }
                    })   
            }
                
        }
 

Я совсем не разбираюсь в try и catch, поэтому предполагаю, что сделал что-то не так.
Спасибо

Ответ №1:

проблема собрана.first() ничего не возвращает. попробуйте console.log(collected) выполнить отладку.

может быть, вы не получаете сообщение