#javascript #discord #discord.js
Вопрос:
Я хочу получить все приглашения, созданные в гильдии, и вставить все приглашения во встроенный формат, используя только ссылки на приглашения.
Ошибка: Ошибка типа: приглашения.все это не функция
module.exports = {
name: `listallinvs`,
description: `Displays all the invites created within the server.`,
async execute(message, args) {
message.guild.fetchInvites().then((invites) => {
let allInvites = invites.all();
const printinvites = new Discord.MessageEmbed()
.addField(`Invite URL: ${allInvites.url}`)
message.channel.send(printinvites);
});
},
};
Ответ №1:
fetchInvites
возвращает коллекцию приглашений, и в ней нет .all()
метода, поэтому вы получили ошибку.
Вместо этого вы можете получить все приглашения, проверить, есть ли они, и, если есть, повторить их и создать новое поле встраивания для каждого. Вы можете использовать .map()
, который возвращает новый массив. Вы можете использовать этот массив с помощью .addFields()
метода MessageEmbed, который принимает массив объектов (где объект имеет a name
и value
ключ).
Ознакомьтесь с рабочим кодом ниже:
message.guild.fetchInvites().then((invites) => {
if (!invites.size) return message.channel.send('No invites found');
let allInvites = invites.map((i) => ({
name: 'Invite',
value: `**Inviter:** ${i.inviter}
**Code:** [${i.code}](https://discord.gg/${i.code})
**Used by:** ${i.uses} of ${i.maxUses === 0 ? '∞' : i.maxUses}
**Expires on:** ${
i.maxAge
? new Date(i.createdTimestamp i.maxAge * 1000).toLocaleString()
: 'never'
}`,
inline: true,
}));
message.channel.send(new Discord.MessageEmbed().addFields(allInvites));
});
Вы также можете просто добавить ссылки на приглашения в качестве значений полей:
let allInvites = invites.map((i) => ({
name: 'Invite link',
value: `https://discord.gg/${i.code}`,
}));
message.channel.send(new Discord.MessageEmbed().addFields(allInvites));
Или вы можете полностью отказаться от полей встраивания и просто использовать описание
let allInvites = invites.map((i) => `https://discord.gg/${i.code}`);
message.channel.send(
new Discord.MessageEmbed()
.setTitle('Invite Links')
.setDescription(allInvites.join('n')),
);
Комментарии:
1. Спасибо за помощь, я действительно ценю вашу помощь.