Estoy trabajando en un proyecto de bot que tiene una función de invitación, actualmente tengo problemas con este comando que permite que el bot tome el enlace de invitación permanente del servidor (que hizo el propietario/administrador) y envíe el enlace de invitación al canal donde está el comando ejecutado o envíe el enlace al usuario dm después de que hagan el comando
Aquí está mi código que usé
y aquí está el resultado que obtuve https://i.stack.imgur.com/AkoV8.png
const db = require('quick.db'); module.exports = { config: { name: "addpermaserverinvite", category: "misc", description: "Get the permanent invite link of your server!", accessableby: ["moderators", "admins", "owner"], usage: "p!addpermaserverinvite", aliases: ["permaserverinvite"], }}[enter image description here][1] module.exports.run = async (bot, message, args) => { let invite = new MessageEmbed() .setColor('ORANGE') .setTitle('Here is your permanent invite link!') .setDescription(`${message.guild.name}'s permanent invite link is: ${message.guild.invite}`) .setFooter('PhoeniX Bot Invite Link') .setTimestamp() message.channel.send(invite) }En primer lugar, puede filtrar las invitaciones con la opción maxAge , que es la opción de caducidad de tiempo y maxUses como cuántos usos deberían ser. Si desea filtrarlo por tiempo de caducidad infinito, puede filtrarlo como maxAge: 0 .
Para obtener invitaciones, debe tener "MANAGE_SERVERS" al menos.
let invites = await message.guild.invites.fetch() let infiniteInvite = invites.filter(invite => invite.maxAge === 0 && invite.maxUses === 0).first() if(infiniteInvite){ message.channel.send({embeds: [new MessageEmbed().setDescription(`Your invite link for server **${message.guild.name}**: [Go!](https://discord.gg/${infiniteInvite.code})`)]}) }Suponiendo que solo hay 1 invitación creada por el propietario, puede usar el siguiente código. Si hay más de uno, esto no funcionará.
... module.exports.run = async (bot, message, args) => { const owwerId = message.guild.ownerId const invite = await message.guild.invites.fetch().then(invites => invites.find(inv => inv.inviterId === owwerId)) const inviteEmbed = new MessageEmbed() .setColor('ORANGE') .setTitle('Here is your permanent invite link!') .setDescription(`${message.guild.name}'s permanent invite link is: https://discord.gg/invite/${invite.code}`) .setFooter('PhoeniX Bot Invite Link') .setTimestamp() // if using discord v12 message.channel.send(inviteEmbed) // to DM it message.author.send(inviteEmbed) // if using discord v13 message.channel.send({ embeds: [inviteEmbed] }) // to DM it message.author.send({ embeds: [inviteEmbed] }) }