diff --git a/src/bot.ts b/src/bot.ts index 39de1c3..4a5ef8a 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -61,8 +61,11 @@ export class EpitlsBot { if (member === undefined) return; const role = await guild.roles.fetch(role_id); if (role === null) return console.error("Role", role_id, "not found in guild", guild_id); - member.roles.add(role_id); - log(`Assigned to user '${member.displayName}' role '${role.name}'.`); + log(`Assigning to user '${member.displayName}' role '${role.name}'.`); + await try_( + () => member.roles.add(role_id), + () => log(`FAILED Assignation to user '${member.displayName}' role '${role.name}'.`), + ); } public async update_user_name(user_id: string, must_contain: string, default_suffix: string) { @@ -75,7 +78,7 @@ export class EpitlsBot { const generated_name_prefix = name.slice(0, DISCORD_MAX_NAME_LENGTH - default_suffix.length); const generated_name = generated_name_prefix + default_suffix; log(`Setting name of '${name}' to '${generated_name}'.`); - await try_(async () => await user.setNickname(generated_name)); + await try_(() => user.setNickname(generated_name), () => log(`FAILED Setting name of '${name}'.`)); } } diff --git a/src/utils.ts b/src/utils.ts index 84e09a6..99086f8 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -123,10 +123,11 @@ export function* reverse(items: Iterable) { for (const item of collected.reverse()) yield item; } -export async function try_(f: () => Promise | T) { +export async function try_(operation: () => Promise | T, recovery: () => Promise | void = () => {}) { try { - return await f(); + return await operation(); } catch (_) { + await recovery(); return undefined; } }