Skip to content

Commit 0a2d0cd

Browse files
committed
global handling added
1 parent de52e18 commit 0a2d0cd

1 file changed

Lines changed: 52 additions & 43 deletions

File tree

src/events/guildMemberUpdate.ts

Lines changed: 52 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
removeAllLevelRoles,
1212
} from "../services/roleService.js";
1313
import { logger } from "../libs/logger.js";
14+
import { prisma } from "../libs/database.js";
1415

1516
export default {
1617
name: Events.GuildMemberUpdate,
@@ -19,10 +20,9 @@ export default {
1920
if (oldMember.partial) oldMember = await oldMember.fetch();
2021
if (newMember.partial) newMember = await newMember.fetch();
2122
} catch (error) {
22-
logger.error(
23-
`Failed to fetch partials for user ${oldMember.user.username}`,
24-
);
23+
logger.error(`Failed to fetch partials for user ${oldMember.user.username}`);
2524
}
25+
2626
const wasBoostingBefore = oldMember.premiumSince !== null;
2727
const isBoostingNow = newMember.premiumSince !== null;
2828

@@ -34,104 +34,113 @@ export default {
3434
},
3535
};
3636

37+
async function getGuildSettings(guildId: string) {
38+
return prisma.guildSetting.findUnique({ where: { gid: guildId } });
39+
}
40+
3741
async function onBoostStart(member: GuildMember): Promise<void> {
3842
const guild = member.guild;
3943

44+
const settings = await getGuildSettings(guild.id);
45+
if (!settings) {
46+
logger.error(`No guild settings found for guild ${guild.id} — run /setup first.`);
47+
return;
48+
}
49+
4050
const record = await registerBoost(
4151
member.id,
4252
guild.id,
4353
guild.name,
4454
guild.iconURL(),
4555
);
46-
4756
if (!record) return;
4857

4958
await clearPendingCustomRoleDeletion(record.id);
5059
await assignLevelRoles(member, record.boostCounts ?? 1);
5160

52-
const greetChannel = guild.channels.cache.get(process.env.GREET_CHANNEL_ID) as
53-
| TextChannel
54-
| undefined;
61+
const greetChannel = guild.channels.cache.get(settings.greetChannelId) as TextChannel | undefined;
5562
if (greetChannel) {
5663
const embed = new EmbedBuilder()
5764
.setColor(0xf47fff)
5865
.setTitle("New Server Boost! 🎉")
5966
.setDescription(`${member} has boosted the server!`)
6067
.addFields(
61-
{
62-
name: "Total Boosts",
63-
value: String(record.boostCounts ?? 1),
64-
inline: true,
68+
{
69+
name: "Total Boosts",
70+
value: String(record.boostCounts ?? 1),
71+
inline: true
72+
},
73+
{ name: "Member",
74+
value: member.user.tag,
75+
inline: true
6576
},
66-
{ name: "Member", value: member.user.tag, inline: true },
6777
)
78+
.setThumbnail(member.displayAvatarURL({ size: 512 }))
6879
.setTimestamp();
69-
7080
await greetChannel.send({ embeds: [embed] });
7181
}
7282

73-
const logChannel = guild.channels.cache.get(process.env.GREET_CHANNEL_ID) as
74-
| TextChannel
75-
| undefined;
83+
const logChannel = guild.channels.cache.get(settings.logChannelId) as TextChannel | undefined;
7684
if (logChannel) {
7785
const logEmbed = new EmbedBuilder()
7886
.setColor(0x57f287)
7987
.setTitle("Boost Started")
8088
.addFields(
81-
{
82-
name: "User",
83-
value: `${member.user.tag} (${member.id})`,
84-
inline: false,
89+
{
90+
name: "User",
91+
value: `${member.user.tag} (${member.id})`,
92+
inline: false
8593
},
86-
{
87-
name: "Total Boost Count",
88-
value: String(record.boostCounts ?? 1),
89-
inline: true,
94+
{
95+
name: "Total Boost Count",
96+
value: String(record.boostCounts ?? 1),
97+
inline: true
9098
},
9199
)
100+
.setThumbnail(member.displayAvatarURL({ size: 512 }))
92101
.setTimestamp();
93-
94102
await logChannel.send({ embeds: [logEmbed] });
95103
}
96104

97105
try {
98-
await member.send(
99-
`Thank you for boosting the server! You now have access to booster perks.`,
100-
);
101-
} catch {
102-
}
106+
await member.send(`Thank you for boosting the server! You now have access to booster perks.`);
107+
} catch {}
103108
}
104109

105110
async function onBoostEnd(member: GuildMember): Promise<void> {
106111
const guild = member.guild;
107112

113+
const settings = await getGuildSettings(guild.id);
114+
if (!settings) {
115+
logger.error(`No guild settings found for guild ${guild.id} — run /setup first.`);
116+
return;
117+
}
118+
108119
const result = await removeBoost(member.id, guild.id);
109120
if (!result) return;
110121

111122
await removeAllLevelRoles(member);
112123
await scheduleCustomRoleDeletionAfterGrace(member.id, guild.id);
113124

114-
const logChannel = guild.channels.cache.get(process.env.LOG_CHANNEL_ID) as
115-
| TextChannel
116-
| undefined;
125+
const logChannel = guild.channels.cache.get(settings.logChannelId) as TextChannel | undefined;
117126
if (logChannel) {
118127
const logEmbed = new EmbedBuilder()
119128
.setColor(0xed4245)
120129
.setTitle("Boost Ended")
121130
.addFields(
122-
{
123-
name: "User",
124-
value: `${member.user.tag} (${member.id})`,
125-
inline: false,
131+
{
132+
name: "User",
133+
value: `${member.user.tag} (${member.id})`,
134+
inline: false
126135
},
127-
{
128-
name: "Historical Boost Count",
129-
value: String(result.boostCounts ?? 0),
130-
inline: true,
136+
{
137+
name: "Historical Boost Count",
138+
value: String(result.boostCounts ?? 0),
139+
inline: true
131140
},
132141
)
142+
.setThumbnail(member.displayAvatarURL({ size: 512 }))
133143
.setTimestamp();
134-
135144
await logChannel.send({ embeds: [logEmbed] });
136145
}
137-
}
146+
}

0 commit comments

Comments
 (0)