Compare commits

...

2 commits

Author SHA1 Message Date
9fce79579b WIP: Start creating user effects builder
Some checks failed
Test / build (push) Failing after 19s
2024-11-23 17:40:29 +00:00
1be9ba23a3 Create base effects command 2024-11-23 17:20:47 +00:00
4 changed files with 54 additions and 0 deletions

18
src/commands/effects.ts Normal file
View file

@ -0,0 +1,18 @@
import {CommandInteraction, SlashCommandBuilder} from "discord.js";
import {Command} from "../type/command";
export default class Effects extends Command {
constructor() {
super();
this.CommandBuilder = new SlashCommandBuilder()
.setName("effects")
.setDescription("Effects")
.addSubcommand(x => x
.setName("list")
.setDescription("List all effects I have"));
}
public override async execute(interaction: CommandInteraction) {
}
}

View file

@ -57,4 +57,19 @@ export default class UserEffect extends AppBaseEntity {
return single;
}
public static async FetchAllByUserIdPaginated(userId: string, page: number = 0): Promise<UserEffect[]> {
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;
}
}

View file

@ -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<EmbedBuilder> {
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;
}
}

View file

@ -7,6 +7,7 @@ import AllBalance from "./commands/allbalance";
import Balance from "./commands/balance";
import Daily from "./commands/daily";
import Drop from "./commands/drop";
import Effects from "./commands/effects";
import Gdrivesync from "./commands/gdrivesync";
import Give from "./commands/give";
import Id from "./commands/id";
@ -44,6 +45,7 @@ export default class Registry {
CoreClient.RegisterCommand("balance", new Balance());
CoreClient.RegisterCommand("daily", new Daily());
CoreClient.RegisterCommand("drop", new Drop());
CoreClient.RegisterCommand("effects", new Effects());
CoreClient.RegisterCommand("gdrivesync", new Gdrivesync());
CoreClient.RegisterCommand("give", new Give());
CoreClient.RegisterCommand("id", new Id());