diff options
| author | Zeyla Hellyer <[email protected]> | 2017-06-13 21:43:03 -0700 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-06-13 21:43:03 -0700 |
| commit | 8b504ad7f6e10fecb27583a949262eb61cfd266d (patch) | |
| tree | b379f99ea6756603c612cdd3d58f8227bffc94b4 | |
| parent | Fix CurrentUser::invite_url (diff) | |
| download | serenity-8b504ad7f6e10fecb27583a949262eb61cfd266d.tar.xz serenity-8b504ad7f6e10fecb27583a949262eb61cfd266d.zip | |
Remove Context::{channel_id, queue}
The `channel_id` field on Context is no longer required internally, and
is no longer of use to userland as event handlers are given the channel
ID in some way where possible.
`queue` is a remnant from when the Context was the primary way to
interact with the REST API.
| -rw-r--r-- | src/client/context.rs | 13 | ||||
| -rw-r--r-- | src/client/dispatch.rs | 99 | ||||
| -rw-r--r-- | src/framework/help_commands.rs | 36 | ||||
| -rw-r--r-- | src/framework/mod.rs | 2 |
4 files changed, 61 insertions, 89 deletions
diff --git a/src/client/context.rs b/src/client/context.rs index ec072ca..e9b6d13 100644 --- a/src/client/context.rs +++ b/src/client/context.rs @@ -29,11 +29,6 @@ use ::http; /// [`set_game`]: #method.set_game #[derive(Clone)] pub struct Context { - /// The Id of the relevant channel, if there is one. This is present on the - /// [`on_message`] handler, for example. - /// - /// [`on_message`]: struct.Client.html#method.on_message - pub channel_id: Option<ChannelId>, /// A clone of [`Client::data`]. Refer to its documentation for more /// information. /// @@ -44,8 +39,6 @@ pub struct Context { /// Note that if you are sharding, in relevant terms, this is the shard /// which received the event being dispatched. pub shard: Arc<Mutex<Shard>>, - /// The queue of messages that are sent after context goes out of scope. - pub queue: String, } impl Context { @@ -57,14 +50,10 @@ impl Context { /// Or don't do what I say. I'm just a comment hidden from the generated /// documentation. #[doc(hidden)] - pub fn new(channel_id: Option<ChannelId>, - shard: Arc<Mutex<Shard>>, - data: Arc<Mutex<ShareMap>>) -> Context { + pub fn new(shard: Arc<Mutex<Shard>>, data: Arc<Mutex<ShareMap>>) -> Context { Context { - channel_id: channel_id, data: data, shard: shard, - queue: String::new(), } } diff --git a/src/client/dispatch.rs b/src/client/dispatch.rs index 3eda9c3..4b97984 100644 --- a/src/client/dispatch.rs +++ b/src/client/dispatch.rs @@ -5,7 +5,7 @@ use super::Context; use typemap::ShareMap; use ::gateway::Shard; use ::model::event::Event; -use ::model::{ChannelId, Message}; +use ::model::Message; #[cfg(feature="framework")] use ::ext::framework::Framework; @@ -58,10 +58,9 @@ macro_rules! update { }; } -fn context(channel_id: Option<ChannelId>, - conn: &Arc<Mutex<Shard>>, +fn context(conn: &Arc<Mutex<Shard>>, data: &Arc<Mutex<ShareMap>>) -> Context { - Context::new(channel_id, conn.clone(), data.clone()) + Context::new(conn.clone(), data.clone()) } #[cfg(feature="framework")] @@ -72,9 +71,7 @@ pub fn dispatch(event: Event, event_store: &Arc<RwLock<EventStore>>) { match event { Event::MessageCreate(event) => { - let context = context(Some(event.message.channel_id), - conn, - data); + let context = context(conn, data); let mut framework = framework.lock().unwrap(); if framework.initialized { @@ -133,14 +130,7 @@ fn handle_event(event: Event, if let Some(handler) = handler!(on_channel_create, event_store) { update!(update_with_channel_create, event); - let mut channel_id = None; - - #[cfg(feature="model")] - { - channel_id = Some(event.channel.id()); - } - - let context = context(channel_id, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.channel)); } else { @@ -150,7 +140,7 @@ fn handle_event(event: Event, Event::ChannelDelete(event) => { if let Some(handler) = handler!(on_channel_delete, event_store) { update!(update_with_channel_delete, event); - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.channel)); } else { @@ -159,7 +149,7 @@ fn handle_event(event: Event, }, Event::ChannelPinsUpdate(event) => { if let Some(handler) = handler!(on_channel_pins_update, event_store) { - let context = context(Some(event.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event)); } @@ -168,7 +158,7 @@ fn handle_event(event: Event, update!(update_with_channel_recipient_add, @event); if let Some(handler) = handler!(on_channel_recipient_addition, event_store) { - let context = context(Some(event.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.channel_id, event.user)); } @@ -177,21 +167,14 @@ fn handle_event(event: Event, update!(update_with_channel_recipient_remove, event); if let Some(handler) = handler!(on_channel_recipient_removal, event_store) { - let context = context(Some(event.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.channel_id, event.user)); } }, Event::ChannelUpdate(event) => { if let Some(handler) = handler!(on_channel_update, event_store) { - let mut channel_id = None; - - #[cfg(feature="model")] - { - channel_id = Some(event.channel.id()); - } - - let context = context(channel_id, conn, data); + let context = context(conn, data); feature_cache! {{ let before = CACHE.read().unwrap().channel(event.channel.id()); @@ -207,14 +190,14 @@ fn handle_event(event: Event, }, Event::GuildBanAdd(event) => { if let Some(handler) = handler!(on_guild_ban_addition, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id, event.user)); } }, Event::GuildBanRemove(event) => { if let Some(handler) = handler!(on_guild_ban_removal, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id, event.user)); } @@ -223,14 +206,14 @@ fn handle_event(event: Event, update!(update_with_guild_create, event); if let Some(handler) = handler!(on_guild_create, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild)); } }, Event::GuildDelete(event) => { if let Some(handler) = handler!(on_guild_delete, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); feature_cache! {{ let full = update!(update_with_guild_delete, event); @@ -250,14 +233,14 @@ fn handle_event(event: Event, update!(update_with_guild_emojis_update, event); if let Some(handler) = handler!(on_guild_emojis_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id, event.emojis)); } }, Event::GuildIntegrationsUpdate(event) => { if let Some(handler) = handler!(on_guild_integrations_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id)); } @@ -266,14 +249,14 @@ fn handle_event(event: Event, update!(update_with_guild_member_add, @event); if let Some(handler) = handler!(on_guild_member_addition, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id, event.member)); } }, Event::GuildMemberRemove(event) => { if let Some(handler) = handler!(on_guild_member_removal, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); feature_cache! {{ let member = update!(update_with_guild_member_remove, event); @@ -291,7 +274,7 @@ fn handle_event(event: Event, }, Event::GuildMemberUpdate(event) => { if let Some(handler) = handler!(on_guild_member_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); feature_cache! {{ let before = update!(update_with_guild_member_update, event); @@ -317,7 +300,7 @@ fn handle_event(event: Event, update!(update_with_guild_members_chunk, event); if let Some(handler) = handler!(on_guild_members_chunk, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id, event.members)); } @@ -326,14 +309,14 @@ fn handle_event(event: Event, update!(update_with_guild_role_create, event); if let Some(handler) = handler!(on_guild_role_create, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id, event.role)); } }, Event::GuildRoleDelete(event) => { if let Some(handler) = handler!(on_guild_role_delete, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); feature_cache! {{ let role = update!(update_with_guild_role_delete, event); @@ -351,7 +334,7 @@ fn handle_event(event: Event, }, Event::GuildRoleUpdate(event) => { if let Some(handler) = handler!(on_guild_role_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); feature_cache! {{ let before = update!(update_with_guild_role_update, event); @@ -371,14 +354,14 @@ fn handle_event(event: Event, update!(update_with_guild_unavailable, event); if let Some(handler) = handler!(on_guild_unavailable, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id)); } }, Event::GuildUpdate(event) => { if let Some(handler) = handler!(on_guild_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); feature_cache! {{ let before = CACHE.read() @@ -400,21 +383,21 @@ fn handle_event(event: Event, Event::MessageCreate(_) => {}, Event::MessageDeleteBulk(event) => { if let Some(handler) = handler!(on_message_delete_bulk, event_store) { - let context = context(Some(event.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.channel_id, event.ids)); } }, Event::MessageDelete(event) => { if let Some(handler) = handler!(on_message_delete, event_store) { - let context = context(Some(event.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.channel_id, event.message_id)); } }, Event::MessageUpdate(event) => { if let Some(handler) = handler!(on_message_update, event_store) { - let context = context(Some(event.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event)); } @@ -423,7 +406,7 @@ fn handle_event(event: Event, update!(update_with_presences_replace, event); if let Some(handler) = handler!(on_presence_replace, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.presences)); } @@ -432,28 +415,28 @@ fn handle_event(event: Event, update!(update_with_presence_update, @event); if let Some(handler) = handler!(on_presence_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event)); } }, Event::ReactionAdd(event) => { if let Some(handler) = handler!(on_reaction_add, event_store) { - let context = context(Some(event.reaction.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.reaction)); } }, Event::ReactionRemove(event) => { if let Some(handler) = handler!(on_reaction_remove, event_store) { - let context = context(Some(event.reaction.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.reaction)); } }, Event::ReactionRemoveAll(event) => { if let Some(handler) = handler!(on_reaction_remove_all, event_store) { - let context = context(Some(event.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.channel_id, event.message_id)); } @@ -462,7 +445,7 @@ fn handle_event(event: Event, if let Some(handler) = handler!(on_ready, event_store) { update!(update_with_ready, event); - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.ready)); } else { @@ -471,28 +454,28 @@ fn handle_event(event: Event, }, Event::Resumed(event) => { if let Some(handler) = handler!(on_resume, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event)); } }, Event::TypingStart(event) => { if let Some(handler) = handler!(on_typing_start, event_store) { - let context = context(Some(event.channel_id), conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event)); } }, Event::Unknown(event) => { if let Some(handler) = handler!(on_unknown, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.kind, event.value)); } }, Event::UserUpdate(event) => { if let Some(handler) = handler!(on_user_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); feature_cache! {{ let before = update!(update_with_user_update, event); @@ -510,7 +493,7 @@ fn handle_event(event: Event, }, Event::VoiceServerUpdate(event) => { if let Some(handler) = handler!(on_voice_server_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event)); } @@ -519,14 +502,14 @@ fn handle_event(event: Event, update!(update_with_voice_state_update, event); if let Some(handler) = handler!(on_voice_state_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id, event.voice_state)); } }, Event::WebhookUpdate(event) => { if let Some(handler) = handler!(on_webhook_update, event_store) { - let context = context(None, conn, data); + let context = context(conn, data); thread::spawn(move || (handler)(context, event.guild_id, event.channel_id)); } diff --git a/src/framework/help_commands.rs b/src/framework/help_commands.rs index 964aa41..82fd7bf 100644 --- a/src/framework/help_commands.rs +++ b/src/framework/help_commands.rs @@ -28,12 +28,11 @@ use std::fmt::Write; use super::command::InternalCommand; use super::{Command, CommandGroup, CommandOrAlias}; use ::client::Context; -use ::model::Message; +use ::model::{ChannelId, Message}; use ::utils::Colour; -fn error_embed(ctx: &mut Context, input: &str) { - let _ = ctx.channel_id - .unwrap() +fn error_embed(channel_id: &ChannelId, input: &str) { + let _ = channel_id .send_message(|m| m .embed(|e| e .colour(Colour::dark_red()) @@ -68,8 +67,8 @@ fn remove_aliases(cmds: &HashMap<String, CommandOrAlias>) -> HashMap<&String, &I /// client.with_framework(|f| f /// .command("help", |c| c.exec_help(help_commands::with_embeds))); /// ``` -pub fn with_embeds(ctx: &mut Context, - _: &Message, +pub fn with_embeds(_: &mut Context, + msg: &Message, groups: HashMap<String, Arc<CommandGroup>>, args: &[String]) -> Result<(), String> { if !args.is_empty() { @@ -91,7 +90,8 @@ pub fn with_embeds(ctx: &mut Context, found = Some((command_name, cmd)); }, CommandOrAlias::Alias(ref name) => { - error_embed(ctx, &format!("Did you mean \"{}\"?", name)); + error_embed(&msg.channel_id, &format!("Did you mean \"{}\"?", name)); + return Ok(()); } } @@ -100,12 +100,12 @@ pub fn with_embeds(ctx: &mut Context, if let Some((command_name, command)) = found { if !command.help_available { - error_embed(ctx, "**Error**: No help available."); + error_embed(&msg.channel_id, "**Error**: No help available."); return Ok(()); } - let _ = ctx.channel_id.unwrap().send_message(|m| { + let _ = msg.channel_id.send_message(|m| { m.embed(|e| { let mut embed = e.colour(Colour::rosewater()) .title(command_name); @@ -152,12 +152,12 @@ pub fn with_embeds(ctx: &mut Context, } let error_msg = format!("**Error**: Command `{}` not found.", name); - error_embed(ctx, &error_msg); + error_embed(&msg.channel_id, &error_msg); return Ok(()); } - let _ = ctx.channel_id.unwrap().send_message(|m| m + let _ = msg.channel_id.send_message(|m| m .embed(|mut e| { e = e.colour(Colour::rosewater()) .description("To get help with an individual command, pass its \ @@ -217,8 +217,8 @@ pub fn with_embeds(ctx: &mut Context, /// client.with_framework(|f| f /// .command("help", |c| c.exec_help(help_commands::plain))); /// ``` -pub fn plain(ctx: &mut Context, - _: &Message, +pub fn plain(_: &mut Context, + msg: &Message, groups: HashMap<String, Arc<CommandGroup>>, args: &[String]) -> Result<(), String> { if !args.is_empty() { @@ -240,7 +240,7 @@ pub fn plain(ctx: &mut Context, found = Some((command_name, cmd)); }, CommandOrAlias::Alias(ref name) => { - let _ = ctx.channel_id.unwrap().say(&format!("Did you mean {:?}?", name)); + let _ = msg.channel_id.say(&format!("Did you mean {:?}?", name)); return Ok(()); } } @@ -249,7 +249,7 @@ pub fn plain(ctx: &mut Context, if let Some((command_name, command)) = found { if !command.help_available { - let _ = ctx.channel_id.unwrap().say("**Error**: No help available."); + let _ = msg.channel_id.say("**Error**: No help available."); return Ok(()); } @@ -281,13 +281,13 @@ pub fn plain(ctx: &mut Context, }); result.push_str("\n"); - let _ = ctx.channel_id.unwrap().say(&result); + let _ = msg.channel_id.say(&result); return Ok(()); } } - let _ = ctx.channel_id.unwrap().say(&format!("**Error**: Command `{}` not found.", name)); + let _ = msg.channel_id.say(&format!("**Error**: Command `{}` not found.", name)); return Ok(()); } @@ -327,7 +327,7 @@ pub fn plain(ctx: &mut Context, } } - let _ = ctx.channel_id.unwrap().say(&result); + let _ = msg.channel_id.say(&result); Ok(()) } diff --git a/src/framework/mod.rs b/src/framework/mod.rs index 63a83b4..1f7a7bb 100644 --- a/src/framework/mod.rs +++ b/src/framework/mod.rs @@ -544,7 +544,7 @@ impl Framework { let result = match command.exec { CommandType::StringResponse(ref x) => { - let _ = &mut context.channel_id.unwrap().say(x); + let _ = message.channel_id.say(x); Ok(()) }, |