From 8fb5c244218e88dd49a178ede0823dd16ccbec59 Mon Sep 17 00:00:00 2001 From: skinmaker1345 Date: Sun, 2 Aug 2026 19:11:34 +0900 Subject: [PATCH] feat: use updated_at field to determine whether the bot is online or not --- utils/Query.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/utils/Query.ts b/utils/Query.ts index 2ecd6e8..643c69c 100644 --- a/utils/Query.ts +++ b/utils/Query.ts @@ -68,6 +68,7 @@ async function getBot(id: string, topLevel = true): Promise { 'bots.vanity', 'bots.bg', 'bots.banner', + 'bots.updated_at', knex.raw('JSON_ARRAYAGG(owners_mapping.user_id) as owners'), ]) .leftJoin('owners_mapping', 'bots.id', 'owners_mapping.target_id') @@ -88,12 +89,12 @@ async function getBot(id: string, topLevel = true): Promise { .then((r) => r) } const botMember = - ((await getMainGuild() + (await getMainGuild() ?.members?.fetch(res.id) .catch((e) => null)) ?? ((await getBotGuild() ?.members?.fetch(res.id) - .catch((e) => null))) as GuildMember) + .catch((e) => null)) as GuildMember) const name = discordBot.displayName res.flags = res.flags | @@ -119,7 +120,9 @@ async function getBot(id: string, topLevel = true): Promise { : botMember.presence.status } } else { - res.status = null + const updatedAt = new Date(res.updated_at).getTime() + const diff = +new Date() - updatedAt + res.status = diff > 1000 * 60 * 60 * 48 ? 'offline' : 'online' } delete res.trusted delete res.partnered @@ -793,6 +796,7 @@ async function updateServer(id: string, servers: number, shards: number) { .update({ servers: servers === undefined ? bot.servers : servers, shards: shards === undefined ? bot.shards : shards, + updated_at: new Date().toISOString(), }) .where({ id }) if (servers) { @@ -1175,6 +1179,7 @@ async function approveBotSubmission(id: string, date: number) { enforcements: data.enforcements, discord: data.discord, token: sign({ id }), + updated_at: new Date().toISOString(), }) updateOwners(id, [data.owner], 'bot') return true