make errors recoverable

This commit is contained in:
Matthieu Jolimaitre 2024-02-05 19:26:33 +01:00
parent 09e05c5c53
commit d6b3b6830a
2 changed files with 9 additions and 5 deletions

View file

@ -61,8 +61,11 @@ export class EpitlsBot {
if (member === undefined) return; if (member === undefined) return;
const role = await guild.roles.fetch(role_id); const role = await guild.roles.fetch(role_id);
if (role === null) return console.error("Role", role_id, "not found in guild", guild_id); if (role === null) return console.error("Role", role_id, "not found in guild", guild_id);
member.roles.add(role_id); log(`Assigning to user '${member.displayName}' role '${role.name}'.`);
log(`Assigned 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) { 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_prefix = name.slice(0, DISCORD_MAX_NAME_LENGTH - default_suffix.length);
const generated_name = generated_name_prefix + default_suffix; const generated_name = generated_name_prefix + default_suffix;
log(`Setting name of '${name}' to '${generated_name}'.`); 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}'.`));
} }
} }

View file

@ -123,10 +123,11 @@ export function* reverse<T>(items: Iterable<T>) {
for (const item of collected.reverse()) yield item; for (const item of collected.reverse()) yield item;
} }
export async function try_<T>(f: () => Promise<T> | T) { export async function try_<T>(operation: () => Promise<T> | T, recovery: () => Promise<void> | void = () => {}) {
try { try {
return await f(); return await operation();
} catch (_) { } catch (_) {
await recovery();
return undefined; return undefined;
} }
} }