@@ -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