summaryrefslogtreecommitdiff
path: root/src/handlers/event/pinboard.rs
diff options
context:
space:
mode:
authorseth <[email protected]>2023-12-02 07:00:24 -0500
committerseth <[email protected]>2023-12-15 16:41:13 -0500
commit0025ad5ea8d412aacc3184d18063fd5ff3de0175 (patch)
tree1d2b5ac5c04a092756180722358d929feeae50aa /src/handlers/event/pinboard.rs
parentac32ec2a0ba37deb0ad82b4f2ee9c1e1b359cc88 (diff)
feat: add per guild configuration
Diffstat (limited to 'src/handlers/event/pinboard.rs')
-rw-r--r--src/handlers/event/pinboard.rs22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/handlers/event/pinboard.rs b/src/handlers/event/pinboard.rs
index 33d2680..21e8170 100644
--- a/src/handlers/event/pinboard.rs
+++ b/src/handlers/event/pinboard.rs
@@ -1,4 +1,4 @@
-use crate::{utils, Data};
+use crate::{utils, Data, Settings};
use color_eyre::eyre::{eyre, Context as _, Result};
use log::*;
@@ -6,9 +6,23 @@ use poise::serenity_prelude::model::prelude::*;
use poise::serenity_prelude::Context;
pub async fn handle(ctx: &Context, pin: &ChannelPinsUpdateEvent, data: &Data) -> Result<()> {
- if let Some(sources) = &data.settings.pinboard_sources {
+ let gid = pin.guild_id.unwrap_or_default();
+ let settings = Settings::from_redis(&data.redis, &gid).await?;
+
+ let target = if let Some(target) = settings.reactboard_channel {
+ target
+ } else {
+ debug!("PinBoard is disabled in {gid}, ignoring");
+ return Ok(());
+ };
+
+ if let Some(sources) = settings.pinboard_watch {
if !sources.contains(&pin.channel_id) {
- warn!("Can't access source of pin!");
+ debug!(
+ "{} not listed in PinBoard settings for {gid}, ignoring",
+ &pin.channel_id
+ );
+
return Ok(());
}
}
@@ -22,7 +36,7 @@ pub async fn handle(ctx: &Context, pin: &ChannelPinsUpdateEvent, data: &Data) ->
for pin in pins {
// We call `take` because it's supposed to be just for the latest message.
- redirect(ctx, &pin, pinner.take(), data.settings.pinboard_target).await?;
+ redirect(ctx, &pin, pinner.take(), target).await?;
pin.unpin(&ctx).await?;
}