summaryrefslogtreecommitdiff
path: root/src/handlers/event/pinboard.rs
diff options
context:
space:
mode:
authorseth <[email protected]>2024-04-20 02:31:40 +0000
committerGitHub <[email protected]>2024-04-19 22:31:40 -0400
commit3d07413690c551d9f034c93af85ae8da5a495e14 (patch)
tree517d2e053ebdeb9a3be0ffce6dec36cbc4ce316e /src/handlers/event/pinboard.rs
parent1b92b254bc64b356f5c59657d2f0acc767bb2964 (diff)
spring cleaning (#165)
* treewide: lightly refactor everything * once_cell -> std::sync * remove build.rs we can get our target at runtime * commands::copypasta: refactor selection * drop owo_colors * reactboard: always remove author from count * commands: better handle behavior outside of guilds * ci: garnix -> gha * nix: drop flake-parts & pre-commit-hooks * nix: fix rust flags in derivation * add gha badge to readme * ci: fail when format changes are made * ci: only run on push to main * nix: fix nil script * nix: add libiconv to darwin deps * ci: disable fail-fast * nix: fix actionlint & static checks * ci: add release gates * nix: fix nil check again * ci: give release gates unique names * ci: only build static packages in docker workflow * nix: move dev outputs to subflake * fix some typos * nix: cleanup checks & dev shell * add editorconfig
Diffstat (limited to 'src/handlers/event/pinboard.rs')
-rw-r--r--src/handlers/event/pinboard.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/handlers/event/pinboard.rs b/src/handlers/event/pinboard.rs
index be10eac..5b7d454 100644
--- a/src/handlers/event/pinboard.rs
+++ b/src/handlers/event/pinboard.rs
@@ -1,7 +1,7 @@
use crate::{utils, Data};
use eyre::{eyre, Context as _, OptionExt as _, Result};
-use log::debug;
+use log::{debug, warn};
use poise::serenity_prelude::{
ChannelId, Context, CreateAllowedMentions, CreateMessage, Message, MessageType, User,
};
@@ -12,7 +12,12 @@ pub async fn handle(ctx: &Context, message: &Message, data: &Data) -> Result<()>
}
let gid = message.guild_id.unwrap_or_default();
- let settings = data.storage.get_guild_settings(&gid).await?;
+ let Some(storage) = &data.storage else {
+ warn!("Can't create PinBoard entry; no storage backend found!");
+ return Ok(());
+ };
+
+ let settings = storage.get_guild_settings(&gid).await?;
if !settings.pinboard_enabled {
debug!("PinBoard is disabled in {gid}, ignoring");
@@ -53,13 +58,13 @@ pub async fn handle(ctx: &Context, message: &Message, data: &Data) -> Result<()>
.find(|pin| pin.id == reference_id)
.ok_or_else(|| eyre!("Couldn't find a pin for message {reference_id}!"))?;
- redirect(ctx, pin, &message.author, target).await?;
+ redirect(ctx, pin, &message.author, &target).await?;
pin.unpin(ctx).await?;
Ok(())
}
-async fn redirect(ctx: &Context, pin: &Message, pinner: &User, target: ChannelId) -> Result<()> {
+async fn redirect(ctx: &Context, pin: &Message, pinner: &User, target: &ChannelId) -> Result<()> {
let embed = utils::resolve_message_to_embed(ctx, pin).await;
let mentions = CreateAllowedMentions::new().empty_roles().empty_users();
let message = CreateMessage::default()