summaryrefslogtreecommitdiff
path: root/src/handlers
diff options
context:
space:
mode:
authorseth <[email protected]>2024-01-20 21:19:09 -0500
committergithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2024-01-21 10:54:13 +0000
commitc6162b77fb113634359acc9dd6b7d6b4191fc5d4 (patch)
tree92e9e75006ed2b7d28197c34c9ca925a97b628dc /src/handlers
parentd903e7760a316d5476e65db0e6058dc5c8698cc2 (diff)
refactor: adjust to poise 0.6.1
Diffstat (limited to 'src/handlers')
-rw-r--r--src/handlers/error.rs33
-rw-r--r--src/handlers/event/mod.rs20
-rw-r--r--src/handlers/event/pinboard.rs15
-rw-r--r--src/handlers/event/reactboard.rs22
4 files changed, 49 insertions, 41 deletions
diff --git a/src/handlers/error.rs b/src/handlers/error.rs
index 034e870..4bca032 100644
--- a/src/handlers/error.rs
+++ b/src/handlers/error.rs
@@ -3,8 +3,8 @@ use crate::Data;
use color_eyre::eyre::Report;
use log::error;
-use poise::serenity_prelude::Timestamp;
-use poise::FrameworkError;
+use poise::serenity_prelude::{CreateEmbed, Timestamp};
+use poise::{CreateReply, FrameworkError};
pub async fn handle(error: poise::FrameworkError<'_, Data, Report>) {
match error {
@@ -12,24 +12,23 @@ pub async fn handle(error: poise::FrameworkError<'_, Data, Report>) {
error, framework, ..
} => {
error!("Error setting up client! Bailing out");
- framework.shard_manager().lock().await.shutdown_all().await;
+ framework.shard_manager().shutdown_all().await;
panic!("{error}")
}
- FrameworkError::Command { error, ctx } => {
+ FrameworkError::Command { error, ctx, .. } => {
error!("Error in command {}:\n{error}", ctx.command().name);
- ctx.send(|c| {
- c.embed(|e| {
- e.title("Something went wrong!")
- .description("oopsie")
- .timestamp(Timestamp::now())
- .color(Colors::Orange)
- })
- })
- .await
- .ok();
+ let embed = CreateEmbed::default()
+ .title("Something went wrong!")
+ .description("oopsie")
+ .timestamp(Timestamp::now())
+ .color(Colors::Orange);
+
+ let reply = CreateReply::default().embed(embed);
+
+ ctx.send(reply).await.ok();
}
FrameworkError::EventHandler {
@@ -37,8 +36,12 @@ pub async fn handle(error: poise::FrameworkError<'_, Data, Report>) {
ctx: _,
event,
framework: _,
+ ..
} => {
- error!("Error while handling event {}:\n{error}", event.name());
+ error!(
+ "Error while handling event {}:\n{error}",
+ event.snake_case_name()
+ );
}
error => {
diff --git a/src/handlers/event/mod.rs b/src/handlers/event/mod.rs
index 5fd3db5..50a19d5 100644
--- a/src/handlers/event/mod.rs
+++ b/src/handlers/event/mod.rs
@@ -3,7 +3,8 @@ use crate::Data;
use color_eyre::eyre::{Report, Result};
use log::info;
use poise::serenity_prelude as serenity;
-use poise::{Event, FrameworkContext};
+use poise::FrameworkContext;
+use serenity::FullEvent;
mod guild;
mod message;
@@ -12,24 +13,29 @@ mod reactboard;
pub async fn handle(
ctx: &serenity::Context,
- event: &Event<'_>,
+ event: &FullEvent,
framework: FrameworkContext<'_, Data, Report>,
data: &Data,
) -> Result<()> {
match event {
- Event::Ready { data_about_bot } => {
+ FullEvent::Ready { data_about_bot } => {
info!("Logged in as {}!", data_about_bot.user.name);
}
- Event::Message { new_message } => {
+ FullEvent::Message { new_message } => {
message::handle(ctx, framework, new_message, data).await?;
pinboard::handle(ctx, new_message, data).await?;
}
- Event::ReactionAdd { add_reaction } => reactboard::handle(ctx, add_reaction, data).await?,
+ FullEvent::ReactionAdd { add_reaction } => {
+ reactboard::handle(ctx, add_reaction, data).await?;
+ }
+
+ FullEvent::GuildCreate { guild, is_new } => {
+ guild::handle_create(guild, &is_new.unwrap_or_default(), data).await?;
+ }
- Event::GuildCreate { guild, is_new } => guild::handle_create(guild, is_new, data).await?,
- Event::GuildDelete {
+ FullEvent::GuildDelete {
incomplete,
full: _,
} => guild::handle_delete(incomplete, data).await?,
diff --git a/src/handlers/event/pinboard.rs b/src/handlers/event/pinboard.rs
index cc67334..1db14b6 100644
--- a/src/handlers/event/pinboard.rs
+++ b/src/handlers/event/pinboard.rs
@@ -2,7 +2,9 @@ use crate::{utils, Data};
use color_eyre::eyre::{eyre, Context as _, Result};
use log::debug;
-use poise::serenity_prelude::{ChannelId, Context, Message, MessageType, User};
+use poise::serenity_prelude::{
+ ChannelId, Context, CreateAllowedMentions, CreateMessage, Message, MessageType, User,
+};
pub async fn handle(ctx: &Context, message: &Message, data: &Data) -> Result<()> {
if message.kind != MessageType::PinsAdd {
@@ -59,13 +61,14 @@ pub async fn handle(ctx: &Context, message: &Message, data: &Data) -> 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()
+ .allowed_mentions(mentions)
+ .content(format!("📌'd by {pinner} in {}", pin.link()))
+ .embed(embed);
target
- .send_message(&ctx.http, |m| {
- m.allowed_mentions(|am| am.empty_parse())
- .content(format!("📌'd by {pinner} in {}", pin.link()))
- .set_embed(embed)
- })
+ .send_message(&ctx.http, message)
.await
.wrap_err_with(|| "Couldn't redirect message")?;
diff --git a/src/handlers/event/reactboard.rs b/src/handlers/event/reactboard.rs
index 7341565..17deeb0 100644
--- a/src/handlers/event/reactboard.rs
+++ b/src/handlers/event/reactboard.rs
@@ -3,7 +3,9 @@ use storage::ReactBoardEntry;
use color_eyre::eyre::{eyre, Context as _, Result};
use log::debug;
-use poise::serenity_prelude::{Context, GuildId, Message, MessageReaction, Reaction};
+use poise::serenity_prelude::{
+ Context, CreateMessage, EditMessage, GuildId, Message, MessageReaction, Reaction,
+};
pub async fn handle(ctx: &Context, reaction: &Reaction, data: &Data) -> Result<()> {
let msg = reaction
@@ -87,11 +89,10 @@ async fn send_to_reactboard(
msg.id, old_entry.reaction_count, reaction.count
);
+ let edited = EditMessage::new().content(content);
+
ctx.http
- .get_message(
- *old_entry.posted_channel_id.as_u64(),
- *old_entry.posted_message_id.as_u64(),
- )
+ .get_message(old_entry.posted_channel_id, old_entry.posted_message_id)
.await
.wrap_err_with(|| {
format!(
@@ -99,7 +100,7 @@ async fn send_to_reactboard(
old_entry.original_message_id
)
})?
- .edit(ctx, |m| m.content(content))
+ .edit(ctx, edited)
.await?;
// update reaction count in redis
@@ -111,14 +112,9 @@ async fn send_to_reactboard(
// make new message and add entry to redis otherwise
} else {
let embed = utils::resolve_message_to_embed(ctx, msg).await;
+ let message = CreateMessage::default().content(content).embed(embed);
- let resp = target
- .send_message(ctx, |m| {
- m.allowed_mentions(|am| am.empty_parse())
- .content(content)
- .set_embed(embed)
- })
- .await?;
+ let resp = target.send_message(ctx, message).await?;
let entry = ReactBoardEntry {
original_message_id: msg.id,