Struct serenity::client::Context [−][src]
pub struct Context { pub data: Arc<RwLock<TypeMap>>, pub shard: ShardMessenger, pub shard_id: u64, pub http: Arc<Http>, pub cache: Arc<Cache>, }
Expand description
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 Self::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<TypeMap>>
Expand description
A clone of Client::data
. Refer to its documentation for more
information.
shard: ShardMessenger
Expand description
The messenger to communicate with the shard runner.
shard_id: u64
Expand description
The ID of the shard this context is related to.
http: Arc<Http>
cache: Arc<Cache>
Implementations
impl Context
[src]
impl Context
[src]pub async fn online(&self)
[src]
pub async 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; #[serenity::async_trait] impl EventHandler for Handler { async fn message(&self, ctx: Context, msg: Message) { if msg.content == "!online" { ctx.online().await; } } } let mut client = Client::builder("token").event_handler(Handler).await?; client.start().await?;
pub async fn idle(&self)
[src]
pub async 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; #[serenity::async_trait] impl EventHandler for Handler { async fn message(&self, ctx: Context, msg: Message) { if msg.content == "!idle" { ctx.idle().await; } } } let mut client = Client::builder("token").event_handler(Handler).await?; client.start().await?;
pub async fn dnd(&self)
[src]
pub async 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; #[serenity::async_trait] impl EventHandler for Handler { async fn message(&self, ctx: Context, msg: Message) { if msg.content == "!dnd" { ctx.dnd().await; } } } let mut client = Client::builder("token").event_handler(Handler).await?; client.start().await?;
pub async fn invisible(&self)
[src]
pub async 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; #[serenity::async_trait] impl EventHandler for Handler { async fn ready(&self, ctx: Context, _: Ready) { ctx.invisible().await; } } let mut client = Client::builder("token").event_handler(Handler).await?; client.start().await?;
pub async fn reset_presence(&self)
[src]
pub async fn reset_presence(&self)
[src]“Resets” the current user’s presence, by setting the activity to None
and the online status to Online
.
Use Self::set_presence
for fine-grained control over individual details.
Examples
Reset the presence when an Event::Resumed
is received:
struct Handler; #[serenity::async_trait] impl EventHandler for Handler { async fn resume(&self, ctx: Context, _: ResumedEvent) { ctx.reset_presence().await; } } let mut client = Client::builder("token").event_handler(Handler).await?; client.start().await?;
pub async fn set_activity(&self, activity: Activity)
[src]
pub async 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; #[serenity::async_trait] impl EventHandler for Handler { async fn message(&self, ctx: Context, msg: Message) { let mut args = msg.content.splitn(2, ' '); if let (Some("~setgame"), Some(game)) = (args.next(), args.next()) { ctx.set_activity(Activity::playing(game)).await; } } } let mut client = Client::builder("token").event_handler(Handler).await?; client.start().await?;
pub async fn set_presence(
&self,
activity: Option<Activity>,
status: OnlineStatus
)
[src]
pub async 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; #[serenity::async_trait] impl EventHandler for Handler { async fn ready(&self, ctx: Context, _: Ready) { use serenity::model::user::OnlineStatus; ctx.set_presence(None, OnlineStatus::Idle); } } let mut client = Client::builder("token").event_handler(Handler).await?; client.start().await?;
Setting the current user as playing "Heroes of the Storm"
, while being
DoNotDisturb
:
struct Handler; #[serenity::async_trait] impl EventHandler for Handler { async 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::builder("token").event_handler(Handler).await?; client.start().await?;
pub async fn set_message_filter(&self, filter: MessageFilter)
[src]
This is supported on crate feature collector
only.
pub async fn set_message_filter(&self, filter: MessageFilter)
[src]collector
only.Sets a new filter
for the shard to check if a message event shall be
sent back to filter
’s paired receiver.
pub async fn set_reaction_filter(&self, filter: ReactionFilter)
[src]
This is supported on crate feature collector
only.
pub async fn set_reaction_filter(&self, filter: ReactionFilter)
[src]collector
only.Sets a new filter
for the shard to check if a reaction event shall be
sent back to filter
’s paired receiver.
Trait Implementations
impl AsRef<ShardMessenger> for Context
[src]
impl AsRef<ShardMessenger> for Context
[src]fn as_ref(&self) -> &ShardMessenger
[src]
fn as_ref(&self) -> &ShardMessenger
[src]Performs the conversion.
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> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> Instrument for T
[src]
impl<T> Instrument for T
[src]fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
fn in_current_span(self) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[src]impl<T> Same<T> for T
impl<T> Same<T> for T
type Output = T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,