feat: add achievement system

Signed-off-by: Ahmad <103906421+ahmadk953@users.noreply.github.com>
This commit is contained in:
Ahmad 2025-04-16 16:52:44 -04:00
parent 830838a6a1
commit 2f5c3499e7
No known key found for this signature in database
GPG key ID: 8FD8A93530D182BF
15 changed files with 1966 additions and 37 deletions

View file

@ -0,0 +1,52 @@
import {
Events,
MessageReaction,
PartialMessageReaction,
User,
PartialUser,
} from 'discord.js';
import { Event } from '@/types/EventTypes.js';
import {
decrementUserReactionCount,
incrementUserReactionCount,
} from '@/db/db.js';
import { processReactionAchievements } from '@/util/achievementManager.js';
export const reactionAdd: Event<typeof Events.MessageReactionAdd> = {
name: Events.MessageReactionAdd,
execute: async (
reaction: MessageReaction | PartialMessageReaction,
user: User | PartialUser,
) => {
try {
if (user.bot || !reaction.message.guild) return;
await incrementUserReactionCount(user.id);
await processReactionAchievements(user.id, reaction.message.guild);
} catch (error) {
console.error('Error handling reaction add:', error);
}
},
};
export const reactionRemove: Event<typeof Events.MessageReactionRemove> = {
name: Events.MessageReactionRemove,
execute: async (
reaction: MessageReaction | PartialMessageReaction,
user: User | PartialUser,
) => {
try {
if (user.bot || !reaction.message.guild) return;
await decrementUserReactionCount(user.id);
await processReactionAchievements(user.id, reaction.message.guild, true);
} catch (error) {
console.error('Error handling reaction remove:', error);
}
},
};
export default [reactionAdd, reactionRemove];