File size: 1,181 Bytes
3c7e34b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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 };
|