corrigiendo errores de eliminar, enlistar y crear
This commit is contained in:
@@ -3,9 +3,9 @@ import { CommandMessage } from "../../../core/types/commands";
|
|||||||
import { EmbedBuilder, ButtonStyle, MessageFlags, ChannelType } from "discord.js";
|
import { EmbedBuilder, ButtonStyle, MessageFlags, ChannelType } from "discord.js";
|
||||||
|
|
||||||
export const command: CommandMessage = {
|
export const command: CommandMessage = {
|
||||||
name: "listchannels-alliance",
|
name: "listar-canales-alianza",
|
||||||
type: "message",
|
type: "message",
|
||||||
aliases: ["listalchannel", "channelsally", "alliancechannels"],
|
aliases: ["listchannels-alliance", "listalchannel", "channelsally", "alliancechannels"],
|
||||||
cooldown: 5,
|
cooldown: 5,
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
run: async (message, args, client) => {
|
run: async (message, args, client) => {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { CommandMessage } from "../../../core/types/commands";
|
import { CommandMessage } from "../../../core/types/commands";
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { ComponentType, ButtonStyle, MessageFlags, ChannelType } from "discord.js";
|
import { EmbedBuilder, ButtonStyle, MessageFlags, ChannelType } from "discord.js";
|
||||||
|
|
||||||
export const command: CommandMessage = {
|
export const command: CommandMessage = {
|
||||||
name: "removechannel-alliance",
|
name: "eliminar-canal-alianza",
|
||||||
type: "message",
|
type: "message",
|
||||||
aliases: ["removealchannel", "removechannelally", "delalchannel"],
|
aliases: ["removechannel-alliance", "removealchannel", "delalchannel"],
|
||||||
cooldown: 10,
|
cooldown: 10,
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
run: async (message, args, client) => {
|
run: async (message, args, client) => {
|
||||||
@@ -19,52 +19,23 @@ export const command: CommandMessage = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (existingChannels.length === 0) {
|
if (existingChannels.length === 0) {
|
||||||
const noChannelsPanel = {
|
const noChannelsEmbed = new EmbedBuilder()
|
||||||
type: 17,
|
.setTitle("🗑️ Eliminar Canal de Alianzas")
|
||||||
accent_color: 0xf04747,
|
.setDescription("📭 **No hay canales configurados**\n\nNo existen canales de alianza configurados en este servidor para eliminar.\n\n💡 **Sugerencia:** Usa `!setchannel-alliance` para configurar canales primero.")
|
||||||
components: [
|
.setColor(0xf04747)
|
||||||
{
|
.setTimestamp();
|
||||||
type: 10,
|
|
||||||
content: "# 🗑️ **Eliminar Canal de Alianzas**"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 14,
|
|
||||||
spacing: 2,
|
|
||||||
divider: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 10,
|
|
||||||
content: "📭 **No hay canales configurados**\n\nNo existen canales de alianza configurados en este servidor para eliminar.\n\n💡 **Sugerencia:** Usa `!setchannel-alliance` para configurar canales primero."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
return message.reply({
|
return message.reply({
|
||||||
flags: MessageFlags.SuppressEmbeds,
|
embeds: [noChannelsEmbed]
|
||||||
components: [noChannelsPanel]
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Panel principal de eliminación
|
// Embed principal
|
||||||
const removePanel = {
|
const removeEmbed = new EmbedBuilder()
|
||||||
type: 17,
|
.setTitle("🗑️ Eliminar Canal de Alianzas")
|
||||||
accent_color: 0xf04747, // Rojo para eliminación
|
.setDescription(`⚠️ **Atención:** Estás a punto de eliminar la configuración de alianzas de un canal.\n\n📊 **Estado actual:**\n• **${existingChannels.length}** canal(es) configurado(s)\n• **${existingChannels.filter((c: any) => c.isActive).length}** canal(es) activo(s)\n\n🎯 Selecciona el canal que deseas eliminar:`)
|
||||||
components: [
|
.setColor(0xf04747)
|
||||||
{
|
.setTimestamp();
|
||||||
type: 10,
|
|
||||||
content: "# 🗑️ **Eliminar Canal de Alianzas**"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 14,
|
|
||||||
spacing: 2,
|
|
||||||
divider: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 10,
|
|
||||||
content: `⚠️ **Atención:** Estás a punto de eliminar la configuración de alianzas de un canal.\n\n📊 **Estado actual:**\n• **${existingChannels.length}** canal(es) configurado(s)\n• **${existingChannels.filter((c: any) => c.isActive).length}** canal(es) activo(s)\n\n🎯 Selecciona el canal que deseas eliminar de la configuración:`
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
// Crear opciones para el selector de canales
|
// Crear opciones para el selector de canales
|
||||||
const channelOptions = existingChannels.map((config: any) => {
|
const channelOptions = existingChannels.map((config: any) => {
|
||||||
@@ -73,10 +44,10 @@ export const command: CommandMessage = {
|
|||||||
const status = config.isActive ? "🟢 Activo" : "🔴 Inactivo";
|
const status = config.isActive ? "🟢 Activo" : "🔴 Inactivo";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
label: channelName,
|
label: channelName.length > 100 ? channelName.substring(0, 97) + "..." : channelName,
|
||||||
value: config.channelId,
|
value: config.channelId,
|
||||||
description: `${config.blockConfigName} • ${status}`,
|
description: `${config.blockConfigName} • ${status}`,
|
||||||
emoji: { name: channel ? "💬" : "⚠️" }
|
emoji: channel ? "💬" : "⚠️"
|
||||||
};
|
};
|
||||||
}).slice(0, 25);
|
}).slice(0, 25);
|
||||||
|
|
||||||
@@ -111,8 +82,8 @@ export const command: CommandMessage = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const panelMessage = await message.reply({
|
const panelMessage = await message.reply({
|
||||||
flags: MessageFlags.SuppressEmbeds,
|
embeds: [removeEmbed],
|
||||||
components: [removePanel, channelSelectRow, cancelRow]
|
components: [channelSelectRow, cancelRow]
|
||||||
});
|
});
|
||||||
|
|
||||||
const collector = panelMessage.createMessageComponentCollector({
|
const collector = panelMessage.createMessageComponentCollector({
|
||||||
@@ -129,33 +100,12 @@ export const command: CommandMessage = {
|
|||||||
const selectedChannel = message.guild!.channels.cache.get(selectedChannelId);
|
const selectedChannel = message.guild!.channels.cache.get(selectedChannelId);
|
||||||
const channelName = selectedChannel ? `#${selectedChannel.name}` : "Canal Eliminado";
|
const channelName = selectedChannel ? `#${selectedChannel.name}` : "Canal Eliminado";
|
||||||
|
|
||||||
// Panel de confirmación
|
// Embed de confirmación
|
||||||
const confirmPanel = {
|
const confirmEmbed = new EmbedBuilder()
|
||||||
type: 17,
|
.setTitle("⚠️ Confirmar Eliminación")
|
||||||
accent_color: 0xff6b6b,
|
.setDescription(`🎯 **Canal seleccionado:** ${channelName}\n🧩 **Configuración:** \`${selectedConfig?.blockConfigName}\`\n📊 **Estado:** ${selectedConfig?.isActive ? "🟢 Activo" : "🔴 Inactivo"}\n\n❗ **¿Estás seguro de eliminar esta configuración?**\n\n📝 **Efectos:**\n• Los usuarios ya no ganarán puntos en este canal\n• El historial de puntos se mantendrá\n• Esta acción NO se puede deshacer`)
|
||||||
components: [
|
.setColor(0xff6b6b)
|
||||||
{
|
.setTimestamp();
|
||||||
type: 10,
|
|
||||||
content: "⚠️ **Confirmar Eliminación**"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 14,
|
|
||||||
divider: true,
|
|
||||||
spacing: 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 10,
|
|
||||||
content: `🎯 **Canal seleccionado:** ${channelName}\n` +
|
|
||||||
`🧩 **Configuración:** \`${selectedConfig?.blockConfigName}\`\n` +
|
|
||||||
`📊 **Estado:** ${selectedConfig?.isActive ? "🟢 Activo" : "🔴 Inactivo"}\n\n` +
|
|
||||||
`❗ **¿Estás seguro de eliminar esta configuración?**\n\n` +
|
|
||||||
`📝 **Efectos:**\n` +
|
|
||||||
`• Los usuarios ya no ganarán puntos en este canal\n` +
|
|
||||||
`• El historial de puntos se mantendrá\n` +
|
|
||||||
`• Esta acción NO se puede deshacer`
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
const confirmRow = {
|
const confirmRow = {
|
||||||
type: 1,
|
type: 1,
|
||||||
@@ -164,8 +114,7 @@ export const command: CommandMessage = {
|
|||||||
type: 2,
|
type: 2,
|
||||||
style: ButtonStyle.Danger,
|
style: ButtonStyle.Danger,
|
||||||
label: "✅ Sí, Eliminar",
|
label: "✅ Sí, Eliminar",
|
||||||
custom_id: `confirm_remove_${selectedChannelId}`,
|
custom_id: `confirm_remove_${selectedChannelId}`
|
||||||
emoji: { name: "🗑️" }
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 2,
|
type: 2,
|
||||||
@@ -177,46 +126,36 @@ export const command: CommandMessage = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await interaction.update({
|
await interaction.update({
|
||||||
components: [confirmPanel, confirmRow]
|
embeds: [confirmEmbed],
|
||||||
|
components: [confirmRow]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "cancel_removal":
|
case "cancel_removal":
|
||||||
const cancelPanel = {
|
const cancelEmbed = new EmbedBuilder()
|
||||||
type: 17,
|
.setTitle("❌ Operación Cancelada")
|
||||||
accent_color: 0x36393f,
|
.setDescription("La eliminación ha sido cancelada.\nNingún canal fue modificado.")
|
||||||
components: [
|
.setColor(0x36393f)
|
||||||
{
|
.setTimestamp();
|
||||||
type: 10,
|
|
||||||
content: "❌ **Operación Cancelada**"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 14,
|
|
||||||
divider: true,
|
|
||||||
spacing: 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 10,
|
|
||||||
content: "La eliminación ha sido cancelada.\nNingún canal fue modificado."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
await interaction.update({
|
await interaction.update({
|
||||||
components: [cancelPanel]
|
embeds: [cancelEmbed],
|
||||||
|
components: []
|
||||||
});
|
});
|
||||||
collector.stop();
|
collector.stop();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "view_all_channels":
|
case "view_all_channels":
|
||||||
await interaction.reply({
|
const channelsList = existingChannels.map((config: any, index: number) => {
|
||||||
content: `📋 **Canales Configurados**\n\n${existingChannels.map((config: any, index: number) => {
|
|
||||||
const channel = message.guild!.channels.cache.get(config.channelId);
|
const channel = message.guild!.channels.cache.get(config.channelId);
|
||||||
const channelName = channel ? `#${channel.name}` : "Canal Eliminado";
|
const channelName = channel ? `#${channel.name}` : "Canal Eliminado";
|
||||||
const status = config.isActive ? "🟢 Activo" : "🔴 Inactivo";
|
const status = config.isActive ? "🟢 Activo" : "🔴 Inactivo";
|
||||||
return `**${index + 1}.** ${channelName} - \`${config.blockConfigName}\` • ${status}`;
|
return `**${index + 1}.** ${channelName} - \`${config.blockConfigName}\` • ${status}`;
|
||||||
}).join('\n')}`,
|
}).join('\n');
|
||||||
|
|
||||||
|
await interaction.reply({
|
||||||
|
content: `📋 **Canales Configurados**\n\n${channelsList}`,
|
||||||
flags: 64 // Ephemeral
|
flags: 64 // Ephemeral
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
@@ -240,29 +179,11 @@ export const command: CommandMessage = {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const successPanel = {
|
const successEmbed = new EmbedBuilder()
|
||||||
type: 17,
|
.setTitle("✅ Eliminación Exitosa")
|
||||||
accent_color: 0x57f287,
|
.setDescription(`🗑️ **Canal eliminado de la configuración:**\n\n📺 **Canal:** ${channelName}\n🧩 **Configuración eliminada:** \`${channelConfig?.blockConfigName}\`\n\n✅ **Completado:** Los usuarios ya no ganarán puntos de alianza en este canal.\n\n💡 **Nota:** El historial de puntos anterior se mantiene intacto.`)
|
||||||
components: [
|
.setColor(0x57f287)
|
||||||
{
|
.setTimestamp();
|
||||||
type: 10,
|
|
||||||
content: "✅ **Eliminación Exitosa**"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 14,
|
|
||||||
divider: true,
|
|
||||||
spacing: 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 10,
|
|
||||||
content: `🗑️ **Canal eliminado de la configuración:**\n\n` +
|
|
||||||
`📺 **Canal:** ${channelName}\n` +
|
|
||||||
`🧩 **Configuración eliminada:** \`${channelConfig?.blockConfigName}\`\n\n` +
|
|
||||||
`✅ **Completado:** Los usuarios ya no ganarán puntos de alianza en este canal.\n\n` +
|
|
||||||
`💡 **Nota:** El historial de puntos anterior se mantiene intacto.`
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
const successActionsRow = {
|
const successActionsRow = {
|
||||||
type: 1,
|
type: 1,
|
||||||
@@ -283,38 +204,27 @@ export const command: CommandMessage = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await interaction.update({
|
await interaction.update({
|
||||||
components: [successPanel, successActionsRow]
|
embeds: [successEmbed],
|
||||||
|
components: [successActionsRow]
|
||||||
});
|
});
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const errorPanel = {
|
const errorEmbed = new EmbedBuilder()
|
||||||
type: 17,
|
.setTitle("❌ Error de Eliminación")
|
||||||
accent_color: 0xf04747,
|
.setDescription(`💥 **Error al eliminar el canal:**\n\n📺 Canal: ${channelName}\n🧩 Configuración: \`${channelConfig?.blockConfigName}\`\n\n🔍 **Posibles causas:**\n• El canal ya fue eliminado\n• Error de base de datos\n• Permisos insuficientes\n\n🔄 Intenta nuevamente.`)
|
||||||
components: [
|
.setColor(0xf04747)
|
||||||
{
|
.setTimestamp();
|
||||||
type: 10,
|
|
||||||
content: "❌ **Error de Eliminación**"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 14,
|
|
||||||
divider: true,
|
|
||||||
spacing: 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 10,
|
|
||||||
content: `💥 **Error al eliminar el canal:**\n\n` +
|
|
||||||
`📺 Canal: ${channelName}\n` +
|
|
||||||
`🧩 Configuración: \`${channelConfig?.blockConfigName}\`\n\n` +
|
|
||||||
`🔍 **Posibles causas:**\n` +
|
|
||||||
`• El canal ya fue eliminado\n` +
|
|
||||||
`• Error de base de datos\n` +
|
|
||||||
`• Permisos insuficientes\n\n` +
|
|
||||||
`🔄 Intenta nuevamente.`
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
await interaction.update({ components: [errorPanel] });
|
await interaction.update({
|
||||||
|
embeds: [errorEmbed],
|
||||||
|
components: []
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else if (interaction.customId === "finish_removal" || interaction.customId === "remove_another") {
|
||||||
|
collector.stop();
|
||||||
|
if (interaction.customId === "remove_another") {
|
||||||
|
// Reiniciar el comando
|
||||||
|
return module.exports.command.run(message, args, client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -323,29 +233,16 @@ export const command: CommandMessage = {
|
|||||||
|
|
||||||
collector.on("end", async (collected, reason) => {
|
collector.on("end", async (collected, reason) => {
|
||||||
if (reason === "time") {
|
if (reason === "time") {
|
||||||
const timeoutPanel = {
|
const timeoutEmbed = new EmbedBuilder()
|
||||||
type: 17,
|
.setTitle("⏰ Sesión Expirada")
|
||||||
accent_color: 0x36393f,
|
.setDescription("El panel de eliminación ha expirado.\nUsa el comando nuevamente para continuar.")
|
||||||
components: [
|
.setColor(0x36393f)
|
||||||
{
|
.setTimestamp();
|
||||||
type: 10,
|
|
||||||
content: "⏰ **Sesión Expirada**"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 14,
|
|
||||||
divider: true,
|
|
||||||
spacing: 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 10,
|
|
||||||
content: "El panel de eliminación ha expirado.\nUsa el comando nuevamente para continuar."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await panelMessage.edit({
|
await panelMessage.edit({
|
||||||
components: [timeoutPanel]
|
embeds: [timeoutEmbed],
|
||||||
|
components: []
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Mensaje eliminado o error de edición
|
// Mensaje eliminado o error de edición
|
||||||
|
|||||||
@@ -44,19 +44,19 @@ export const command: CommandMessage = {
|
|||||||
name: "canal-alianza",
|
name: "canal-alianza",
|
||||||
aliases: ["configurar-canal", "setup-canal"],
|
aliases: ["configurar-canal", "setup-canal"],
|
||||||
description: "Configurar canales para sistema de alianzas",
|
description: "Configurar canales para sistema de alianzas",
|
||||||
usage: `${prefix}canal-alianza {canal}`
|
usage: `${prefix}canal-alianza`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "eliminar-canal-alianza",
|
name: "eliminar-canal-alianza",
|
||||||
aliases: ["removechannel-alliance", "removealchannel", "delalchannel"],
|
aliases: ["removechannel-alliance", "removealchannel", "delalchannel"],
|
||||||
description: "Eliminar canales de la configuración de alianzas",
|
description: "Eliminar canales de la configuración de alianzas",
|
||||||
usage: `${prefix}removechannel-alliance`
|
usage: `${prefix}eliminar-canal-alianza`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "listar-canales-alianza",
|
name: "listar-canales-alianza",
|
||||||
aliases: ["listchannels-alliance", "listalchannel", "channelsally"],
|
aliases: ["listchannels-alliance", "listalchannel", "channelsally"],
|
||||||
description: "Ver lista detallada de canales configurados para alianzas",
|
description: "Ver lista detallada de canales configurados para alianzas",
|
||||||
usage: `${prefix}listchannels-alliance`
|
usage: `${prefix}listar-canales-alianza`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "demo-componentes",
|
name: "demo-componentes",
|
||||||
@@ -319,7 +319,7 @@ export const command: CommandMessage = {
|
|||||||
case "category_network":
|
case "category_network":
|
||||||
const networkPanel = {
|
const networkPanel = {
|
||||||
type: 17,
|
type: 17,
|
||||||
accent_color: 0x5865f2,
|
accent_color: 05865f2,
|
||||||
components: [
|
components: [
|
||||||
{
|
{
|
||||||
type: 10,
|
type: 10,
|
||||||
|
|||||||
Reference in New Issue
Block a user