discord-starboard-plus
Version:
Discord Starboard Plus: A clean, maintainable starboard system for Discord.js bots. Features per-guild configuration, TypeScript support. Highlight your community's favorite messages with customizable starboards.
59 lines • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageDeleteHandler = void 0;
const BaseHandler_1 = require("./BaseHandler");
/**
* Handler for messageDelete events.
* Removes starboard messages when the original message is deleted.
*/
class MessageDeleteHandler extends BaseHandler_1.BaseHandler {
/**
* Handle the messageDelete event.
*/
async handle(message) {
try {
if (!message.guild)
return;
const options = this.getOptionsForGuild(message.guild.id);
await this.processMessageDeletion(message, options);
}
catch (error) {
this.logger.error('Error handling message delete', error, {
messageId: message.id
});
}
}
/**
* Process message deletion.
*/
async processMessageDeletion(message, options) {
const starboardChannel = this.validation.getStarboardChannel(message.guild.id, options, this.client);
if (!starboardChannel)
return;
const searchResult = await this.messageSearch.findStarboardMessage(starboardChannel, message.id, options.maxSearchDepth);
if (!searchResult.found || !searchResult.message) {
return;
}
try {
await searchResult.message.delete();
this.logger.info('Original message deleted - removing starboard entry', {
originalId: message.id,
starboardId: searchResult.message.id
});
}
catch (error) {
if (error.code === 10008) {
this.logger.warn('Starboard message already deleted', {
starboardId: searchResult.message.id
});
return;
}
this.logger.error('Failed to delete starboard message', error, {
originalId: message.id,
starboardId: searchResult.message.id
});
}
}
}
exports.MessageDeleteHandler = MessageDeleteHandler;
//# sourceMappingURL=MessageDeleteHandler.js.map