Skip to content

Commit 2efb3be

Browse files
authored
Fix/gateway rate limit (#62)
* feat: get member from a func instead * fix: get member from cache first * fix: use `getMember` func instead
1 parent d573c6f commit 2efb3be

11 files changed

Lines changed: 27 additions & 20 deletions

File tree

src/bot/commands/checkin/handlers/checkin-audit.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { registerCommand } from '@commands/registry'
33
import { AUDIT_FLAME_CHANNEL, FLAMEWARDEN_ROLE } from '@config/discord'
44
import { CHECKIN_AUDIT_ID } from '@events/interaction-create/checkin/handlers/audit-modal'
55
import { createCheckinReviewModal, encodeSnowflake, getCustomId } from '@utils/component'
6-
import { getChannel, sendReply } from '@utils/discord'
6+
import { getChannel, getMember, sendReply } from '@utils/discord'
77
import { DiscordBaseError } from '@utils/discord/error'
88
import { log } from '@utils/logger'
99
import { SlashCommandBuilder } from 'discord.js'
@@ -32,7 +32,7 @@ registerCommand({
3232
CheckinAudit.assertNotPrivateThread(thread)
3333
const threadMsg = await CheckinAudit.getThreadMessage(thread)
3434
CheckinAudit.assertThreadMessageSendBy(threadMsg, interaction.client.user.id)
35-
const flamewarden = await interaction.guild.members.fetch(interaction.member.id)
35+
const flamewarden = await getMember(interaction.guild, interaction.member.id)
3636
CheckinAudit.assertMember(flamewarden)
3737
CheckinAudit.assertMemberHasRole(flamewarden, FLAMEWARDEN_ROLE)
3838

src/bot/commands/checkin/validators/checkin-status.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { CHECKIN_CHANNEL, FLAMEWARDEN_ROLE } from '@config/discord'
66
import { Checkin } from '@events/interaction-create/checkin/validators'
77
import { createEmbed, decodeSnowflakes } from '@utils/component'
88
import { isDateYesterday } from '@utils/date'
9-
import { DiscordAssert } from '@utils/discord'
9+
import { DiscordAssert, getMember } from '@utils/discord'
1010
import { DUMMY } from '@utils/placeholder'
1111
import { messageLink, PermissionsBitField } from 'discord.js'
1212
import { CheckinStatusError } from '../handlers/checkin-status'
@@ -45,7 +45,7 @@ export class CheckinStatus extends CheckinStatusMessage {
4545
const hasCheckedInToday = Checkin.hasCheckinToday(checkinStreak, checkin)
4646

4747
if (checkin && hasCheckedInToday) {
48-
const flamewarden = await guild.members.fetch(checkin.reviewed_by!)
48+
const flamewarden = await getMember(guild, checkin.reviewed_by!)
4949

5050
switch (checkin.status as CheckinStatusType) {
5151
case 'WAITING': {
@@ -95,7 +95,7 @@ export class CheckinStatus extends CheckinStatusMessage {
9595
return { content, embed }
9696
}
9797

98-
const flamewarden = await guild.members.fetch(checkin.reviewed_by!)
98+
const flamewarden = await getMember(guild, checkin.reviewed_by!)
9999
embed = createEmbed(
100100
`🕯️ Check-In #${checkin.public_id}`,
101101
CheckinStatus.MSG.LastCheckin(guild.name, userDiscordId, checkin, flamewarden),

src/bot/events/client-ready/jobs/validators/reset-grinder-roles.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { FLAMEWARDEN_ROLE, getGrindRoles, GRINDER_ROLE } from '@config/discord'
88
import { GOODBYE_NOTE_BUTTON_ID, ResetGrinderRolesButtonError } from '@events/interaction-create/jobs/handlers/reset-grinder-roles-button'
99
import { decodeSnowflakes, encodeSnowflake, getCustomId } from '@utils/component'
1010
import { isDateToday, isDateYesterday } from '@utils/date'
11-
import { DiscordAssert, getChannel, sendAsBot } from '@utils/discord'
11+
import { DiscordAssert, getChannel, getMember, sendAsBot } from '@utils/discord'
1212
import { log } from '@utils/logger'
1313
import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from 'discord.js'
1414
import { ResetGrinderRolesMessage } from '../messages/reset-grinder-roles'
@@ -91,6 +91,8 @@ export class ResetGrinderRoles extends ResetGrinderRolesMessage {
9191
}
9292

9393
static async validateUsers(prisma: PrismaClient, guild: Guild, grindAshesChannel: TextChannel, auditFlameChannel: TextChannel, users: User[]) {
94+
await guild.members.fetch({ withPresences: false })
95+
9496
for (const user of users) {
9597
const checkinStreak = user.checkin_streaks?.[0]
9698
if (!checkinStreak)
@@ -100,7 +102,7 @@ export class ResetGrinderRoles extends ResetGrinderRolesMessage {
100102
if (this.hasValidCheckin(lastCheckin))
101103
continue
102104

103-
const member = await guild.members.fetch(user.discord_id)
105+
const member = await getMember(guild, user.discord_id)
104106
await this.removeGrinderRoles(member)
105107
await this.breakCheckinStreakAt(prisma, checkinStreak, lastCheckin!)
106108
const thread = await this.validateWaitingCheckin(guild, auditFlameChannel, member, user, lastCheckin!)

src/bot/events/interaction-create/checkin/handlers/approve-button.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { FLAMEWARDEN_ROLE } from '@config/discord'
33
import { EVENT_PATH } from '@events/index'
44
import { registerInteractionHandler } from '@events/interaction-create/registry'
55
import { generateCustomId } from '@utils/component'
6-
import { sendReply } from '@utils/discord'
6+
import { getMember, sendReply } from '@utils/discord'
77
import { DiscordBaseError } from '@utils/discord/error'
88
import { getModuleName } from '@utils/io'
99
import { Checkin } from '../validators'
@@ -35,7 +35,7 @@ registerInteractionHandler({
3535

3636
const channel = interaction.channel as TextChannel
3737
Checkin.assertMissPerms(interaction.client.user, channel)
38-
const flamewarden = await interaction.guild.members.fetch(interaction.member.id)
38+
const flamewarden = await getMember(interaction.guild, interaction.member.id)
3939
Checkin.assertMember(flamewarden)
4040
Checkin.assertMemberHasRole(flamewarden, FLAMEWARDEN_ROLE)
4141

src/bot/events/interaction-create/checkin/handlers/audit-modal.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { FLAMEWARDEN_ROLE } from '@config/discord'
44
import { EVENT_PATH } from '@events/index'
55
import { registerInteractionHandler } from '@events/interaction-create/registry'
66
import { createEmbed, generateCustomId } from '@utils/component'
7-
import { sendReply } from '@utils/discord'
7+
import { getMember, sendReply } from '@utils/discord'
88
import { DiscordBaseError } from '@utils/discord/error'
99
import { getModuleName } from '@utils/io'
1010
import { DUMMY } from '@utils/placeholder'
@@ -38,7 +38,7 @@ registerInteractionHandler({
3838

3939
const thread = interaction.channel as ThreadChannel
4040
const threadMsg = await CheckinAudit.getThreadMessage(thread)
41-
const flamewarden = await interaction.guild.members.fetch(interaction.member.id)
41+
const flamewarden = await getMember(interaction.guild, interaction.member.id)
4242
CheckinAudit.assertMember(flamewarden)
4343
CheckinAudit.assertMemberHasRole(flamewarden, FLAMEWARDEN_ROLE)
4444

src/bot/events/interaction-create/checkin/handlers/custom-button-modal.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { FLAMEWARDEN_ROLE } from '@config/discord'
44
import { EVENT_PATH } from '@events/index'
55
import { registerInteractionHandler } from '@events/interaction-create/registry'
66
import { generateCustomId } from '@utils/component'
7-
import { sendReply } from '@utils/discord'
7+
import { getMember, sendReply } from '@utils/discord'
88
import { DiscordBaseError } from '@utils/discord/error'
99
import { getModuleName } from '@utils/io'
1010
import { Checkin } from '../validators'
@@ -36,7 +36,7 @@ registerInteractionHandler({
3636

3737
const channel = interaction.channel as TextChannel
3838
Checkin.assertMissPerms(interaction.client.user, channel)
39-
const flamewarden = await interaction.guild.members.fetch(interaction.member.id)
39+
const flamewarden = await getMember(interaction.guild, interaction.member.id)
4040
Checkin.assertMember(flamewarden)
4141
Checkin.assertMemberHasRole(flamewarden, FLAMEWARDEN_ROLE)
4242

src/bot/events/interaction-create/checkin/handlers/custom-button.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { FLAMEWARDEN_ROLE } from '@config/discord'
33
import { EVENT_PATH } from '@events/index'
44
import { registerInteractionHandler } from '@events/interaction-create/registry'
55
import { createCheckinReviewModal, encodeSnowflake, generateCustomId, getCustomId } from '@utils/component'
6-
import { sendReply } from '@utils/discord'
6+
import { getMember, sendReply } from '@utils/discord'
77
import { DiscordBaseError } from '@utils/discord/error'
88
import { getModuleName } from '@utils/io'
99
import { Checkin } from '../validators'
@@ -32,7 +32,7 @@ registerInteractionHandler({
3232

3333
const channel = interaction.channel as TextChannel
3434
Checkin.assertMissPerms(interaction.client.user, channel)
35-
const flamewarden = await interaction.guild.members.fetch(interaction.member.id)
35+
const flamewarden = await getMember(interaction.guild, interaction.member.id)
3636
Checkin.assertMember(flamewarden)
3737
Checkin.assertMemberHasRole(flamewarden, FLAMEWARDEN_ROLE)
3838

src/bot/events/interaction-create/checkin/handlers/reject-button.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { FLAMEWARDEN_ROLE } from '@config/discord'
33
import { EVENT_PATH } from '@events/index'
44
import { registerInteractionHandler } from '@events/interaction-create/registry'
55
import { generateCustomId } from '@utils/component'
6-
import { sendReply } from '@utils/discord'
6+
import { getMember, sendReply } from '@utils/discord'
77
import { DiscordBaseError } from '@utils/discord/error'
88
import { getModuleName } from '@utils/io'
99
import { Checkin } from '../validators'
@@ -35,7 +35,7 @@ registerInteractionHandler({
3535

3636
const channel = interaction.channel as TextChannel
3737
Checkin.assertMissPerms(interaction.client.user, channel)
38-
const flamewarden = await interaction.guild.members.fetch(interaction.member.id)
38+
const flamewarden = await getMember(interaction.guild, interaction.member.id)
3939
Checkin.assertMember(flamewarden)
4040
Checkin.assertMemberHasRole(flamewarden, FLAMEWARDEN_ROLE)
4141

src/bot/events/interaction-create/checkin/validators/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { AURA_FARMING_CHANNEL, CHECKIN_CHANNEL, GRINDER_ROLE } from '@config/dis
1111
import { SubmittedCheckinError } from '@events/message-reaction-add/checkin/handlers/submitted'
1212
import { createEmbed, decodeSnowflakes, encodeSnowflake, getCustomId } from '@utils/component'
1313
import { isDateToday, isDateYesterday } from '@utils/date'
14-
import { DiscordAssert, getChannel, sendAsBot } from '@utils/discord'
14+
import { DiscordAssert, getChannel, getMember, sendAsBot } from '@utils/discord'
1515
import { attachNewGrindRole, getGrindRoleByStreakCount } from '@utils/discord/roles'
1616
import { DUMMY } from '@utils/placeholder'
1717
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, messageLink, PermissionsBitField } from 'discord.js'
@@ -444,7 +444,7 @@ export class Checkin extends CheckinMessage {
444444
}
445445

446446
static async validateCheckinHandleToUser(guild: Guild, flamewarden: GuildMember, userDiscordId: string, updatedCheckin: CheckinType) {
447-
const member = await guild.members.fetch(userDiscordId)
447+
const member = await getMember(guild, userDiscordId)
448448
this.assertMember(member)
449449

450450
const hasGrinderRole = this.isMemberHasRole(member, GRINDER_ROLE)

src/bot/events/message-reaction-add/checkin/handlers/submitted.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { CHECKIN_CHANNEL, FLAMEWARDEN_ROLE } from '@config/discord'
22
import { EVENT_PATH } from '@events/index'
33
import { Checkin } from '@events/interaction-create/checkin/validators'
44
import { registerReactionHandler } from '@events/message-reaction-add/registry'
5+
import { getMember } from '@utils/discord'
56
import { DiscordBaseError } from '@utils/discord/error'
67
import { getModuleName } from '@utils/io'
78

@@ -29,7 +30,7 @@ registerReactionHandler({
2930
await message.fetch()
3031

3132
try {
32-
const flamewarden = await guild.members.fetch(user.id)
33+
const flamewarden = await getMember(guild, user.id)
3334
const emoji = Checkin.assertEmojis(reaction.emoji.name)
3435
Checkin.assertMember(flamewarden)
3536
Checkin.assertMemberHasRole(flamewarden, FLAMEWARDEN_ROLE)

0 commit comments

Comments
 (0)