Skip to content

Commit fdfd5bc

Browse files
committed
Update readme, docs and add EventHandler to the prelude
1 parent ea432af commit fdfd5bc

File tree

3 files changed

+34
-22
lines changed

3 files changed

+34
-22
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ You may also check your tokens prior to login via the use of
1414
[`validate_token`].
1515

1616
Once logged in, you may add handlers to your client to dispatch [`Event`]s,
17-
such as [`Client::on_message`]. This will cause your handler to be called
17+
by implementing the handlers in a trait, such as [`EventHandler::on_message`]. This will cause your handler to be called
1818
when a [`Event::MessageCreate`] is received. Each handler is given a
1919
[`Context`], giving information about the event. See the
2020
[client's module-level documentation].
@@ -138,7 +138,7 @@ Voice+youtube-dl:
138138

139139
[`Cache`]: https://docs.rs/serenity/*/serenity/cache/struct.Cache.html
140140
[`Client::new`]: https://docs.rs/serenity/*/serenity/client/struct.Client.html#method.new
141-
[`Client::on_message`]: https://docs.rs/serenity/*/serenity/client/struct.Client.html#method.on_message
141+
[`EventHandler::on_message`]: https://docs.rs/serenity/*/serenity/client/struct.EventHandler.html#method.on_message
142142
[`Context`]: https://docs.rs/serenity/*/serenity/client/struct.Context.html
143143
[`Event`]: https://docs.rs/serenity/*/serenity/model/event/enum.Event.html
144144
[`Event::MessageCreate`]: https://docs.rs/serenity/*/serenity/model/event/enum.Event.html#variant.MessageCreatef

src/client/mod.rs

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ use ::framework::Framework;
5858
/// # Event Handlers
5959
///
6060
/// Event handlers can be configured. For example, the event handler
61-
/// [`on_message`] will be dispatched to whenever a [`Event::MessageCreate`] is
61+
/// [`EventHandler::on_message`] will be dispatched to whenever a [`Event::MessageCreate`] is
6262
/// received over the connection.
6363
///
6464
/// Note that you do not need to manually handle events, as they are handled
@@ -70,15 +70,20 @@ use ::framework::Framework;
7070
/// receive, acting as a "ping-pong" bot is simple:
7171
///
7272
/// ```rust,ignore
73-
/// use serenity::Client;
73+
/// use serenity::prelude::*;
74+
/// use serenity::model::*;
7475
///
75-
/// let mut client = Client::new("my token here");
76+
/// struct Handler;
7677
///
77-
/// client.on_message(|context, message| {
78-
/// if message.content == "!ping" {
79-
/// message.channel_id.say("Pong!");
78+
/// impl EventHandler for Handler {
79+
/// fn on_message(&self, _: Context, msg: Message) {
80+
/// if msg.content == "!ping" {
81+
/// let _ = msg.channel_id.say("Pong!");
82+
/// }
8083
/// }
81-
/// });
84+
/// }
85+
///
86+
/// let mut client = Client::new("my token here", Handler);
8287
///
8388
/// client.start();
8489
/// ```
@@ -113,7 +118,8 @@ pub struct Client<H: EventHandler + Send + Sync + 'static> {
113118
/// extern crate serenity;
114119
/// extern crate typemap;
115120
///
116-
/// use serenity::Client;
121+
/// use serenity::prelude::*;
122+
/// use serenity::model::*;
117123
/// use std::collections::HashMap;
118124
/// use std::env;
119125
/// use typemap::Key;
@@ -124,13 +130,6 @@ pub struct Client<H: EventHandler + Send + Sync + 'static> {
124130
/// type Value = HashMap<String, u64>;
125131
/// }
126132
///
127-
/// let mut client = Client::new(&env::var("DISCORD_TOKEN").unwrap());
128-
///
129-
/// {
130-
/// let mut data = client.data.lock().unwrap();
131-
/// data.insert::<MessageEventCounter>(HashMap::default());
132-
/// }
133-
///
134133
/// macro_rules! reg {
135134
/// ($ctx:ident $name:expr) => {
136135
/// {
@@ -142,10 +141,23 @@ pub struct Client<H: EventHandler + Send + Sync + 'static> {
142141
/// };
143142
/// }
144143
///
145-
/// client.on_message(|ctx, _| reg!(ctx "MessageCreate"));
146-
/// client.on_message_delete(|ctx, _| reg!(ctx "MessageDelete"));
147-
/// client.on_message_delete_bulk(|ctx, _| reg!(ctx "MessageDeleteBulk"));
148-
/// client.on_message_update(|ctx, _| reg!(ctx "MessageUpdate"));
144+
/// struct Handler;
145+
///
146+
/// impl EventHandler for Handler {
147+
/// fn on_message(&self, ctx: Context, _: Message) { reg!(ctx "MessageCreate") }
148+
/// fn on_message_delete(&self, ctx: Context, _: Message) { reg!(ctx "MessageDelete") }
149+
/// fn on_message_delete_bulk(&self, ctx: Context, _: Vec<Message>) { reg!(ctx "MessageDeleteBulk") }
150+
/// fn on_message_update(&self, ctx: Context, _: Message) { reg!(ctx "MessageUpdate") }
151+
/// }
152+
///
153+
/// let mut client = Client::new(&env::var("DISCORD_TOKEN").unwrap(), Handler);
154+
///
155+
/// {
156+
/// let mut data = client.data.lock().unwrap();
157+
/// data.insert::<MessageEventCounter>(HashMap::default());
158+
/// }
159+
///
160+
/// client.start().unwrap();
149161
/// ```
150162
///
151163
/// Refer to [example 05] for an example on using the `data` field.

src/prelude.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub use ::error::{Error as SerenityError};
1818
pub use ::model::Mentionable;
1919

2020
#[cfg(feature="client")]
21-
pub use ::client::{Client, ClientError as ClientError};
21+
pub use ::client::{Client, ClientError as ClientError, EventHandler};
2222
#[cfg(feature="gateway")]
2323
pub use ::gateway::GatewayError;
2424
#[cfg(feature="http")]

0 commit comments

Comments
 (0)