From 4ff36d3fe8645d6eee50297ef0f30e81dc620aa1 Mon Sep 17 00:00:00 2001 From: Joey Hines Date: Sun, 6 Mar 2022 14:38:23 -0700 Subject: [PATCH] Fixed players not being able to send images --- src/commands.rs | 6 ++++-- src/helper.rs | 22 ++++++++++++++++++++-- src/main.rs | 6 ++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/commands.rs b/src/commands.rs index 2971de3..fa17f82 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -99,7 +99,7 @@ async fn say(ctx: &Context, msg: &Message, args: Args) -> CommandResult { let msg = format!("**wOxlf **> {}", args.rest()); - send_msg_to_player_channels(ctx, &guild, &global_data, MessageSource::Host, &msg, false).await; + send_msg_to_player_channels(ctx, &guild, &global_data, MessageSource::Host, &msg, None, false).await; Ok(()) } @@ -116,7 +116,7 @@ async fn broadcast(ctx: &Context, msg: &Message, args: Args) -> CommandResult { let msg = build_system_message(args.rest()); - send_msg_to_player_channels(ctx, &guild, &global_data, MessageSource::Host, &msg, true).await; + send_msg_to_player_channels(ctx, &guild, &global_data, MessageSource::Host, &msg, None,true).await; Ok(()) } @@ -159,6 +159,7 @@ async fn next_phase(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu &global_data, MessageSource::Host, &broadcast, + None, true, ) .await; @@ -275,6 +276,7 @@ async fn add_time(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult &global_data, MessageSource::Host, &broadcast, + None, true, ) .await; diff --git a/src/helper.rs b/src/helper.rs index 0afa03a..9ee6e79 100644 --- a/src/helper.rs +++ b/src/helper.rs @@ -14,6 +14,7 @@ use serenity::utils::MessageBuilder; use crate::data::{BotConfig, GameState, GlobalData, MessageSource, PlayerData}; use std::time::UNIX_EPOCH; +use serenity::http::AttachmentType; pub async fn send_msg_to_player_channels( ctx: &Context, @@ -21,6 +22,7 @@ pub async fn send_msg_to_player_channels( global_data: &GlobalData, msg_source: MessageSource, msg: &str, + attachment: Option>>, pin: bool, ) { for player_data in &global_data.game_state.player_data { @@ -36,7 +38,15 @@ pub async fn send_msg_to_player_channels( .unwrap(); let msg = channel - .send_message(&ctx.http, |m| m.content(&msg)) + .send_message(&ctx.http, |m| { + m.content(&msg); + + if let Some(attachment) = attachment.clone() { + m.add_files(attachment); + } + + m + }) .await .unwrap(); @@ -71,7 +81,15 @@ pub async fn send_msg_to_player_channels( }; host_channel - .send_message(&ctx.http, |m| m.content(format!("({}): {}", source, msg))) + .send_message(&ctx.http, |m| { + m.content(format!("({}): {}", source, msg)); + if let Some(attachment) = attachment { + m.add_files(attachment); + } + + m + } + ) .await .unwrap(); } diff --git a/src/main.rs b/src/main.rs index 2217da5..774443d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,6 +11,7 @@ use serenity::model::prelude::{Message, Ready}; use serenity::prelude::*; use std::sync::Arc; use structopt::StructOpt; +use serenity::http::AttachmentType; struct Handler {} @@ -38,12 +39,17 @@ impl EventHandler for Handler { let guild = msg.guild(&ctx.cache).await.unwrap(); let user_msg = format!("{} > {}", player_data.codename, msg.content); + let attachments: Vec = msg.attachments.iter().map(|a| { + AttachmentType::Image(&a.url) + }).collect(); + send_msg_to_player_channels( &ctx, &guild, &game_data, MessageSource::Player(msg.channel_id.0), &user_msg, + Some(attachments), false, ) .await;