Cuando trato de ejecutar mi comando, en lugar de los errores que especifiqué, obtengo los errores de la consola y el resultado es: Failed to ban the user
y la consola dice DiscordAPIError: Interaction has already been acknowledged.
y/o missing permissions
. Pero si intento banearme con una cuenta que no tiene derechos, me banean a mí mismo. Entonces, si pruebo /ban user: @tryfyfu
con mi cuenta (la cuenta sin derechos), todavía puedo prohibirme, pero el bot debería decir: "❌ | ¡No puedes prohibir a un usuario del gremio!" respuesta y lo mismo ocurre con las otras funciones como invalid member
o ❌ | You can't ban yourself
y así sucesivamente Aquí está el código. Sería bueno si alguien pudiera ayudarme.
const {
Client,
CommandInteraction,
Message,
MessageEmbed,
MessageActionRow,
MessageButton
} = require('discord.js');
module.exports = {
name: 'ban',
description: 'Ban a user',
options: [
{
name: "user",
description: "Choose the user to ban.",
type: "USER",
required: true
},
{
name: "reason",
description: "reason for punishment",
type: "STRING",
required: false
}
],
run: async (client, interaction, options) => {
const member = interaction.options.getMember("user")
const reason = interaction.options.getString("reason") || "No reason given"
if(!interaction.member.permissions.has("BAN_MEMBERS")) {
const buttons = new MessageActionRow()
.addComponents(new MessageButton()
.setLabel("Permissions")
.setEmoji("⚙️")
.setStyle("LINK")
.setURL("https://discord.com/developers/docs/topics/permissions"))
const embed = new MessageEmbed()
.setColor("RED")
.setDescription("❌ | You can't ban a user from the guild!")
interaction.reply({
embeds: [embed],
components: [buttons],
ephemeral: true
})
}
if(member === interaction.member) {
const embed = new MessageEmbed()
.setColor("RED")
.setDescription("❌ | You can't ban yourself")
interaction.reply({
embeds: [embed]
})
}
if (!member) {
const embed = new MessageEmbed()
.setColor("RED")
.setDescription("❌ | Invalid Member")
interaction.reply({
embeds: [embed],
ephemeral: true
})
}
try {
await interaction.guild.bans.create(member, {
reason
})
const embed = new MessageEmbed()
.setColor("GREEN")
.setDescription(`✅ | ${member.user.tag} was banned for: ${reason}`)
return interaction.reply({
embeds: [embed]
})
}
catch(err){
if (err){
console.error(err)
const embed = new MessageEmbed()
.setColor("RED")
.setDescription(`❌ | Failed to ban ${member.user.tag}`)
return interaction.reply({
embeds: [embed]
})
}
}
}
}
Solución del problema
Se cambiaron dos cosas a continuación (método diferente de prohibición y se corrigió un error). Se anotan a continuación.
const {
MessageEmbed,
MessageActionRow,
MessageButton
} = require('discord.js');
module.exports = {
name: 'ban',
description: 'Ban a user',
options: [{
name: "user",
description: "Choose the user to ban.",
type: "USER",
required: true
},
{
name: "reason",
description: "reason for punishment",
type: "STRING",
required: false
}
],
run: async (client, interaction, options) => {
const member = interaction.options.getUser("user")
//.getMember is not a valid function as the type specified above is "USER"
const reason = interaction.options.getString("reason") || "No reason given"
if (!interaction.member.permissions.has("BAN_MEMBERS")) {
const buttons = new MessageActionRow()
.addComponents(new MessageButton()
.setLabel("Permissions")
.setEmoji("⚙️")
.setStyle("LINK")
.setURL("https://discord.com/developers/docs/topics/permissions"))
const embed = new MessageEmbed()
.setColor("RED")
.setDescription("❌ | You can't ban a user from the guild!")
return interaction.reply({
embeds: [embed],
components: [buttons],
ephemeral: true
})
}
if (member === interaction.member) {
const embed = new MessageEmbed()
.setColor("RED")
.setDescription("❌ | You can't ban yourself")
return interaction.reply({
embeds: [embed]
})
}
if (!member) {
const embed = new MessageEmbed()
.setColor("RED")
.setDescription("❌ | Invalid Member")
return interaction.reply({
embeds: [embed],
ephemeral: true
})
}
// changed up the part below
try {
const embed = new MessageEmbed()
.setColor("GREEN")
.setDescription(`✅ | ${member.user.tag} was banned for: ${reason}`)
interaction.reply({
embeds: [embed]
})
return member.ban({
reason: reason
})
} catch (err) {
if (err) {
console.error(err)
const embed = new MessageEmbed()
.setColor("RED")
.setDescription(`❌ | Failed to ban ${member.user.tag}`)
return interaction.reply({
embeds: [embed]
})
}
}
}
}
No hay comentarios:
Publicar un comentario