[−][src]Struct serenity::client::Context
The context is a general utility struct provided on event dispatches, which
helps with dealing with the current "context" of the event dispatch.
The context also acts as a general high-level interface over the associated
Shard
which received the event, or the low-level http
module.
The context contains "shortcuts", like for interacting with the shard.
Methods like set_activity
will unlock the shard and perform an update for
you to save a bit of work.
A context will only live for the event it was dispatched for. After the event handler finished, it is destroyed and will not be re-used.
Fields
data: Arc<RwLock<ShareMap>>
A clone of Client::data
. Refer to its documentation for more
information.
shard: ShardMessenger
The messenger to communicate with the shard runner.
shard_id: u64
The ID of the shard this context is related to.
cache: CacheRwLock
http: Arc<Http>
Methods
impl Context
[src]
pub fn online(&self)
[src]
Sets the current user as being Online
. This maintains the current
activity.
Examples
Set the current user to being online on the shard:
struct Handler; impl EventHandler for Handler { fn message(&self, ctx: Context, msg: Message) { if msg.content == "!online" { ctx.online(); } } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
pub fn idle(&self)
[src]
Sets the current user as being Idle
. This maintains the current
activity.
Examples
Set the current user to being idle on the shard:
struct Handler; impl EventHandler for Handler { fn message(&self, ctx: Context, msg: Message) { if msg.content == "!idle" { ctx.idle(); } } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
pub fn dnd(&self)
[src]
Sets the current user as being DoNotDisturb
. This maintains the
current activity.
Examples
Set the current user to being Do Not Disturb on the shard:
struct Handler; impl EventHandler for Handler { fn message(&self, ctx: Context, msg: Message) { if msg.content == "!dnd" { ctx.dnd(); } } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
pub fn invisible(&self)
[src]
Sets the current user as being Invisible
. This maintains the current
activity.
Examples
Set the current user to being invisible on the shard when an
Event::Ready
is received:
struct Handler; impl EventHandler for Handler { fn ready(&self, ctx: Context, _: Ready) { ctx.invisible(); } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
pub fn reset_presence(&self)
[src]
"Resets" the current user's presence, by setting the activity to None
and the online status to Online
.
Use set_presence
for fine-grained control over individual details.
Examples
Reset the presence when an Event::Resumed
is received:
struct Handler; impl EventHandler for Handler { fn resume(&self, ctx: Context, _: ResumedEvent) { ctx.reset_presence(); } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
pub fn set_activity(&self, activity: Activity)
[src]
Sets the current activity, defaulting to an online status of Online
.
Examples
Create a command named ~setgame
that accepts a name of a game to be
playing:
use serenity::model::gateway::Activity; struct Handler; impl EventHandler for Handler { fn message(&self, ctx: Context, msg: Message) { let args = msg.content.splitn(2, ' ').collect::<Vec<&str>>(); if args.len() < 2 || *unsafe { args.get_unchecked(0) } != "~setgame" { return; } ctx.set_activity(Activity::playing(*unsafe { args.get_unchecked(1) })); } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
pub fn set_presence(&self, activity: Option<Activity>, status: OnlineStatus)
[src]
Sets the current user's presence, providing all fields to be passed.
Examples
Setting the current user as having no activity and being Idle
:
struct Handler; impl EventHandler for Handler { fn ready(&self, ctx: Context, _: Ready) { use serenity::model::user::OnlineStatus; ctx.set_presence(None, OnlineStatus::Idle); } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
Setting the current user as playing "Heroes of the Storm"
, while being
DoNotDisturb
:
struct Handler; impl EventHandler for Handler { fn ready(&self, context: Context, _: Ready) { use serenity::model::gateway::Activity; use serenity::model::user::OnlineStatus; let activity = Activity::playing("Heroes of the Storm"); let status = OnlineStatus::DoNotDisturb; context.set_presence(Some(activity), status); } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
Trait Implementations
impl AsRef<CacheRwLock> for Context
[src]
fn as_ref(&self) -> &CacheRwLock
[src]
impl AsRef<Http> for Context
[src]
impl CacheHttp for Context
[src]
impl<'_> CacheHttp for &'_ Context
[src]
impl<'_> CacheHttp for &'_ mut Context
[src]
impl Clone for Context
[src]
Auto Trait Implementations
impl !RefUnwindSafe for Context
impl Send for Context
impl !Sync for Context
impl Unpin for Context
impl !UnwindSafe for Context
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> CloneAny for T where
T: Clone + Any,
[src]
T: Clone + Any,
fn clone_any(&self) -> Box<dyn CloneAny + 'static>
[src]
fn clone_any_send(&self) -> Box<dyn CloneAny + 'static + Send> where
T: Send,
[src]
T: Send,
fn clone_any_sync(&self) -> Box<dyn CloneAny + 'static + Sync> where
T: Sync,
[src]
T: Sync,
fn clone_any_send_sync(&self) -> Box<dyn CloneAny + 'static + Sync + Send> where
T: Send + Sync,
[src]
T: Send + Sync,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
U: TryFrom<T>,
impl<T> UnsafeAny for T where
T: Any,
T: Any,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,