Skip to content
This repository was archived by the owner on Apr 6, 2026. It is now read-only.

Commit 481e7e7

Browse files
committed
fix: add more check on server status
1 parent f5d9c87 commit 481e7e7

1 file changed

Lines changed: 33 additions & 3 deletions

File tree

src/classes/v3/Server.ts

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,13 +398,36 @@ export class Server extends BaseClass {
398398
}
399399

400400
try {
401-
const guild = await dscClient.guilds.fetch(this.getGuildID());
401+
let guild;
402+
try {
403+
guild = await dscClient.guilds.fetch(this.getGuildID(), { withCounts: true });
404+
} catch (err: any) {
405+
if (err.code === 10004) {
406+
// Guild no longer exists or bot has been kicked
407+
gmLog('status', `Guild ${this.getGuildID()} unknown – cleaning up status record.`, true);
408+
await prisma.gm_status.delete({ where: { server: this.getID() } });
409+
return;
410+
}
411+
throw err;
412+
}
402413
if (!guild) {
403-
gmLog('status', `Guild not found for server ${this.getID()}`, true);
414+
gmLog('status', `Guild fetch returned null for server ${this.getID()}`, true);
404415
return;
405416
}
406417

407-
const channel = await dscClient.channels.fetch(serverStatusInfo.channel);
418+
let channel;
419+
try {
420+
channel = await dscClient.channels.fetch(serverStatusInfo.channel);
421+
} catch (err) {
422+
if (err.code === 10003) {
423+
// channel deleted or otherwise not found
424+
gmLog('status', `Channel ${serverStatusInfo.channel} no longer exists – removing record.`, true);
425+
await prisma.gm_status.delete({ where: { server: this.getID() } });
426+
return;
427+
}
428+
throw err;
429+
}
430+
408431
if (!channel) {
409432
gmLog('status', `Channel not found for server ${this.getID()}`, true);
410433
return;
@@ -416,12 +439,19 @@ export class Server extends BaseClass {
416439
return;
417440
}
418441

442+
// is message exists?
419443
message = await channel.messages.fetch(serverStatusInfo.message);
420444
if (!message) {
421445
gmLog('status', `Message not found for server ${this.getID()}`, true);
422446
return;
423447
}
424448

449+
// is same author?
450+
if (message.author.id !== dscClient.user?.id) {
451+
gmLog('status', `Message author is not the bot for server ${this.getID()}`, true);
452+
return;
453+
}
454+
425455
const lang = guild.preferredLocale;
426456
const newMsgContent = await getStatusMessage(this, msgData, lang);
427457
await message.edit(newMsgContent);

0 commit comments

Comments
 (0)