From a19de26ff1e73ef0950612111ed26f633afeb098 Mon Sep 17 00:00:00 2001 From: metal Date: Sat, 4 Sep 2021 17:20:50 +0100 Subject: [PATCH] Re-enable starboard + fixes (#262) --- .../Starboard/events/StarboardReactionAddEvt.ts | 3 --- .../events/StarboardReactionRemoveEvts.ts | 6 ------ .../util/removeMessageFromStarboard.ts | 17 +++++++++++++++-- 3 files changed, 15 insertions(+), 11 deletions(-) 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..f4635371 100644 --- a/backend/src/plugins/Starboard/util/removeMessageFromStarboard.ts +++ b/backend/src/plugins/Starboard/util/removeMessageFromStarboard.ts @@ -1,6 +1,19 @@ +import { GuildPluginData } from "knub"; import { StarboardMessage } from "../../../data/entities/StarboardMessage"; import { noop } from "../../../utils"; +import { StarboardPluginType } from "../types"; -export async function removeMessageFromStarboard(pluginData, msg: StarboardMessage) { - await pluginData.client.deleteMessage(msg.starboard_channel_id, msg.starboard_message_id).catch(noop); +export async function removeMessageFromStarboard( + pluginData: GuildPluginData, + msg: StarboardMessage, +) { + // 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); + + // this code is now Almeida-certified and no longer ugly :ok_hand: :cake: + const channel = pluginData.client.channels.cache.find(c => c.id === msg.starboard_channel_id); + if (!channel?.isText()) return; + const message = await channel.messages.fetch(msg.starboard_message_id).catch(noop); + if (!message?.deletable) return; + await message.delete().catch(noop); }