From b2a53b0722244ae2ab0c3497e0377522efacb675 Mon Sep 17 00:00:00 2001 From: Nils <7890309+DarkView@users.noreply.github.com> Date: Sun, 20 Dec 2020 17:32:24 +0100 Subject: [PATCH] Add locks to starboard and include example of level-only starring (#125) --- .../src/plugins/Starboard/StarboardPlugin.ts | 19 +++++++++++++++++++ .../events/StarboardReactionAddEvt.ts | 2 ++ 2 files changed, 21 insertions(+) diff --git a/backend/src/plugins/Starboard/StarboardPlugin.ts b/backend/src/plugins/Starboard/StarboardPlugin.ts index f84b8358..c3374e56 100644 --- a/backend/src/plugins/Starboard/StarboardPlugin.ts +++ b/backend/src/plugins/Starboard/StarboardPlugin.ts @@ -88,6 +88,25 @@ export const StarboardPlugin = zeppelinGuildPlugin()("starb basic: enabled: true ~~~ + + ### Limit starboard to a specific level (and above) + This is identical to the basic starboard above, but only works for a specific level (>=50). + + ~~~yml + starboard: + config: + boards: + levelonly: + enabled: false # The starboard starts disabled and is then enabled in a level override below + channel_id: "604342689038729226" + stars_required: 1 + overrides: + - level: ">=50" + config: + boards: + levelonly: + enabled: true + ~~~ `), }, diff --git a/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts b/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts index 43bdf063..a4fe7cb2 100644 --- a/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts +++ b/backend/src/plugins/Starboard/events/StarboardReactionAddEvt.ts @@ -58,6 +58,7 @@ export const StarboardReactionAddEvt = starboardEvt({ }); for (const starboard of applicableStarboards) { + const boardLock = await pluginData.locks.acquire(`starboards-channel-${starboard.channel_id}`); // Save reaction into the database await pluginData.state.starboardReactions.createStarboardReaction(msg.id, userId).catch(noop); @@ -73,6 +74,7 @@ export const StarboardReactionAddEvt = starboardEvt({ if (reactionsCount >= starboard.stars_required) { await saveMessageToStarboard(pluginData, msg, starboard); } + boardLock.unlock(); } }, });