summaryrefslogtreecommitdiff
path: root/src/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'src/handlers')
-rw-r--r--src/handlers/error.rs4
-rw-r--r--src/handlers/event/guild.rs14
-rw-r--r--src/handlers/event/mod.rs11
-rw-r--r--src/handlers/event/pinboard.rs6
-rw-r--r--src/handlers/event/reactboard.rs45
5 files changed, 24 insertions, 56 deletions
diff --git a/src/handlers/error.rs b/src/handlers/error.rs
index c6cefa2..bddd4f4 100644
--- a/src/handlers/error.rs
+++ b/src/handlers/error.rs
@@ -18,7 +18,7 @@ pub async fn handle(error: poise::FrameworkError<'_, Data, Report>) {
}
FrameworkError::Command { error, ctx } => {
- error!("Error in command {}:\n{error:?}", ctx.command().name);
+ error!("Error in command {}:\n{error}", ctx.command().name);
ctx.send(|c| {
c.embed(|e| {
e.title("Something went wrong!")
@@ -37,7 +37,7 @@ pub async fn handle(error: poise::FrameworkError<'_, Data, Report>) {
event,
framework: _,
} => {
- error!("Error while handling event {}:\n{error:?}", event.name());
+ error!("Error while handling event {}:\n{error}", event.name());
}
error => {
diff --git a/src/handlers/event/guild.rs b/src/handlers/event/guild.rs
index 3473276..4583688 100644
--- a/src/handlers/event/guild.rs
+++ b/src/handlers/event/guild.rs
@@ -3,14 +3,12 @@ use log::*;
use poise::serenity_prelude::{Guild, UnavailableGuild};
use crate::{storage, Data};
-use storage::settings::Settings;
-use storage::Storage;
+use storage::Settings;
pub async fn handle_create(guild: &Guild, _is_new: &bool, data: &Data) -> Result<()> {
let storage = &data.storage;
- let key = Storage::format_settings_key(guild.id);
- if storage.key_exists(&key).await? {
+ if storage.guild_settings_exist(&guild.id).await? {
debug!("Not recreating settings key for {}", guild.id);
return Ok(());
}
@@ -21,14 +19,14 @@ pub async fn handle_create(guild: &Guild, _is_new: &bool, data: &Data) -> Result
..Default::default()
};
- warn!("Creating new settings key {key}:\n{settings:#?}");
- storage.create_settings_key(settings).await?;
+ warn!("Creating new settings key for {}:\n{settings:#?}", guild.id);
+ storage.create_guild_settings(settings).await?;
Ok(())
}
pub async fn handle_delete(guild: &UnavailableGuild, data: &Data) -> Result<()> {
- let key = Storage::format_settings_key(guild.id);
- data.storage.delete_key(&key).await?;
+ data.storage.delete_guild_settings(&guild.id).await?;
+
Ok(())
}
diff --git a/src/handlers/event/mod.rs b/src/handlers/event/mod.rs
index 6b1fc9b..5abbfb4 100644
--- a/src/handlers/event/mod.rs
+++ b/src/handlers/event/mod.rs
@@ -1,4 +1,3 @@
-use crate::storage::{ReactBoardInfo, REACT_BOARD_KEY};
use crate::Data;
use color_eyre::eyre::{Report, Result};
@@ -20,16 +19,6 @@ pub async fn handle(
match event {
Event::Ready { data_about_bot } => {
info!("Logged in as {}!", data_about_bot.user.name);
-
- // make sure react board is setup
- let storage = &data.storage;
- if !storage.key_exists(REACT_BOARD_KEY).await? {
- warn!("Creating new ReactBoardInfo key {REACT_BOARD_KEY}");
-
- storage
- .create_reactboard_info_key(ReactBoardInfo::default())
- .await?;
- }
}
Event::Message { new_message } => {
diff --git a/src/handlers/event/pinboard.rs b/src/handlers/event/pinboard.rs
index 7a13b88..4a1dad7 100644
--- a/src/handlers/event/pinboard.rs
+++ b/src/handlers/event/pinboard.rs
@@ -1,6 +1,6 @@
use crate::{utils, Data};
-use color_eyre::eyre::{eyre, Context as _, Result};
+use color_eyre::eyre::{Context as _, Result};
use log::*;
use poise::serenity_prelude::model::prelude::*;
use poise::serenity_prelude::Context;
@@ -37,7 +37,7 @@ pub async fn handle(ctx: &Context, pin: &ChannelPinsUpdateEvent, data: &Data) ->
.channel_id
.pins(&ctx.http)
.await
- .expect("Couldn't get a list of pins!?");
+ .wrap_err_with(|| "Couldn't get a list of pins!?")?;
for pin in pins {
// We call `take` because it's supposed to be just for the latest message.
@@ -64,7 +64,7 @@ async fn redirect(
.set_embed(embed)
})
.await
- .wrap_err_with(|| eyre!("couldn't redirect message"))?;
+ .wrap_err_with(|| "Couldn't redirect message")?;
Ok(())
}
diff --git a/src/handlers/event/reactboard.rs b/src/handlers/event/reactboard.rs
index fa546c0..7550c6a 100644
--- a/src/handlers/event/reactboard.rs
+++ b/src/handlers/event/reactboard.rs
@@ -1,5 +1,5 @@
use crate::{storage, utils, Data};
-use storage::{ReactBoardEntry, REACT_BOARD_KEY};
+use storage::ReactBoardEntry;
use color_eyre::eyre::{eyre, Context as _, Result};
use log::*;
@@ -72,19 +72,11 @@ async fn send_to_reactboard(
return Ok(());
}
- let mut reactboard = storage.get_reactboard_info().await?;
-
- // try to find previous reactboard entry by the id of the original message
- let old_index = reactboard
- .reactions
- .iter()
- .position(|r| r.original_id == msg.id);
-
let content = format!("{} **#{}**", reaction.reaction_type, reaction.count);
// bump reaction count if previous entry exists
- if let Some(old_index) = old_index {
- let old_entry = reactboard.reactions[old_index].clone();
+ if storage.reactboard_entry_exists(guild_id, &msg.id).await? {
+ let old_entry = storage.get_reactboard_entry(guild_id, &msg.id).await?;
// bail if we don't need to edit anything
if old_entry.reaction_count >= reaction.count {
@@ -99,14 +91,14 @@ async fn send_to_reactboard(
ctx.http
.get_message(
- *old_entry.channel_id.as_u64(),
- *old_entry.message_id.as_u64(),
+ *old_entry.posted_channel_id.as_u64(),
+ *old_entry.posted_message_id.as_u64(),
)
.await
.wrap_err_with(|| {
format!(
"Couldn't get previous message from ReactBoardEntry {} in Redis DB!",
- old_entry.original_id
+ old_entry.original_message_id
)
})?
.edit(ctx, |m| m.content(content))
@@ -116,14 +108,8 @@ async fn send_to_reactboard(
let mut new_entry = old_entry.clone();
new_entry.reaction_count = reaction.count;
- reactboard.reactions.remove(old_index);
- reactboard.reactions.push(new_entry.clone());
-
- debug!(
- "Updating ReactBoard entry {}\nOld entry:\n{old_entry:#?}\n\nNew:\n{new_entry:#?}\n",
- msg.id
- );
- storage.create_reactboard_info_key(reactboard).await?;
+ debug!("Updating ReactBoard entry\nOld entry:\n{old_entry:#?}\n\nNew:\n{new_entry:#?}\n",);
+ storage.create_reactboard_entry(guild_id, new_entry).await?;
// make new message and add entry to redis otherwise
} else {
let embed = utils::resolve_message_to_embed(ctx, msg).await;
@@ -137,19 +123,14 @@ async fn send_to_reactboard(
.await?;
let entry = ReactBoardEntry {
- original_id: msg.id,
+ original_message_id: msg.id,
reaction_count: reaction.count,
- channel_id: resp.channel_id,
- message_id: resp.id,
+ posted_channel_id: resp.channel_id,
+ posted_message_id: resp.id,
};
- reactboard.reactions.push(entry.clone());
-
- debug!(
- "Creating new ReactBoard entry {} in {REACT_BOARD_KEY}:\n{:#?}",
- msg.id, entry
- );
- storage.create_reactboard_info_key(reactboard).await?;
+ debug!("Creating new ReactBoard entry:\n{entry:#?}");
+ storage.create_reactboard_entry(guild_id, entry).await?;
}
Ok(())