From 0025ad5ea8d412aacc3184d18063fd5ff3de0175 Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 2 Dec 2023 07:00:24 -0500 Subject: feat: add per guild configuration --- src/handlers/event/pinboard.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/handlers/event/pinboard.rs') 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?; } -- cgit v1.2.3