#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. это работает только тогда, когда в сообщении есть изображение, а не если в нем есть только текст