| const { logRoleChange } = require('./logger'); | |
| /** | |
| * Detect server boost changes via guildMemberUpdate. | |
| * If a member starts boosting β add Booster role. | |
| * If a member stops boosting β remove Booster role. | |
| */ | |
| async function handleBoostChange(oldMember, newMember, client) { | |
| const wasBoosting = oldMember.premiumSince !== null; | |
| const isBoosting = newMember.premiumSince !== null; | |
| if (wasBoosting === isBoosting) return; // No change | |
| const boosterRole = newMember.guild.roles.cache.find(r => r.name === '@@ Booster'); | |
| if (!boosterRole) return; | |
| if (!wasBoosting && isBoosting) { | |
| // Started boosting | |
| await newMember.roles.add(boosterRole).catch(() => { }); | |
| await logRoleChange(client, { | |
| user: newMember.user, | |
| role: 'Booster', | |
| action: 'added', | |
| }); | |
| } else if (wasBoosting && !isBoosting) { | |
| // Stopped boosting | |
| await newMember.roles.remove(boosterRole).catch(() => { }); | |
| await logRoleChange(client, { | |
| user: newMember.user, | |
| role: 'Booster', | |
| action: 'removed', | |
| }); | |
| } | |
| } | |
| module.exports = { handleBoostChange }; | |