Major refactor
This commit is contained in:
67
crates/siren-bot/src/chat/mod.rs
Normal file
67
crates/siren-bot/src/chat/mod.rs
Normal file
@@ -0,0 +1,67 @@
|
||||
use serenity::all::{
|
||||
CommandInteraction,
|
||||
Context,
|
||||
CreateInteractionResponse,
|
||||
CreateInteractionResponseMessage,
|
||||
CreateMessage,
|
||||
EditInteractionResponse,
|
||||
InteractionResponseFlags,
|
||||
Message,
|
||||
ModalInteraction,
|
||||
UserId,
|
||||
};
|
||||
|
||||
pub async fn process_message(ctx: &Context, command: &CommandInteraction, private: bool) {
|
||||
create_message_response(&ctx, &command, "Processing...".to_string(), private).await;
|
||||
}
|
||||
|
||||
pub async fn user_dm(ctx: &Context, user_id: &UserId, content: String) -> Option<Message> {
|
||||
let data = CreateMessage::new().content(content.to_owned());
|
||||
match user_id.dm(ctx, data).await {
|
||||
Ok(message) => Some(message),
|
||||
Err(err) => {
|
||||
log::error!("Failed to create direct message for {content}\n{err}");
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn create_message_response(
|
||||
ctx: &Context,
|
||||
command: &CommandInteraction,
|
||||
content: String,
|
||||
private: bool,
|
||||
) {
|
||||
let mut data = CreateInteractionResponseMessage::new().content(content.to_owned());
|
||||
if private {
|
||||
data = data.flags(InteractionResponseFlags::EPHEMERAL);
|
||||
}
|
||||
let builder = CreateInteractionResponse::Message(data);
|
||||
match command.create_response(&ctx.http, builder).await {
|
||||
Ok(_) => {}
|
||||
Err(err) => {
|
||||
log::error!("Failed to create message response for {content}\n{err}");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
pub async fn create_modal_response(ctx: &Context, modal: &ModalInteraction) {
|
||||
let data = CreateInteractionResponseMessage::new();
|
||||
let builder = CreateInteractionResponse::Message(data);
|
||||
match modal.create_response(&ctx.http, builder).await {
|
||||
Ok(_) => {}
|
||||
Err(err) => {
|
||||
log::error!("Failed to create modal response\n{err}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn edit_response(ctx: &Context, command: &CommandInteraction, content: String) {
|
||||
let builder = EditInteractionResponse::new().content(content.to_owned());
|
||||
match command.edit_response(&ctx.http, builder).await {
|
||||
Ok(_) => {}
|
||||
Err(err) => {
|
||||
log::error!("Failed to create response for {content}\n{err}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user