Added schecks to prevent creating multiple roles.

Fixes #4 but need to allow feature to be disabled in guild config

Signed-off-by: Louis Hollingworth <louis@hollingworth.ch>
This commit is contained in:
Louis Hollingworth 2023-06-22 18:50:21 +01:00
parent 2d4504dbe0
commit 78a8c63c3d
Signed by: lucxjo
GPG key ID: A11415CB3DC7809B
2 changed files with 45 additions and 33 deletions

View file

@ -30,42 +30,68 @@ export class MemberEvent {
async memberUpdate([oldM, newM]: ArgsOf<"guildMemberUpdate">) {
if (oldM.premiumSince !== newM.premiumSince) {
if (newM != null) {
const guild = newM.guild;
const role = await guild.roles.create({
name: newM.nickname ?? newM.displayName,
reason: `${newM.nickname ?? newM.displayName} just boosted!`,
});
await newM.roles.add(role);
const m = await prisma.member.findUnique({
where: {
dgid_duid: {
dgid: guild.id,
dgid: newM.guild.id,
duid: newM.id,
},
},
});
if (m) {
if (m?.booster_role_id != null && newM.premiumSince != null) {
return;
} else if (newM.premiumSince == null) {
await prisma.member.update({
where: {
id: m.id,
id: m?.id,
},
data: {
booster_role_id: role.id,
booster_role_id: null,
},
});
const r = await newM.guild.roles.fetch(m!.booster_role_id!);
if (r) await newM.guild.roles.delete(r);
return;
} else {
await prisma.member.create({
data: {
duid: newM.id,
dgid: guild.id,
booster_role_id: role.id,
name: newM.displayName,
const guild = newM.guild;
const role = await guild.roles.create({
name: newM.nickname ?? newM.displayName,
reason: `${newM.nickname ?? newM.displayName} just boosted!`,
});
await newM.roles.add(role);
const m = await prisma.member.findUnique({
where: {
dgid_duid: {
dgid: guild.id,
duid: newM.id,
},
},
});
if (m) {
await prisma.member.update({
where: {
id: m.id,
},
data: {
booster_role_id: role.id,
},
});
} else {
await prisma.member.create({
data: {
duid: newM.id,
dgid: guild.id,
booster_role_id: role.id,
name: newM.displayName,
},
});
}
return;
}
}
}