GOOGLE ADS

martes, 3 de mayo de 2022

El comando de prohibición no hace lo que se supone que debe hacer

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 usery 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: @tryfyfucon 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 membero ❌ | You can't ban yourselfy 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

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...