diff --git a/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts b/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts index 22c5761c..99dbbaa0 100644 --- a/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts +++ b/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts @@ -9,9 +9,6 @@ export const StarboardReactionAddEvt = starboardEvt({ event: "messageReactionAdd", async listener(meta) { - // FIXME: Temporarily disabled - return; - const pluginData = meta.pluginData; let msg = meta.args.reaction.message as Message; diff --git a/backend/src/plugins/Starboard/events/StarboardReactionRemoveEvts.ts b/backend/src/plugins/Starboard/events/StarboardReactionRemoveEvts.ts index d2cc72da..203c4bde 100644 --- a/backend/src/plugins/Starboard/events/StarboardReactionRemoveEvts.ts +++ b/backend/src/plugins/Starboard/events/StarboardReactionRemoveEvts.ts @@ -5,9 +5,6 @@ export const StarboardReactionRemoveEvt = starboardEvt({ event: "messageReactionRemove", async listener(meta) { - // FIXME: Temporarily disabled - return; - const boardLock = await meta.pluginData.locks.acquire(allStarboardsLock()); await meta.pluginData.state.starboardReactions.deleteStarboardReaction( meta.args.reaction.message.id, @@ -21,9 +18,6 @@ export const StarboardReactionRemoveAllEvt = starboardEvt({ event: "messageReactionRemoveAll", async listener(meta) { - // FIXME: Temporarily disabled - return; - const boardLock = await meta.pluginData.locks.acquire(allStarboardsLock()); await meta.pluginData.state.starboardReactions.deleteAllStarboardReactionsForMessageId(meta.args.message.id); boardLock.unlock(); diff --git a/backend/src/plugins/Starboard/util/removeMessageFromStarboard.ts b/backend/src/plugins/Starboard/util/removeMessageFromStarboard.ts index 1a331358..7659f393 100644 --- a/backend/src/plugins/Starboard/util/removeMessageFromStarboard.ts +++ b/backend/src/plugins/Starboard/util/removeMessageFromStarboard.ts @@ -1,6 +1,17 @@ +import { BaseGuildTextChannel } from "discord.js"; import { StarboardMessage } from "../../../data/entities/StarboardMessage"; import { noop } from "../../../utils"; export async function removeMessageFromStarboard(pluginData, msg: StarboardMessage) { - await pluginData.client.deleteMessage(msg.starboard_channel_id, msg.starboard_message_id).catch(noop); + // fixes stuck entries on starboard_reactions table after messages being deleted, probably should add a cleanup script for this as well, i.e. DELETE FROM starboard_reactions WHERE message_id NOT IN (SELECT id FROM starboard_messages) + await pluginData.state.starboardReactions.deleteAllStarboardReactionsForMessageId(msg.message_id).catch(noop); + + // just re-do the deletion, i know this isnt clean but i dont care + const channel: BaseGuildTextChannel = await pluginData.client.channels.cache.find( + chan => chan.id === msg.starboard_channel_id, + ); + if (!channel || (channel.type !== "GUILD_TEXT" && channel.type !== "GUILD_NEWS")) return; + const message = await channel.messages.fetch(msg.starboard_message_id); + if (!message || !message.deletable) return; + await message.delete().catch(noop); }