diff --git a/src/commands/effects.ts b/src/commands/effects.ts index d52b3ce..0b014df 100644 --- a/src/commands/effects.ts +++ b/src/commands/effects.ts @@ -7,7 +7,10 @@ export default class Effects extends Command { this.CommandBuilder = new SlashCommandBuilder() .setName("effects") - .setDescription("Effects"); + .setDescription("Effects") + .addSubcommand(x => x + .setName("list") + .setDescription("List all effects I have")); } public override async execute(interaction: CommandInteraction) { diff --git a/src/commands/effects/list.ts b/src/commands/effects/list.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/database/entities/app/UserEffect.ts b/src/database/entities/app/UserEffect.ts index fa1b584..189b206 100644 --- a/src/database/entities/app/UserEffect.ts +++ b/src/database/entities/app/UserEffect.ts @@ -57,4 +57,19 @@ export default class UserEffect extends AppBaseEntity { return single; } + + public static async FetchAllByUserIdPaginated(userId: string, page: number = 0): Promise { + const itemsPerPage = 10; + + const repository = AppDataSource.getRepository(UserEffect); + + const all = await repository.find({ + where: { UserId: userId }, + order: { Name: "ASC" }, + skip: page * itemsPerPage, + take: itemsPerPage, + }); + + return all; + } } diff --git a/src/helpers/EffectHelper.ts b/src/helpers/EffectHelper.ts index 14c2f43..7f16f84 100644 --- a/src/helpers/EffectHelper.ts +++ b/src/helpers/EffectHelper.ts @@ -1,4 +1,6 @@ +import {EmbedBuilder} from "discord.js"; import UserEffect from "../database/entities/app/UserEffect"; +import EmbedColours from "../constants/EmbedColours"; export default class EffectHelper { public static async AddEffectToUserInventory(userId: string, name: string, quantity: number = 1) { @@ -46,4 +48,21 @@ export default class EffectHelper { return true; } + + public static async GenerateEffectEmbed(userId: string, page: number): Promise { + const effects = await UserEffect.FetchAllByUserIdPaginated(userId, page - 1); + + let description = "*none*"; + + if (effects.length > 0) { + description = effects.map(x => `${x.Name} x${x.Unused}`).join("\n"); + } + + const embed = new EmbedBuilder() + .setTitle("Effects") + .setDescription(description) + .setColor(EmbedColours.Ok); + + return embed; + } }