Как сделать Discord.js бот получил последнее вложение на канале

#node.js #discord #discord.js

Вопрос:

Я пытаюсь сделать мой раздрай бот передачи последней вложений на канал но у меня возникают проблемы с отправкой.
Когда я использую «м.вложения.первый().URL-адрес», он говорит «необработанное отклонение обещания», и когда я использую «м.вложения.во-первых ()», он говорит «не удается отправить пустое сообщение».

 if (message.content.toLowerCase() === 'test'){
message.channel.messages.fetch().then(messages => {
    const firstAttachment = messages.filter((m) => m.attachments.first().url);
    message.channel.send(firstAttachment);
})} 
 

РЕДАКТИРОВАТЬ: я пробовал много разных вещей, но единственным, что дало мне какой-то результат, было это (результат был «неопределенным»).:

 if (message.content.toLowerCase() === 'test'){
message.channel.messages.fetch().then(messages => {
    const att = messages.filter(m => m.attachments.size > 0);
    message.channel.send(`${att.first().attachments.url}`)
})} 
 

Ответ №1:

Вы были так близки со своим вторым фрагментом кода! Вам просто нужно добавить еще .first() один после attachments .

     message.channel.messages.fetch().then(messages => {
        const att = messages.filter(m => m.attachments.size > 0);
        
        message.channel.send(att.first().attachments.first().url);
    });
 

Вероятно, вы также захотите убедиться att , что на самом деле имеет значение, прежде чем отправлять сообщение, иначе вы получите ошибки.