Skip to content

Commit

Permalink
feat: ✨ ability to set prorata cooldowns
Browse files Browse the repository at this point in the history
This should solve issues where some commands wants prorata cooldowns, that expire on midnight and such

Ability to set a cooldown using seconds, now you need to call a Date constructing function. So you always pass a date as cooldownTime
  • Loading branch information
VermiumSifell committed Jun 2, 2023
1 parent add510e commit e223309
Show file tree
Hide file tree
Showing 10 changed files with 29 additions and 27 deletions.
7 changes: 3 additions & 4 deletions src/commands/credits/groups/bonus/subcommands/daily/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { addDays } from "date-fns";
import {
ChatInputCommandInteraction,
EmbedBuilder,
Expand Down Expand Up @@ -60,12 +61,10 @@ export const execute = async (interaction: ChatInputCommandInteraction) => {

await sendResponse(interaction, { embeds: [embed] });

const cooldownDuration = 24 * 60 * 60; // 24 hours in seconds
const cooldownName = await generateCooldownName(interaction);
await cooldownManager.setCooldown(
cooldownName,
await generateCooldownName(interaction),
guild,
user,
cooldownDuration
addDays(new Date(), 1)
);
};
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { addMonths } from "date-fns";
import {
ChatInputCommandInteraction,
EmbedBuilder,
Expand Down Expand Up @@ -66,12 +67,10 @@ export const execute = async (interaction: ChatInputCommandInteraction) => {

await sendResponse(interaction, { embeds: [embed] });

const cooldownDuration = 4 * 7 * 24 * 60 * 60; // 1 month in seconds
const cooldownName = await generateCooldownName(interaction);
await cooldownManager.setCooldown(
cooldownName,
await generateCooldownName(interaction),
guild,
user,
cooldownDuration
addMonths(new Date(), 1)
);
};
7 changes: 3 additions & 4 deletions src/commands/credits/groups/bonus/subcommands/weekly/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { addWeeks } from "date-fns";
import {
ChatInputCommandInteraction,
EmbedBuilder,
Expand Down Expand Up @@ -62,12 +63,10 @@ export const execute = async (interaction: ChatInputCommandInteraction) => {

await sendResponse(interaction, { embeds: [embed] });

const cooldownDuration = 7 * 24 * 60 * 60; // 1 week in seconds
const cooldownName = await generateCooldownName(interaction);
await cooldownManager.setCooldown(
cooldownName,
await generateCooldownName(interaction),
guild,
user,
cooldownDuration
addWeeks(new Date(), 1)
);
};
3 changes: 2 additions & 1 deletion src/commands/credits/subcommands/work/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Chance from "chance";
import { addHours } from "date-fns";
import {
ChatInputCommandInteraction,
EmbedBuilder,
Expand Down Expand Up @@ -132,6 +133,6 @@ export const execute = async (interaction: ChatInputCommandInteraction) => {
await generateCooldownName(interaction),
guild,
user,
24 * 60 * 60
addHours(new Date(), 1)
);
};
8 changes: 3 additions & 5 deletions src/commands/dns/subcommands/lookup/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import axios from "axios";
import { addSeconds } from "date-fns";
import {
ChatInputCommandInteraction,
EmbedBuilder,
Expand Down Expand Up @@ -70,14 +71,11 @@ export const execute = async (
],
});

const cooldownName = await generateCooldownName(interaction);
const cooldownDuration = 5;

await cooldownManager.setCooldown(
cooldownName,
await generateCooldownName(interaction),
guild || null,
user,
cooldownDuration
addSeconds(new Date(), 5)
);
} catch (error: unknown) {
if ((error as NodeJS.ErrnoException).code === "ENOTFOUND") {
Expand Down
7 changes: 3 additions & 4 deletions src/commands/fun/subcommands/meme/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import axios from "axios";
import { addSeconds } from "date-fns";
import {
ActionRowBuilder,
ButtonBuilder,
Expand Down Expand Up @@ -39,8 +40,6 @@ export const execute = async (
await deferReply(interaction, false);

const { channel, guild, user } = interaction;
const cooldownItem = await generateCooldownName(interaction);
const cooldownDuration = 15; // 10 seconds

try {
const content: MemeContent = await fetchRandomMeme();
Expand All @@ -65,10 +64,10 @@ export const execute = async (
}

await cooldownManager.setCooldown(
cooldownItem,
await generateCooldownName(interaction),
guild || null,
user,
cooldownDuration
addSeconds(new Date(), 5)
);
};

Expand Down
3 changes: 2 additions & 1 deletion src/commands/quotes/subcommands/post/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { addMinutes } from "date-fns";
import {
ChannelType,
ChatInputCommandInteraction,
Expand Down Expand Up @@ -99,6 +100,6 @@ export const execute = async (
await generateCooldownName(interaction),
guild,
user,
5 * 60
addMinutes(new Date(), 5)
);
};
3 changes: 2 additions & 1 deletion src/commands/reputation/subcommands/repute/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { addDays } from "date-fns";
import {
ChatInputCommandInteraction,
EmbedBuilder,
Expand Down Expand Up @@ -82,6 +83,6 @@ export const execute = async (interaction: ChatInputCommandInteraction) => {
await generateCooldownName(interaction),
guild,
user,
24 * 60 * 60
addDays(new Date(), 1)
);
};
8 changes: 7 additions & 1 deletion src/events/messageCreate/components/earnCredits.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { addSeconds } from "date-fns";
import { Channel, ChannelType, Guild, Message, User } from "discord.js";
import CooldownManager from "../../../handlers/CooldownManager";
import CreditsManager from "../../../handlers/CreditsManager";
Expand Down Expand Up @@ -93,5 +94,10 @@ async function isUserOnCooldown(guild: Guild, author: User): Promise<boolean> {
}

async function setCooldown(guild: Guild, user: User) {
await cooldownManager.setCooldown(cooldownName, guild, user, 5);
await cooldownManager.setCooldown(
cooldownName,
guild,
user,
addSeconds(new Date(), 5)
);
}
3 changes: 1 addition & 2 deletions src/handlers/CooldownManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ class CooldownManager {
cooldownItem: string,
guild: Guild | null,
user: User | null,
cooldownSeconds: number
expiresAt: Date
): Promise<void> {
const expiresAt = new Date(Date.now() + cooldownSeconds * 1000);
const data = {
cooldownItem,
expiresAt,
Expand Down

0 comments on commit e223309

Please sign in to comment.