Skip to content

Commit b579ded

Browse files
authored
fix: more robust discord handling (#1181)
1 parent d7ecbde commit b579ded

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

server/src/services/DiscordClient.js

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,36 @@ class DiscordClient extends AuthClient {
8787
this.client.login(this.strategy.botToken)
8888
}
8989

90-
/** @param {string} guildId @param {string} userId */
90+
/**
91+
* @param {string} guildId
92+
* @param {string} userId
93+
* @returns {Promise<string[]>}
94+
*/
9195
async getUserRoles(guildId, userId) {
9296
try {
93-
const members = await this.client.guilds.cache
94-
.get(guildId)
95-
?.members.fetch()
96-
if (members) {
97-
const member = members.get(userId)
98-
return member?.roles.cache.map((role) => role.id) || []
99-
}
100-
return []
97+
const guild =
98+
this.client.guilds.cache.get(guildId) ||
99+
(await this.client.guilds.fetch(guildId))
100+
const member = await guild?.members.fetch(userId)
101+
return member?.roles.cache.map((role) => role.id) || []
101102
} catch (e) {
103+
const code =
104+
e && typeof e === 'object' && 'code' in e ? Number(e.code) : null
105+
if (code === 10007) {
106+
this.log.debug(
107+
'Discord member not found in guild',
108+
guildId,
109+
'for user',
110+
userId,
111+
)
112+
return []
113+
}
102114
this.log.error(
103115
'Failed to get roles in guild',
104116
guildId,
105117
'for user',
106118
userId,
119+
e,
107120
)
108121
}
109122
return []

0 commit comments

Comments
 (0)