From 874a65888dde0b7fd2b392d43a597c1490b1f902 Mon Sep 17 00:00:00 2001 From: Yuzu Date: Sun, 23 Apr 2023 15:40:44 +0700 Subject: [PATCH] No longer crash if unable to login to VRChat --- src/discord/VRChat/World.ts | 6 ------ src/discord/VRChat/index.ts | 2 +- src/providers/VRChatAPI.ts | 17 ++++++++++++++++- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/discord/VRChat/World.ts b/src/discord/VRChat/World.ts index 4ec89c5..3c81d89 100644 --- a/src/discord/VRChat/World.ts +++ b/src/discord/VRChat/World.ts @@ -22,12 +22,6 @@ const EMBEDS = { user: data.getUser() }); }, - NOT_INITIALIZED: (data: HybridInteractionMessage) => { - return makeErrorEmbed({ - title: `VRChat feature is disabled`, - user: data.getUser() - }); - }, ERROR: (data: HybridInteractionMessage) => { return makeErrorEmbed({ title: `Something went wrong while connecting to VRChat`, diff --git a/src/discord/VRChat/index.ts b/src/discord/VRChat/index.ts index 8b988d7..2f54664 100644 --- a/src/discord/VRChat/index.ts +++ b/src/discord/VRChat/index.ts @@ -63,7 +63,7 @@ export default class VRChat extends DiscordModule { const Guild = await Prisma.client.guild.findFirst({ where: { id: data.getGuild()!.id } }); if (!Guild) return; - if (!VRChatAPI.client) + if (!VRChatAPI.isReady()) return await sendHybridInteractionMessageResponse(data, { embeds: [EMBEDS.NOT_INITIALIZED(data)] }); diff --git a/src/providers/VRChatAPI.ts b/src/providers/VRChatAPI.ts index 07612c4..734bbb7 100644 --- a/src/providers/VRChatAPI.ts +++ b/src/providers/VRChatAPI.ts @@ -29,6 +29,7 @@ interface Cache { class VRChatAPI { public client: VRChatAPIs | null; public configuration: VRChat.Configuration | null; + private ready = false; private cache: Cache; private useragent: string | null = null; @@ -66,8 +67,18 @@ class VRChatAPI { }; Logger.info('Logging in to VRChat'); - let res = await this.client.AuthenticationApi.getCurrentUser(); + let res; + try { + res = await this.client.AuthenticationApi.getCurrentUser(); + } catch (err: any) { + if (err.response?.status === 401) { + Logger.error('Unable to log in to VRChat, check your credentials'); + return; + } else throw err; + } + + this.ready = true; Logger.info('Logged in to VRChat as ' + res.data.displayName); setInterval(() => { @@ -86,6 +97,10 @@ class VRChatAPI { }, VRC_CACHE_DURATION); } + public isReady(): boolean { + return this.ready; + } + public async getCachedUserById(id: string) { if (typeof this.cache.Users[id] !== 'undefined') { Logger.debug('[VRChat] [Cache] Cache hit for user ' + id);