diff --git a/src/events/guildMemberAdd.ts b/src/events/guildMemberAdd.ts index f34a5f4..27241f1 100644 --- a/src/events/guildMemberAdd.ts +++ b/src/events/guildMemberAdd.ts @@ -1,6 +1,7 @@ import { Events } from "discord.js"; import type { Event } from "@lib/types"; import { config } from "@lib/config"; +import { userService } from "@modules/user/user.service"; // Visitor role const event: Event = { @@ -8,11 +9,25 @@ const event: Event = { execute: async (member) => { console.log(`👤 New member joined: ${member.user.tag} (${member.id})`); try { - await member.roles.add(config.visitorRole); - console.log(`Assigned visitor role to ${member.user.tag}`); + const user = await userService.getUserById(member.id); + + if (user && user.class) { + console.log(`🔄 Returning student detected: ${member.user.tag}`); + await member.roles.remove(config.visitorRole); + await member.roles.add(config.studentRole); + + if (user.class.roleId) { + await member.roles.add(user.class.roleId); + console.log(`Restored class role ${user.class.name} to ${member.user.tag}`); + } + console.log(`Restored student role to ${member.user.tag}`); + } else { + await member.roles.add(config.visitorRole); + console.log(`Assigned visitor role to ${member.user.tag}`); + } console.log(`User Roles: ${member.roles.cache.map(role => role.name).join(", ")}`); } catch (error) { - console.error(`Failed to assign visitor role to ${member.user.tag}:`, error); + console.error(`Failed to handle role assignment for ${member.user.tag}:`, error); } }, };