discord.js v13 Какой код я бы использовал для сбора первого вложения (изображения или видео) из сборщика сообщений?

#node.js #discord.js

Вопрос:

Я искал везде и перепробовал все, что мог придумать, но ничего не нашел, все, казалось, провалилось.

Один бит кода, который я использовал до этого, не удался:

                 Message.author.send({ embeds: [AttachmentEmbed] }).then(Msg => {
                    var Collector = Msg.channel.createMessageCollector({ MessageFilter, max: 1, time: 300000 });
                    Collector.on(`collect`, Collected => {
                        if (Collected.content.toLowerCase() !== `cancel`) {
                            console.log([Collected.attachments.values()].length);
                            if ([Collected.attachments.values()].length > 0) {
                                var Attachment = [Collected.attachments.values()];
                                var AttachmentType = `Image`;
                                PostApproval(false, Mode, Title, Description, Pricing, Contact, Attachment[0], AttachmentType);
                            } else if (Collected.content.startsWith(`https://` || `http://`) amp;amp; !Collected.content.startsWith(`https://cdn.discordapp.com/attachments/`)) {
                                var Attachment = Collected.content.split(/[ ] /)[0];
                                var AttachmentType = `Link`;
                                PostApproval(false, Mode, Title, Description, Pricing, Contact, Attachment, AttachmentType);
                                console.log(Attachment)
                            } else if (Collected.content.startsWith(`https://cdn.discordapp.com/attachments/`)) {
                                var Attachment = Collected.content.split(/[ ] /)[0];
                                var AttachmentType = `ImageLink`;
                                PostApproval(false, Mode, Title, Description, Pricing, Contact, Attachment, AttachmentType);
                                console.log(Attachment)
                            }
 

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

1. Что не так с вашим текущим кодом?

2. Там написано, что есть вложение, когда я по какой-то причине отправляю текст. [Собранные.вложения.значения()].длина по какой-то причине равна 1.

Ответ №1:

[Collected.attachments.values()].length так будет всегда 1 . Почему? Ну, у вас есть эти 2 возможности:

 [ [] ] //length 1
[ [someMessageAttachment] ] //length 1
 

Правильный способ проверки-использовать оператор распространения ( ... )

 [...(Collected.attachments.values())].length //returns amount of attachments in the message
 

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

1. Из этого кода, как бы я получил первое значение?

2. Воспользуйся [...(Collected.attachments.values())][0]