No longer crash if unable to login to VRChat

This commit is contained in:
2023-04-23 15:40:44 +07:00
parent 7731fbdd64
commit 874a65888d
3 changed files with 17 additions and 8 deletions
-6
View File
@@ -22,12 +22,6 @@ const EMBEDS = {
user: data.getUser() user: data.getUser()
}); });
}, },
NOT_INITIALIZED: (data: HybridInteractionMessage) => {
return makeErrorEmbed({
title: `VRChat feature is disabled`,
user: data.getUser()
});
},
ERROR: (data: HybridInteractionMessage) => { ERROR: (data: HybridInteractionMessage) => {
return makeErrorEmbed({ return makeErrorEmbed({
title: `Something went wrong while connecting to VRChat`, title: `Something went wrong while connecting to VRChat`,
+1 -1
View File
@@ -63,7 +63,7 @@ export default class VRChat extends DiscordModule {
const Guild = await Prisma.client.guild.findFirst({ where: { id: data.getGuild()!.id } }); const Guild = await Prisma.client.guild.findFirst({ where: { id: data.getGuild()!.id } });
if (!Guild) return; if (!Guild) return;
if (!VRChatAPI.client) if (!VRChatAPI.isReady())
return await sendHybridInteractionMessageResponse(data, { return await sendHybridInteractionMessageResponse(data, {
embeds: [EMBEDS.NOT_INITIALIZED(data)] embeds: [EMBEDS.NOT_INITIALIZED(data)]
}); });
+16 -1
View File
@@ -29,6 +29,7 @@ interface Cache {
class VRChatAPI { class VRChatAPI {
public client: VRChatAPIs | null; public client: VRChatAPIs | null;
public configuration: VRChat.Configuration | null; public configuration: VRChat.Configuration | null;
private ready = false;
private cache: Cache; private cache: Cache;
private useragent: string | null = null; private useragent: string | null = null;
@@ -66,8 +67,18 @@ class VRChatAPI {
}; };
Logger.info('Logging in to VRChat'); 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); Logger.info('Logged in to VRChat as ' + res.data.displayName);
setInterval(() => { setInterval(() => {
@@ -86,6 +97,10 @@ class VRChatAPI {
}, VRC_CACHE_DURATION); }, VRC_CACHE_DURATION);
} }
public isReady(): boolean {
return this.ready;
}
public async getCachedUserById(id: string) { public async getCachedUserById(id: string) {
if (typeof this.cache.Users[id] !== 'undefined') { if (typeof this.cache.Users[id] !== 'undefined') {
Logger.debug('[VRChat] [Cache] Cache hit for user ' + id); Logger.debug('[VRChat] [Cache] Cache hit for user ' + id);