diff --git a/src/main.rs b/src/main.rs index 909a1734e0eb5ee4de2cdb1ed948ae69474c6cd5..acecd97a7c31bce6939165f5c532969be57a27ef 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,8 +6,6 @@ use serenity::{ use rand::Rng; -struct Handler; - static DISCORD_TOKEN: &str = include_str!("discord_token"); static SERVER_ID: u64 = 606351521117896704; @@ -44,6 +42,17 @@ static ALLOWED_REACTS: &[&'static str] = &[ UNSURE_REACT, ]; +macro_rules! e { + ($error: literal, $x:expr) => { + match $x { + Ok(_) => (), + Err(why) => eprintln!($error, why) + } + } +} + +struct Handler; + impl EventHandler for Handler { // Set a handler for the `message` event - so that whenever a new message // is received - the closure (or function) passed will be called. @@ -71,47 +80,53 @@ impl EventHandler for Handler { let message_content: Vec<_> = msg.content.splitn(2, ' ').collect(); match message_content[0] { "!join" => { - serenity::model::id::GuildId(SERVER_ID) + e!("Unable to get user: {:?}", + serenity::model::id::GuildId(SERVER_ID) .member(ctx.http.clone(), msg.author.id) - .map(|member| new_member(&ctx, member)); + .map(|member| new_member(&ctx, member))); }, "!move" => { let motion = message_content[1]; if motion.len() > 0 { create_motion(&ctx, &msg, motion); } else { - msg.channel_id.say( + e!("Error sending message: {:?}", + msg.channel_id.say( &ctx.http, "If there's something you want to motion, put it after the !move keyword", - ).map_err(|why| eprintln!("Error sending message: {:?}", why)); + )); } }, "!motion" => { - msg.channel_id.say( + e!("Error sending message: {:?}", + msg.channel_id.say( &ctx.http, "I hope you're not having a motion. You may have wanted to !move something instead." - ).map_err(|why| eprintln!("Error sending message: {:?}", why)); + )); }, "!poll" => { let topic = message_content[1]; if topic.len() > 0 { - create_motion(&ctx, &msg, topic); + create_poll(&ctx, &msg, topic); } else { - msg.channel_id.say( + e!("Error sending message: {:?}", + msg.channel_id.say( &ctx.http, "If there's something you want to motion, put it after the !move keyword", - ).map_err(|why| eprintln!("Error sending message: {:?}", why)); + )); } }, "!register" => { let name = message_content[1]; if name.len() > 0 { + e!("Unable to get member: {:?}", serenity::model::id::GuildId(SERVER_ID) .member(ctx.http.clone(), msg.author.id) .map(|mut member| { - member.remove_role(&ctx.http, UNREGISTERED_MEMBER_ROLE) - .map_err(|why| eprintln!("Unable to remove role: {:?}", why)); - member.edit(&ctx.http, |m| { + e!("Unable to remove role: {:?}", + member.remove_role(&ctx.http, UNREGISTERED_MEMBER_ROLE)); + e!("Unable to edit nickname: {:?}", + member.edit(&ctx.http, |m| { let mut rng = rand::thread_rng(); m.nickname(format!( "{}, {}", @@ -127,21 +142,16 @@ impl EventHandler for Handler { )); m }).map(|()| { - member.add_role(&ctx.http, REGISTERED_MEMBER_ROLE) - .map_err(|why| { - eprintln!("Unable to add role: {:?}", why); - }) - }).map_err(|why| { - eprintln!("Unable to edit nickname: {:?}", why); - }); + e!("Unable to add role: {:?}", + member.add_role(&ctx.http, REGISTERED_MEMBER_ROLE)); + })); }) - .map_err(|why| { - eprintln!("Unable to get member: {:?}", why); - }); - msg.delete(ctx).map_err(|why| eprintln!("Error deleting register message: {:?}", why)); + ); + e!("Error deleting register message: {:?}", + msg.delete(ctx)); } else { - msg.channel_id.say(&ctx.http, "Usage: !register <ucc username>") - .map_err(|why| eprintln!("Error sending message: {:?}", why)); + e!("Error sending message: {:?}", + msg.channel_id.say(&ctx.http, "Usage: !register <ucc username>")); } }, "!cowsay" => { @@ -160,15 +170,13 @@ impl EventHandler for Handler { String::from_utf8(output.stdout).expect("unable to parse stdout to String"), None, ); - msg.channel_id.say(&ctx.http, message.build()) - .map_err(|why| eprintln!("Error sending message: {:?}", why)); + e!("Error sending message: {:?}", msg.channel_id.say(&ctx.http, message.build())); }, "!help" => { let mut message = MessageBuilder::new(); message.push_line("Use !move <action> to make a circular motion"); message.push_line("Use !poll <proposal> to see what people think about something"); - msg.channel_id.say(&ctx.http, message.build()) - .map_err(|why| eprintln!("Error sending message: {:?}", why)); + e!("Error sending message: {:?}", msg.channel_id.say(&ctx.http, message.build())); }, _ => {} }