From 19fe923285addba47d70837faa4f96832cc44106 Mon Sep 17 00:00:00 2001 From: Snazzah Date: Sun, 10 Nov 2024 15:24:07 -0600 Subject: [PATCH] fix(bot): fix shardinfo command not working well --- apps/bot/src/sharding/modules/shardutil.ts | 2 +- apps/bot/src/textCommands/shardinfo.ts | 29 ++++++++++++++-------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/apps/bot/src/sharding/modules/shardutil.ts b/apps/bot/src/sharding/modules/shardutil.ts index ecb01d42..4b571ffc 100644 --- a/apps/bot/src/sharding/modules/shardutil.ts +++ b/apps/bot/src/sharding/modules/shardutil.ts @@ -79,8 +79,8 @@ export default class ShardUtilModule extends ShardManagerModule { ) .catch(() => null); res.push({ - id: shard.id, ...(shardRes ?? {}), + id: shard.id, respawnWhenAvailable: shard.respawnWhenAvailable, lastActivity: shard.lastActivity }); diff --git a/apps/bot/src/textCommands/shardinfo.ts b/apps/bot/src/textCommands/shardinfo.ts index dcf7028e..c78cda02 100644 --- a/apps/bot/src/textCommands/shardinfo.ts +++ b/apps/bot/src/textCommands/shardinfo.ts @@ -26,6 +26,10 @@ export default class ShardInfoCommand extends TextCommand { return pad(hours) + ':' + pad(minutes) + ':' + pad(s); } + padValue(value: number | undefined, maxLength: number) { + return (typeof value === 'number' ? value.toLocaleString() : '-').padEnd(maxLength, ' '); + } + async run(ctx: CommandContext) { const sharding = this.client.modules.get('sharding') as ShardingModule; @@ -33,13 +37,13 @@ export default class ShardInfoCommand extends TextCommand { const { d: { res } } = await sharding.sendAndRecieve<{ - res: { id: number; status: string; guilds: number; latency: number; uptime: number; recordings: number; respawnWhenAvailable: boolean }[]; + res: { id: number; status?: string; guilds?: number; latency?: number; uptime?: number; recordings?: number; respawnWhenAvailable: boolean }[]; }>('getShardInfo'); - const totalGuilds = res.reduce((acc, cur) => acc + cur.guilds, 0); - const averageLatency = Math.round(res.reduce((acc, cur) => acc + cur.latency, 0) / res.length); - const averageUptime = res.reduce((acc, cur) => acc + cur.uptime, 0) / res.length; - const totalRecordings = res.reduce((acc, cur) => acc + cur.recordings, 0); + const totalGuilds = res.reduce((acc, cur) => acc + (cur.guilds ?? 0), 0); + const averageLatency = Math.round(res.reduce((acc, cur) => acc + (cur.latency ?? 0), 0) / res.length); + const averageUptime = res.reduce((acc, cur) => acc + (cur.uptime ?? 0), 0) / res.length; + const totalRecordings = res.reduce((acc, cur) => acc + (cur.recordings ?? 0), 0); const message = `Your Shard ID: ${process.env.SHARD_ID}\n\n` + @@ -52,12 +56,15 @@ export default class ShardInfoCommand extends TextCommand { res .map( (shard) => - `${shard.id === parseInt(process.env.SHARD_ID!) ? '>' : ' '} [${shard.id.toString().padStart(3, ' ')}]: ${shard.status.padStart( - 12, - ' ' - )} | ${shard.guilds.toLocaleString().padEnd(10, ' ')} | ${`${Math.round(shard.latency)}ms`.padEnd(11, ' ')} | ${this.format( - shard.uptime - ).padEnd(14, ' ')} | ${shard.recordings.toLocaleString().padEnd(12, ' ')} | ${shard.respawnWhenAvailable}` + `${shard.id === parseInt(process.env.SHARD_ID!) ? '>' : ' '} [${shard.id.toString().padStart(3, ' ')}]: ${( + shard.status ?? 'unknown' + ).padStart(12, ' ')} | ${this.padValue(shard.guilds, 10)} | ${(typeof shard.latency === 'number' + ? `${Math.round(shard.latency)}ms` + : '-' + ).padEnd(11, ' ')} | ${(typeof shard.uptime === 'number' ? this.format(shard.uptime) : '-').padEnd(14, ' ')} | ${this.padValue( + shard.recordings, + 12 + )} | ${shard.respawnWhenAvailable ?? '-'}` ) .join('\n');