protected async listEntities(interaction: CommandInteraction<CacheType>) {
try {
await interaction.deferReply({ ephemeral: true });
const ModelInstance = await this.Model;
const entities = await ModelInstance.getAll();
if (entities.length === 0) {
await interaction.reply({ content: `Aucune ${this.entityName} n'est enregistrée.`, ephemeral: true });
return;
}
const itemsPerPage = 10;
const uniqueId = Date.now(); // Unique ID variable
const paginatedMessage = new PaginatedMessage();
paginatedMessage.stopPaginatedMessageCustomIds = [`select_entity_${uniqueId}`];
for (let i = 0; i < entities.length; i += itemsPerPage) {
const paginatedItems = entities.slice(i, i + itemsPerPage);
const description = paginatedItems
.map((entity, index) => `${i + index + 1}. ${entity.name || entity.label}`)
.join('\n');
paginatedMessage.addPage({
embeds: [
new EmbedBuilder()
.setTitle(`Liste des ${this.entityName}s (Page ${(i / itemsPerPage) + 1})`)
.setColor('#0099ff')
.setDescription(description)
],
actions: [{
customId: `select_entity_${uniqueId}`,
type: ComponentType.StringSelect,
run: async (context: PaginatedMessageActionContext) => {
const selectedEntityId = context.interaction.values[0];
await context.interaction.deferUpdate();
await this.showEntityDetails(context.interaction as StringSelectMenuInteraction, selectedEntityId);
},
options: paginatedItems.map(entity => ({
label: entity.name || entity.label,
value: entity.id
}))
}]
});
}
await paginatedMessage.run(interaction);
} catch (error) {
console.error(`Erreur lors de la récupération des ${this.entityName}s:`, error);
await interaction.reply({ content: `Impossible de lister les ${this.entityName}s.`, ephemeral: true });
}
}
protected async listEntities(interaction: CommandInteraction<CacheType>) {
try {
await interaction.deferReply({ ephemeral: true });
const ModelInstance = await this.Model;
const entities = await ModelInstance.getAll();
if (entities.length === 0) {
await interaction.reply({ content: `Aucune ${this.entityName} n'est enregistrée.`, ephemeral: true });
return;
}
const itemsPerPage = 10;
const uniqueId = Date.now(); // Unique ID variable
const paginatedMessage = new PaginatedMessage();
paginatedMessage.stopPaginatedMessageCustomIds = [`select_entity_${uniqueId}`];
for (let i = 0; i < entities.length; i += itemsPerPage) {
const paginatedItems = entities.slice(i, i + itemsPerPage);
const description = paginatedItems
.map((entity, index) => `${i + index + 1}. ${entity.name || entity.label}`)
.join('\n');
paginatedMessage.addPage({
embeds: [
new EmbedBuilder()
.setTitle(`Liste des ${this.entityName}s (Page ${(i / itemsPerPage) + 1})`)
.setColor('#0099ff')
.setDescription(description)
],
actions: [{
customId: `select_entity_${uniqueId}`,
type: ComponentType.StringSelect,
run: async (context: PaginatedMessageActionContext) => {
const selectedEntityId = context.interaction.values[0];
await context.interaction.deferUpdate();
await this.showEntityDetails(context.interaction as StringSelectMenuInteraction, selectedEntityId);
},
options: paginatedItems.map(entity => ({
label: entity.name || entity.label,
value: entity.id
}))
}]
});
}
await paginatedMessage.run(interaction);
} catch (error) {
console.error(`Erreur lors de la récupération des ${this.entityName}s:`, error);
await interaction.reply({ content: `Impossible de lister les ${this.entityName}s.`, ephemeral: true });
}
}