aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2017-06-13 21:43:03 -0700
committerZeyla Hellyer <[email protected]>2017-06-13 21:43:03 -0700
commit8b504ad7f6e10fecb27583a949262eb61cfd266d (patch)
treeb379f99ea6756603c612cdd3d58f8227bffc94b4
parentFix CurrentUser::invite_url (diff)
downloadserenity-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.rs13
-rw-r--r--src/client/dispatch.rs99
-rw-r--r--src/framework/help_commands.rs36
-rw-r--r--src/framework/mod.rs2
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(())
},