From e7d380f3918dc57ce8cb42baf0f9d955e0798d92 Mon Sep 17 00:00:00 2001 From: Anish Nayak Date: Wed, 13 Aug 2025 15:36:57 +0100 Subject: [PATCH] made the Option<> changes and some stylistics --- src/database/migrations/0001_init.cql | 2 +- src/database/models.rs | 25 ++++++++++--------- src/framework/bot.rs | 2 ++ src/framework/interactions/context.rs | 5 ++-- src/framework/interactions/message_command.rs | 2 ++ .../interactions/message_command_runner.rs | 6 ++--- src/framework/interactions/messages.rs | 2 +- src/framework/interactions/mod.rs | 3 +++ src/groups/calls/commands.rs | 1 + src/main.rs | 2 +- 10 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/database/migrations/0001_init.cql b/src/database/migrations/0001_init.cql index 79c64eb..012062d 100644 --- a/src/database/migrations/0001_init.cql +++ b/src/database/migrations/0001_init.cql @@ -5,6 +5,7 @@ CREATE KEYSPACE IF NOT EXISTS payphone } AND TABLETS = { 'enabled': false }; + CREATE TYPE IF NOT EXISTS payphone.message ( id BIGINT, @@ -27,7 +28,6 @@ CREATE TYPE IF NOT EXISTS payphone.message ( is_censored BOOLEAN, ); - CREATE TABLE IF NOT EXISTS payphone.users ( user_id BIGINT PRIMARY KEY, diff --git a/src/database/models.rs b/src/database/models.rs index 6d5e725..14325dc 100644 --- a/src/database/models.rs +++ b/src/database/models.rs @@ -195,36 +195,36 @@ impl From for User { pub struct Message { pub id: i64, pub author_id: i64, - pub author_name: Option, - pub author_avatar_url: Option, + pub author_name: String, + pub author_avatar_url: String, pub author_mask: Option, - pub content: Option, + pub content: String, pub attachments: Option>, pub sticker: Option, pub propagation_message_id: Option, pub propagation_channel_id: Option, pub replying_to_id: Option, - pub is_deleted: Option, - pub is_edited: Option, - pub is_censored: Option, + pub is_deleted: bool, + pub is_edited: bool, + pub is_censored: bool, } impl<'a> Object<'a> for Message { type Row = ( i64, i64, + String, + String, Option, - Option, - Option, - Option, + String, Option>, Option, Option, Option, Option, - Option, - Option, - Option, + bool, + bool, + bool, ); fn from_row(row: Self::Row) -> Self { Self { @@ -398,6 +398,7 @@ impl Report { ) .await .map_err(DatabaseError::QueryError)?; + Ok(()) } } diff --git a/src/framework/bot.rs b/src/framework/bot.rs index 461722e..d7d2e4b 100644 --- a/src/framework/bot.rs +++ b/src/framework/bot.rs @@ -108,6 +108,7 @@ impl Bot { on_server_delete_handlers: Vec::new(), } } + pub fn message_command(mut self, command: impl MessageCommand + 'static) -> Self { self.message_commands.push(Arc::new(command)); self @@ -200,6 +201,7 @@ impl Bot { } let mut bot = self; + bot.on_interaction_handlers.insert( 0, Arc::new(MessageCommandRunner { diff --git a/src/framework/interactions/context.rs b/src/framework/interactions/context.rs index 14cf949..ac69027 100644 --- a/src/framework/interactions/context.rs +++ b/src/framework/interactions/context.rs @@ -6,6 +6,7 @@ use twilight_model::{ }; use crate::framework::{ + interactions::messages::InteractionResponder, commands::messages::OriginalMessageUpdater, interactions::InteractionError, runtime::Runtime, }; @@ -18,8 +19,8 @@ pub struct InteractionContext { impl InteractionContext { pub fn send( self: &Arc, - ) -> crate::framework::interactions::messages::InteractionResponder { - crate::framework::interactions::messages::InteractionResponder::new(self.clone()) + ) -> InteractionResponder { + InteractionResponder::new(self.clone()) } pub fn new(event: InteractionCreate, rt: Arc>, prefix: String) -> Self { Self { event, rt, prefix } diff --git a/src/framework/interactions/message_command.rs b/src/framework/interactions/message_command.rs index e7cbfbd..381dc40 100644 --- a/src/framework/interactions/message_command.rs +++ b/src/framework/interactions/message_command.rs @@ -6,9 +6,11 @@ use twilight_model::gateway::payload::incoming::InteractionCreate; #[async_trait] pub trait MessageCommand: Send + Sync + Debug { fn name(&self) -> &'static str; + fn description(&self) -> &'static str { "A Payphone context menu command." } + async fn execute( &self, ctx: InteractionContext, diff --git a/src/framework/interactions/message_command_runner.rs b/src/framework/interactions/message_command_runner.rs index b6b1c85..198bdf8 100644 --- a/src/framework/interactions/message_command_runner.rs +++ b/src/framework/interactions/message_command_runner.rs @@ -1,3 +1,4 @@ +use crate::framework::interactions::InteractionError::InteractionTypeUnsent; use async_trait::async_trait; use std::sync::Arc; use twilight_model::gateway::payload::incoming::InteractionCreate; @@ -20,10 +21,7 @@ impl OnInteractionHandler async fn on_interaction(&self, event: &InteractionCreate, rt: Arc>) -> EventResult { if let Err(e) = self.registry.execute(event, rt).await { // Only log errors that aren't "not a message command" - if !matches!( - e, - crate::framework::interactions::InteractionError::InteractionTypeUnsent - ) { + if !matches!(e, InteractionTypeUnsent) { log::error!("Message command dispatch error: {e:?}"); } } diff --git a/src/framework/interactions/messages.rs b/src/framework/interactions/messages.rs index 573ed8a..7547fb6 100644 --- a/src/framework/interactions/messages.rs +++ b/src/framework/interactions/messages.rs @@ -34,7 +34,7 @@ impl InteractionResponder { }, ) .await - .map_err(|_| InteractionError::DeferringFailed)?; + .map_err(|_| InteractionError::RespondingFailed)?; Ok(()) } } diff --git a/src/framework/interactions/mod.rs b/src/framework/interactions/mod.rs index 4cd313d..fecf3ee 100644 --- a/src/framework/interactions/mod.rs +++ b/src/framework/interactions/mod.rs @@ -24,6 +24,9 @@ pub enum InteractionError { #[error("The original message was attempted to be edited, but it failed")] OriginalMessageEditingFailed, + #[error("Responding to the interaction failed")] + RespondingFailed, + #[error("No prefixes were returned for the event")] PrefixesVectorEmpty, diff --git a/src/groups/calls/commands.rs b/src/groups/calls/commands.rs index 47db542..9bec673 100644 --- a/src/groups/calls/commands.rs +++ b/src/groups/calls/commands.rs @@ -12,6 +12,7 @@ use crate::{ state::State, utils::{Bye, get_random_u64}, }; + #[derive(Debug, Default)] pub struct ReportMessageCommand; diff --git a/src/main.rs b/src/main.rs index b4b09c5..f2ff6bb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -107,9 +107,9 @@ use std::{ sync::mpsc, }; -use crate::groups::calls::commands::ReportMessageCommand; use crate::{ cli::{Args, Commands}, + groups::calls::commands::ReportMessageCommand, framework::bot::Bot, groups::{ about::{commands::HelpCommand, components::HelpGoBackButton},