Skip to main content

Activity

Struct Activity 

Source
pub struct Activity { /* private fields */ }
Expand description

Represents a Discord Rich Presence activity.

Implementations§

Source§

impl Activity

Source

pub fn new() -> ActivityBuilder

Initializes a new activity builder instance.

Examples found in repository?
examples/simple.rs (line 8)
5async fn main() -> Result<()> {
6    let mut runner = PresenceRunner::new("1463450870480900160");
7
8    let activity = Activity::new()
9        .name("cool app name")
10        .details("Something?")
11        .state("Probably~")
12        .build();
13
14    let client = runner.run(true).await?;
15    client.set_activity(activity).await?;
16
17    // indefinitely block here
18    runner.wait().await?;
19
20    Ok(())
21}
More examples
Hide additional examples
examples/indefinite.rs (line 20)
8async fn main() -> Result<()> {
9    let mut runner = PresenceRunner::new("1463450870480900160")
10        .on_ready(|data| println!("Connected to user: {}", data.user.username))
11        .on_activity_send(|data| {
12            println!("Activity sent to app: {} (running on {})\nMetadata: {}", data.name, data.platform, data.metadata)
13        })
14        .show_errors() // enables verbose error logging
15    ;
16
17    let client = runner.run(true).await?;
18
19    // the activity can include any combination of builder function calls
20    let activity = Activity::new()
21        .activity_type(ActivityType::Playing)
22        .details("epic game")
23        .details_url("https://github.com/hitblast")
24        .status_display_type(StatusDisplayType::Details)
25        .large_image("game_icon")
26        .large_text("Playing a game")
27        .large_url("https://hitblast.github.io/")
28        .small_image("status")
29        .small_text("Online")
30        .build();
31
32    client.set_activity(activity).await?;
33
34    // indefinitely block here
35    runner.wait().await?;
36
37    Ok(())
38}
examples/timed.rs (line 32)
14async fn main() -> Result<()> {
15    // simple atomic counter
16    let count = Arc::new(AtomicU8::new(0));
17
18    let mut runner = PresenceRunner::new("1463450870480900160")
19        .on_ready(|data| println!("Connected to user: {}", data.user.username))
20        .on_activity_send(move |_| {
21
22            // increments the counter with every send_activity()
23            let val = count.fetch_add(1, Ordering::Relaxed) + 1;
24
25            println!("Activity {val} sent successfully.")
26
27        })
28        .show_errors() // enables verbose error logging
29    ;
30
31    // create activities for later use
32    let activity_1 = Activity::new()
33        .details("this runs")
34        .state("for ten seconds")
35        .build();
36
37    let activity_2 = Activity::new()
38        .details("believe it")
39        .state("or not")
40        .build();
41
42    let closing_activity = Activity::new()
43        .details("closing presence in...")
44        .duration(Duration::from_secs(5))
45        .small_image("status")
46        .build();
47
48    // first run
49    let client = runner.run(true).await?;
50
51    client.set_activity(activity_1).await?;
52    sleep(Duration::from_secs(5)).await;
53    client.set_activity(activity_2).await?;
54    sleep(Duration::from_secs(5)).await;
55    client.set_activity(closing_activity).await?;
56    sleep(Duration::from_secs(5)).await;
57
58    client.close().await?;
59
60    println!("Stopped.");
61
62    Ok(())
63}

Trait Implementations§

Source§

impl Clone for Activity

Source§

fn clone(&self) -> Activity

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Activity

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Activity

Source§

fn default() -> Self

Gives out an empty Activity with all of the default values. Essentially, this only shows the name of the app and the elapsed time for the activity on Discord. Useful when you only need a simple rich presence instance.

For building a complete activity, using Activity::new is suggested instead.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.