diff --git a/src/buttonEvents/Effects.ts b/src/buttonEvents/Effects.ts index 8cefbf7..0810c94 100644 --- a/src/buttonEvents/Effects.ts +++ b/src/buttonEvents/Effects.ts @@ -1,7 +1,6 @@ -import {ButtonInteraction,EmbedBuilder} from "discord.js"; +import {ButtonInteraction} from "discord.js"; import {ButtonEvent} from "../type/buttonEvent"; import EffectHelper from "../helpers/EffectHelper"; -import { EffectDetails } from "../constants/EffectDetails"; export default class Effects extends ButtonEvent { public override async execute(interaction: ButtonInteraction) { @@ -11,9 +10,6 @@ export default class Effects extends ButtonEvent { case "list": await this.List(interaction); break; - case "use": - await this.Use(interaction); - break; } } @@ -34,53 +30,4 @@ export default class Effects extends ButtonEvent { components: [ result.row ], }); } - - private async Use(interaction: ButtonInteraction) { - const subaction = interaction.customId.split(" ")[2]; - - switch (subaction) { - case "confirm": - await this.UseConfirm(interaction); - break; - } - } - - private async UseConfirm(interaction: ButtonInteraction) { - const id = interaction.customId.split(" ")[3]; - - const effectDetail = EffectDetails.get(id); - - if (!effectDetail) { - await interaction.reply("Unable to find effect!"); - return; - } - - const now = new Date(); - const whenExpires = new Date(now.getMilliseconds() + effectDetail.duration); - - const result = await EffectHelper.UseEffect(interaction.user.id, id, whenExpires); - - if (result) { - const embed = new EmbedBuilder() - .setTitle("Effect Used") - .setDescription("You now have an active effect!") - .addFields([ - { - name: "Effect", - value: effectDetail.friendlyName, - inline: true, - }, - { - name: "Expires", - value: ``, - inline: true, - }, - ]); - - await interaction.update({ embeds: [ embed ] }); - return; - } - - await interaction.reply("Unable to use effect! Please make sure you have it in your inventory and is not on cooldown"); - } } diff --git a/src/commands/effects.ts b/src/commands/effects.ts index 3fe30ef..db19b5e 100644 --- a/src/commands/effects.ts +++ b/src/commands/effects.ts @@ -2,7 +2,6 @@ import {CommandInteraction, EmbedBuilder, SlashCommandBuilder} from "discord.js" import {Command} from "../type/command"; import EffectHelper from "../helpers/EffectHelper"; import {EffectDetails} from "../constants/EffectDetails"; -import UserEffect from "../database/entities/app/UserEffect"; export default class Effects extends Command { constructor() { @@ -68,29 +67,32 @@ export default class Effects extends Command { return; } - const canUseEffect = await EffectHelper.CanUseEffect(interaction.user.id, id) + const now = new Date(); + const whenExpires = new Date(now.getMilliseconds() + effectDetail.duration); - if (!canUseEffect) { - await interaction.reply("Unable to use effect! Please make sure you have it in your inventory and is not on cooldown"); + const result = await EffectHelper.UseEffect(interaction.user.id, id, whenExpires); + + if (result) { + const embed = new EmbedBuilder() + .setTitle("Effect Used") + .setDescription("You now have an active effect!") + .addFields([ + { + name: "Effect", + value: effectDetail.friendlyName, + inline: true, + }, + { + name: "Expires", + value: ``, + inline: true, + }, + ]); + + await interaction.reply({ embeds: [ embed ] }); return; } - const embed = new EmbedBuilder() - .setTitle("Effect Confirmation") - .setDescription("Would you like to use this effect?") - .addFields([ - { - name: "Effect", - value: effectDetail.friendlyName, - inline: true, - }, - { - name: "Length", - value: "", - inline: true, - }, - ]); - - await interaction.reply({ embeds: [ embed ] }); + await interaction.reply("Unable to use effect! Please make sure you have it in your inventory"); } } diff --git a/src/constants/EffectDetails.ts b/src/constants/EffectDetails.ts index 4b84dad..c59d33d 100644 --- a/src/constants/EffectDetails.ts +++ b/src/constants/EffectDetails.ts @@ -3,17 +3,15 @@ class EffectDetail { public readonly friendlyName: string; public readonly duration: number; public readonly cost: number; - public readonly cooldown: number; - constructor(id: string, friendlyName: string, duration: number, cost: number, cooldown: number) { + constructor(id: string, friendlyName: string, duration: number, cost: number) { this.id = id; this.friendlyName = friendlyName; this.duration = duration; this.cost = cost; - this.cooldown = cooldown; } }; export const EffectDetails = new Map([ - [ "unclaimed", new EffectDetail("unclaimed", "Unclaimed Chance Up", 10 * 60 * 1000, 100, 3 * 60 * 60 * 1000) ], + [ "unclaimed", new EffectDetail("unclaimed", "Unclaimed Chance Up", 24 * 60 * 60 * 1000, 100) ], ]); diff --git a/src/helpers/EffectHelper.ts b/src/helpers/EffectHelper.ts index 26aab8c..d0d29a0 100644 --- a/src/helpers/EffectHelper.ts +++ b/src/helpers/EffectHelper.ts @@ -1,7 +1,6 @@ import {ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder} from "discord.js"; import UserEffect from "../database/entities/app/UserEffect"; import EmbedColours from "../constants/EmbedColours"; -import {EffectDetails} from "../constants/EffectDetails"; export default class EffectHelper { public static async AddEffectToUserInventory(userId: string, name: string, quantity: number = 1) { @@ -17,22 +16,6 @@ export default class EffectHelper { } public static async UseEffect(userId: string, name: string, whenExpires: Date): Promise { - const canUseEffect = await this.CanUseEffect(userId, name); - - if (!canUseEffect) return false; - - const effect = await UserEffect.FetchOneByUserIdAndName(userId, name); - - if (!effect) return false; - - effect.UseEffect(whenExpires); - - await effect.Save(UserEffect, effect); - - return true; - } - - public static async CanUseEffect(userId: string, name: string): Promise { const effect = await UserEffect.FetchOneByUserIdAndName(userId, name); const now = new Date(); @@ -40,15 +23,13 @@ export default class EffectHelper { return false; } - const effectDetail = EffectDetails.get(effect.Id); - - if (!effectDetail) { + if (effect.WhenExpires && now < effect.WhenExpires) { return false; } - if (effect.WhenExpires && now < new Date(effect.WhenExpires.getMilliseconds() + effectDetail.cooldown)) { - return false; - } + effect.UseEffect(whenExpires); + + await effect.Save(UserEffect, effect); return true; } diff --git a/src/helpers/TimeLengthInput.ts b/src/helpers/TimeLengthInput.ts index 8fa232d..d1d8734 100644 --- a/src/helpers/TimeLengthInput.ts +++ b/src/helpers/TimeLengthInput.ts @@ -118,7 +118,4 @@ export default class TimeLengthInput { return desNumber; } - - public static ConvertFromMilliseconds(ms: number): TimeLengthInput { - } } \ No newline at end of file