From 57c3d603a9e212b1998ca1cdcb082329dc59149f Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Mon, 16 Dec 2024 19:17:23 +0000 Subject: [PATCH] Add check for cooldown --- src/commands/effects.ts | 2 +- src/constants/EffectDetails.ts | 6 ++++-- src/helpers/EffectHelper.ts | 9 ++++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/commands/effects.ts b/src/commands/effects.ts index db19b5e..c7059e8 100644 --- a/src/commands/effects.ts +++ b/src/commands/effects.ts @@ -93,6 +93,6 @@ export default class Effects extends Command { return; } - await interaction.reply("Unable to use effect! Please make sure you have it in your inventory"); + 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/constants/EffectDetails.ts b/src/constants/EffectDetails.ts index c59d33d..4b84dad 100644 --- a/src/constants/EffectDetails.ts +++ b/src/constants/EffectDetails.ts @@ -3,15 +3,17 @@ 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) { + constructor(id: string, friendlyName: string, duration: number, cost: number, cooldown: 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", 24 * 60 * 60 * 1000, 100) ], + [ "unclaimed", new EffectDetail("unclaimed", "Unclaimed Chance Up", 10 * 60 * 1000, 100, 3 * 60 * 60 * 1000) ], ]); diff --git a/src/helpers/EffectHelper.ts b/src/helpers/EffectHelper.ts index d0d29a0..3aaca15 100644 --- a/src/helpers/EffectHelper.ts +++ b/src/helpers/EffectHelper.ts @@ -1,6 +1,7 @@ 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) { @@ -23,7 +24,13 @@ export default class EffectHelper { return false; } - if (effect.WhenExpires && now < effect.WhenExpires) { + const effectDetail = EffectDetails.get(effect.Id); + + if (!effectDetail) { + return false; + } + + if (effect.WhenExpires && now < new Date(effect.WhenExpires.getMilliseconds() + effectDetail.cooldown)) { return false; }