Получение URL-адреса изображения из сообщения

#node.js #discord #discord.js

#node.js #Discord #discord.js

Вопрос:

Я хочу получить URL-адрес изображения или само изображение из сообщения и поместить его в свою вставку. Я понятия не имею, как это сделать самому, надеюсь, вы сможете мне помочь 🙂

 client.on('messageReactionAdd', (reaction, user, message) => {
const eggsa = client.emojis.find(emoji => emoji.name === "eggsa");
if (reaction.emoji.name === 'eggsa') {
  const msg = reaction.message;
  const guild = msg.guild;
  const guildMembers = guild.members;
  const guildMember = guildMembers.get(user.id);
  if (!guildMember.roles.some(r=>["Leder"].includes(r.name)) ) return guildMember.send(" ',:^\ ");
    const message = reaction.message;
    const kanal = reaction.message.guild.channels.find('name', 'sitater');
    var embed = new Discord.RichEmbed()
    .setDescription(message.content)
    .setTimestamp()
    .setFooter(message.author.username, reaction.message.author.avatarURL)
    .setImage()
    kanal.send({embed});
}
});
  

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

1. Добро пожаловать в Stackoverflow! Не могли бы вы предоставить нам более подробную информацию, пожалуйста. Это обычное текстовое сообщение в текстовом канале гильдии или это RichEmbed? Является ли сообщение только URL-адресом с изображением или в нем есть и другой текст, и вы хотите найти, где находится URL-адрес? … Ответы на эти вопросы помогли бы нам помочь вам! 🙂

2. Это обычное текстовое сообщение в текстовом канале гильдии, и к сообщению были бы прикреплены текст и изображение. Обычно изображение просто загружается непосредственно в discord, поэтому прямой ссылки не будет. Я хочу, чтобы оно воссоздало сообщение в виде RichEmbed, чтобы оно выглядело как цитата. Надеюсь, это поможет и ты 🙂 imgur.com/IMXDv9Y я хочу, чтобы это выглядело примерно так

Ответ №1:

Вы можете просто использовать .attachments свойство объекта message. Это возвращает вам все вложения этого сообщения, включая все изображения. С этого момента вы можете использовать свойство .url , и это даст вам URL-адрес изображения, который вы можете добавить при внедрении.

В следующем коде я добавил проверку, есть ли вообще вложения. Если да, добавьте URL-адрес первого изображения в качестве изображения для вставки.

Вот код:

     client.on('messageReactionAdd', (reaction, user, message) => {
    const eggsa = client.emojis.find(emoji => emoji.name === 'eggsa');
    if (reaction.emoji.name === 'eggsa') {
        const msg = reaction.message;
        const guild = msg.guild;
        const guildMembers = guild.members;
        const guildMember = guildMembers.get(user.id);
        if (!guildMember.roles.some(r => ['Leder'].includes(r.name))) return guildMember.send(" ',:^\ ");
        const message = reaction.message;
        const kanal = reaction.message.guild.channels.find('name', 'sitater');
        const embed = new Discord.RichEmbed()
            .setDescription(message.content)
            .setTimestamp()
            .setFooter(message.author.username, reaction.message.author.avatarURL);

        if (message.attachments.size !== 0) {
            embed.setImage(message.attachments.first().url);
        }

        kanal.send({ embed });
    }
});
  

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

1. Происходит сбой, когда я добавляю эмодзи в сообщение, и можете ли вы помочь мне показать ошибки

2. Существует ли событие emoji? Попробуйте удалить эту строку этого смайлика, потому что это другой вопрос. Попробуйте протестировать код с сообщением.вложения, пожалуйста @blydex

3. ошибка: необработанное предупреждение promiserejectionwarning: ошибка типа: не удается прочитать свойство ‘url’ неопределенного

4. Я исправил проблему в своем коде. Не могли бы вы попробовать это еще раз, пожалуйста @blydex

5. это работает только тогда, когда в сообщении есть изображение, а не если в нем есть только текст