Skip to content

Commit

Permalink
fix: 🗃️ update instead of create new cooldowns if one already exists
Browse files Browse the repository at this point in the history
This should solve problems related to bot creating new cooldowns when they are expired instead of updating their "expiresAt" date
  • Loading branch information
VermiumSifell committed May 31, 2023
1 parent 6ad1de8 commit 1ee942c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@ export default async function handleCommandInteraction(
const { guildCooldown, userCooldown, guildMemberCooldown } =
await cooldownManager.checkCooldowns(cooldownItem, guild, user);

if (guildCooldown || userCooldown || guildMemberCooldown) {
if (
(guildCooldown && guildCooldown.expiresAt > new Date()) ||
(userCooldown && userCooldown.expiresAt > new Date()) ||
(guildMemberCooldown && guildMemberCooldown.expiresAt > new Date())
) {
await handleCooldown(
interaction,
guildCooldown,
Expand Down
5 changes: 4 additions & 1 deletion src/events/messageCreate/components/earnCredits.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,10 @@ async function isUserOnCooldown(guild: Guild, author: User): Promise<boolean> {
guild,
author
);
return cooldownActive !== null;

if (!cooldownActive) return false;

return cooldownActive.expiresAt > new Date();
}

async function setCooldown(guild: Guild, user: User) {
Expand Down
19 changes: 8 additions & 11 deletions src/handlers/CooldownManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,19 @@ class CooldownManager {
user: user ? { connect: { id: user.id } } : undefined,
};

const { guildCooldown, guildMemberCooldown, userCooldown } =
await this.checkCooldowns(cooldownItem, guild, user);
const existingCooldown = await this.checkCooldown(
cooldownItem,
guild,
user
);

if (guildCooldown || guildMemberCooldown || userCooldown) {
await prisma.cooldown.updateMany({
if (existingCooldown) {
await prisma.cooldown.update({
where: {
cooldownItem,
guild: guild ? { id: guild.id } : undefined,
user: user ? { id: user.id } : undefined,
id: existingCooldown.id,
},
data: {
cooldownItem,
expiresAt,
guildId: guild ? guild.id : undefined,
userId: user ? user.id : undefined,
},
});
} else {
Expand Down Expand Up @@ -62,7 +60,6 @@ class CooldownManager {
cooldownItem,
guild: guild ? { id: guild.id } : null,
user: user ? { id: user.id } : null,
expiresAt: { gte: new Date() },
};
const cooldown = await prisma.cooldown.findFirst({ where });
const duration = Date.now() - start;
Expand Down

0 comments on commit 1ee942c

Please sign in to comment.