aboutsummaryrefslogtreecommitdiff
path: root/src/commands/meme/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/meme/mod.rs')
-rw-r--r--src/commands/meme/mod.rs115
1 files changed, 60 insertions, 55 deletions
diff --git a/src/commands/meme/mod.rs b/src/commands/meme/mod.rs
index 6ce30b6..31d9b78 100644
--- a/src/commands/meme/mod.rs
+++ b/src/commands/meme/mod.rs
@@ -1,9 +1,16 @@
use diesel::PgConnection;
use log::debug;
-use rand::{Rng, thread_rng};
+use rand::random;
use serenity::{
- framework::standard::macros::group,
- http::AttachmentType,
+ all::ReactionType,
+ builder::{
+ CreateAttachment,
+ CreateMessage,
+ },
+ framework::standard::{
+ macros::group,
+ CommandResult,
+ },
model::channel::Message,
prelude::*,
};
@@ -14,7 +21,6 @@ use crate::{
PlayQueue,
},
db::Meme,
- Result,
};
pub use self::{
@@ -24,68 +30,67 @@ pub use self::{
invoke::*,
};
-mod history;
mod create;
-mod invoke;
mod delete;
+mod history;
+mod invoke;
-group!({
- name: "memes",
- options: {
- only_in: "guild",
- },
- commands: [
- meme,
- audio_meme,
- silent_Meme,
- omen,
- audioomen,
- silentomen,
- addmeme,
- addaudiomeme,
- delmeme,
- wat,
- stats,
- history,
- rare_meme,
- memers,
- query,
- ],
-});
+#[group]
+#[commands(
+ meme,
+ audio_meme,
+ silent_meme,
+ omen,
+ audioomen,
+ silentomen,
+ addmeme,
+ addaudiomeme,
+ delmeme,
+ wat,
+ stats,
+ history,
+ rare_meme,
+ memers,
+ query
+)]
+struct Memes;
-fn send_meme(ctx: &Context, t: &Meme, conn: &mut PgConnection, msg: &Message) -> Result<()> {
- let should_tts = t.content.as_ref().map(|t| t.len() > 0).unwrap_or(false) &&
- thread_rng().gen::<u32>() % 25 == 0;
+async fn send_meme(
+ ctx: &Context,
+ t: &Meme,
+ conn: &mut PgConnection,
+ msg: &Message,
+) -> CommandResult {
+ let should_tts =
+ t.content.as_ref().map(|t| t.len() > 0).unwrap_or(false) && random::<u32>() % 25 == 0;
debug!("sending meme (tts: {}): {:?}", should_tts, t);
let image = t.image(conn);
let audio = t.audio(conn);
+ let cmsg = {
+ let ret = CreateMessage::default().tts(should_tts);
+
+ match t.content {
+ Some(ref text) if text.len() > 0 => ret.content(text),
+ _ => ret,
+ }
+ };
+
match image {
Some(image) => {
let image = image?;
- msg.channel_id.send_files(ctx, vec!(AttachmentType::Bytes((&image.data, &image.filename))), |m| {
- let ret = m.tts(should_tts);
+ let att = CreateAttachment::bytes(image.data.as_slice(), &image.filename);
- match t.content {
- Some(ref text) if text.len() > 0 => ret.content(text),
- _ => ret,
- }
- })?;
+ msg.channel_id.send_files(ctx, vec![att], cmsg).await?;
},
None => match t.content {
- Some(_) => { msg.channel_id.send_message(ctx, |m| {
- let ret = m.tts(should_tts);
-
- match t.content {
- Some(ref text) if text.len() > 0 => ret.content(text),
- _ => ret,
- }
- })?; },
+ Some(_) => {
+ msg.channel_id.send_message(ctx, cmsg).await?;
+ },
None => {},
-
},
};
@@ -96,19 +101,19 @@ fn send_meme(ctx: &Context, t: &Meme, conn: &mut PgConnection, msg: &Message) ->
let audio = audio?;
{
- let queue_lock = ctx.data.write().get::<PlayQueue>().cloned().unwrap();
+ let queue_lock = ctx.data.write().await.get::<PlayQueue>().cloned().unwrap();
let mut play_queue = queue_lock.write().unwrap();
- play_queue.meme_queue.push_back(PlayArgs{
- initiator: msg.author.name.clone(),
- data: ::either::Right(audio.data.clone()),
+ play_queue.meme_queue.push_back(PlayArgs {
+ initiator: msg.author.name.clone(),
+ data: ::either::Right(audio.data.clone()),
sender_channel: msg.channel_id,
- start: None,
- end: None,
+ start: None,
+ end: None,
});
}
- msg.react(ctx, "📣")?;
+ msg.react(ctx, ReactionType::Unicode("📣".to_owned())).await?;
}
Ok(())