From d60a93bdc8756ec66d26d2b56243bc99aa6f976e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikuro=E3=81=95=E3=81=84=E3=81=AA?= Date: Tue, 22 Mar 2022 16:39:43 +0900 Subject: [PATCH] fix: Fix to catch error (#82) (#86) --- src/runner/message.ts | 16 ++++++++++++---- src/runner/role.ts | 6 +++++- src/runner/schedule.ts | 5 ++++- src/runner/voice-room.ts | 8 +++++++- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/runner/message.ts b/src/runner/message.ts index b343585f..d5f1aa57 100644 --- a/src/runner/message.ts +++ b/src/runner/message.ts @@ -50,7 +50,11 @@ export class MessageResponseRunner< } private async triggerEvent(event: MessageEvent, message: M): Promise { - await Promise.all(this.responders.map((res) => res.on(event, message))); + try { + await Promise.all(this.responders.map((res) => res.on(event, message))); + } catch (e) { + console.error(e); + } } private responders: R[] = []; @@ -109,9 +113,13 @@ export class MessageUpdateResponseRunner { } private async triggerEvent([before, after]: [M, M]): Promise { - await Promise.all( - this.responders.map((res) => res.on('UPDATE', before, after)) - ); + try { + await Promise.all( + this.responders.map((res) => res.on('UPDATE', before, after)) + ); + } catch (e) { + console.error(e); + } } private responders: MessageUpdateEventResponder[] = []; diff --git a/src/runner/role.ts b/src/runner/role.ts index f9d1ca35..fa27974f 100644 --- a/src/runner/role.ts +++ b/src/runner/role.ts @@ -14,7 +14,11 @@ export const composeRoleEventResponders = ( export class RoleResponseRunner { async triggerEvent(event: RoleEvent, role: R): Promise { - await Promise.all(this.responder.map((res) => res.on(event, role))); + try { + await Promise.all(this.responder.map((res) => res.on(event, role))); + } catch (e) { + console.error(e); + } } private responder: RoleEventResponder[] = []; diff --git a/src/runner/schedule.ts b/src/runner/schedule.ts index 8589cd56..2bfe1c3e 100644 --- a/src/runner/schedule.ts +++ b/src/runner/schedule.ts @@ -69,7 +69,10 @@ export class ScheduleRunner { } const id = setTimeout(() => { void (async () => { - const newTimeout = await task(); + const newTimeout = await task().catch((e) => { + console.error(e); + return null; + }); this.onDidRun(key, task, newTimeout); })(); }, differenceInMilliseconds(timeout, this.clock.now())); diff --git a/src/runner/voice-room.ts b/src/runner/voice-room.ts index 81774680..0d4f0ec9 100644 --- a/src/runner/voice-room.ts +++ b/src/runner/voice-room.ts @@ -54,7 +54,13 @@ export class VoiceRoomResponseRunner { event: VoiceRoomEvent, voiceState: V ): Promise { - await Promise.all(this.responders.map((res) => res.on(event, voiceState))); + try { + await Promise.all( + this.responders.map((res) => res.on(event, voiceState)) + ); + } catch (e) { + console.error(e); + } } private responders: VoiceRoomEventResponder[] = [];