Skip to content

Commit ff9f99a

Browse files
Merge pull request #7 from monitry-ltd/main
fetch partials in guildMemberUpdate.ts
2 parents 8d4326d + be38c91 commit ff9f99a

1 file changed

Lines changed: 66 additions & 16 deletions

File tree

src/events/guildMemberUpdate.ts

Lines changed: 66 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,30 @@
11
import { EmbedBuilder, Events, GuildMember, TextChannel } from "discord.js";
22
import { Config } from "../libs/loadVariables.js";
33
import { registerBoost, removeBoost } from "../services/boosterService.js";
4-
import { assignBoosterRole, removeBoosterRole, assignLevelRoles, removeAllLevelRoles, deleteCustomRole } from "../services/roleService.js";
4+
import {
5+
assignBoosterRole,
6+
removeBoosterRole,
7+
assignLevelRoles,
8+
removeAllLevelRoles,
9+
deleteCustomRole,
10+
} from "../services/roleService.js";
11+
import { logger } from "../libs/logger.js";
512

613
export default {
714
name: Events.GuildMemberUpdate,
8-
async execute(oldMember: GuildMember, newMember: GuildMember, config: Config) {
15+
async execute(
16+
oldMember: GuildMember,
17+
newMember: GuildMember,
18+
config: Config,
19+
) {
20+
try {
21+
if (oldMember.partial) oldMember = await oldMember.fetch();
22+
if (newMember.partial) newMember = await newMember.fetch();
23+
} catch (error) {
24+
logger.error(
25+
`Failed to fetch partials for user ${oldMember.user.username}`,
26+
);
27+
}
928
const wasBoostingBefore = oldMember.premiumSince !== null;
1029
const isBoostingNow = newMember.premiumSince !== null;
1130

@@ -14,55 +33,76 @@ export default {
1433
} else if (wasBoostingBefore && !isBoostingNow) {
1534
await onBoostEnd(newMember, config);
1635
}
17-
}
36+
},
1837
};
1938

20-
async function onBoostStart(member: GuildMember, config: Config): Promise<void> {
39+
async function onBoostStart(
40+
member: GuildMember,
41+
config: Config,
42+
): Promise<void> {
2143
const guild = member.guild;
2244

2345
const record = await registerBoost(
2446
member.id,
2547
guild.id,
2648
guild.name,
27-
guild.iconURL()
49+
guild.iconURL(),
2850
);
2951

3052
if (!record) return;
3153

3254
await assignBoosterRole(member, config);
3355
await assignLevelRoles(member, record.boostCounts ?? 1);
3456

35-
const greetChannel = guild.channels.cache.get(config.greetChannelId) as TextChannel | undefined;
57+
const greetChannel = guild.channels.cache.get(config.greetChannelId) as
58+
| TextChannel
59+
| undefined;
3660
if (greetChannel) {
3761
const embed = new EmbedBuilder()
3862
.setColor(0xf47fff)
3963
.setTitle("New Server Boost! 🎉")
4064
.setDescription(`${member} has boosted the server!`)
4165
.addFields(
42-
{ name: "Total Boosts", value: String(record.boostCounts ?? 1), inline: true },
43-
{ name: "Member", value: member.user.tag, inline: true }
66+
{
67+
name: "Total Boosts",
68+
value: String(record.boostCounts ?? 1),
69+
inline: true,
70+
},
71+
{ name: "Member", value: member.user.tag, inline: true },
4472
)
4573
.setTimestamp();
4674

4775
await greetChannel.send({ embeds: [embed] });
4876
}
4977

50-
const logChannel = guild.channels.cache.get(config.logChannelId) as TextChannel | undefined;
78+
const logChannel = guild.channels.cache.get(config.logChannelId) as
79+
| TextChannel
80+
| undefined;
5181
if (logChannel) {
5282
const logEmbed = new EmbedBuilder()
5383
.setColor(0x57f287)
5484
.setTitle("Boost Started")
5585
.addFields(
56-
{ name: "User", value: `${member.user.tag} (${member.id})`, inline: false },
57-
{ name: "Total Boost Count", value: String(record.boostCounts ?? 1), inline: true }
86+
{
87+
name: "User",
88+
value: `${member.user.tag} (${member.id})`,
89+
inline: false,
90+
},
91+
{
92+
name: "Total Boost Count",
93+
value: String(record.boostCounts ?? 1),
94+
inline: true,
95+
},
5896
)
5997
.setTimestamp();
6098

6199
await logChannel.send({ embeds: [logEmbed] });
62100
}
63101

64102
try {
65-
await member.send(`Thank you for boosting the server! You now have access to booster perks.`);
103+
await member.send(
104+
`Thank you for boosting the server! You now have access to booster perks.`,
105+
);
66106
} catch {
67107
// DMs may be closed
68108
}
@@ -78,17 +118,27 @@ async function onBoostEnd(member: GuildMember, config: Config): Promise<void> {
78118
await removeAllLevelRoles(member);
79119
await deleteCustomRole(guild, member.id);
80120

81-
const logChannel = guild.channels.cache.get(config.logChannelId) as TextChannel | undefined;
121+
const logChannel = guild.channels.cache.get(config.logChannelId) as
122+
| TextChannel
123+
| undefined;
82124
if (logChannel) {
83125
const logEmbed = new EmbedBuilder()
84126
.setColor(0xed4245)
85127
.setTitle("Boost Ended")
86128
.addFields(
87-
{ name: "User", value: `${member.user.tag} (${member.id})`, inline: false },
88-
{ name: "Historical Boost Count", value: String(result.boostCounts ?? 0), inline: true }
129+
{
130+
name: "User",
131+
value: `${member.user.tag} (${member.id})`,
132+
inline: false,
133+
},
134+
{
135+
name: "Historical Boost Count",
136+
value: String(result.boostCounts ?? 0),
137+
inline: true,
138+
},
89139
)
90140
.setTimestamp();
91141

92142
await logChannel.send({ embeds: [logEmbed] });
93143
}
94-
}
144+
}

0 commit comments

Comments
 (0)