[−][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<TypeMap>>
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.
http: Arc<Http>
cache: Arc<Cache>
Implementations
impl Context
[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]
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]
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]
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]
"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; #[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]
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]
&'_ self,
activity: Option<Activity>,
status: OnlineStatus
)
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]
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]
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<Arc<Cache>> for Context
[src]
impl AsRef<Arc<Http>> for Context
[src]
impl AsRef<Cache> for Context
[src]
impl AsRef<Http> for Context
[src]
impl AsRef<ShardMessenger> for Context
[src]
fn as_ref(&self) -> &ShardMessenger
[src]
impl CacheHttp for 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,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T> Instrument for T
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[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.
pub fn to_owned(&self) -> T
[src]
pub 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 = Infallible
The type returned in the event of a conversion error.
pub 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.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,
pub fn vzip(self) -> V
impl<T> WithSubscriber for T
[src]
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
[src]
S: Into<Dispatch>,