pub struct Activity { /* private fields */ }Expand description
Represents a Discord Rich Presence activity.
Implementations§
Source§impl Activity
impl Activity
Sourcepub fn new() -> ActivityBuilder
pub fn new() -> ActivityBuilder
Initializes a new activity builder instance.
Examples found in repository?
examples/simple.rs (line 7)
4async fn main() -> Result<(), PresenceError> {
5 let mut runner = PresenceRunner::new("1463450870480900160");
6
7 let activity = Activity::new()
8 .name("cool app name")
9 .details("Something?")
10 .state("Probably~")
11 .build();
12
13 let client = runner.run(true).await?;
14 client.set_activity(activity).await?;
15
16 // indefinitely block here
17 runner.wait().await?;
18
19 Ok(())
20}More examples
examples/indefinite.rs (line 21)
8async fn main() -> Result<(), PresenceError> {
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 .on_disconnect(|f| println!("Disconnected: {f:?}"))
15 .show_errors() // enables verbose error logging
16 ;
17
18 let client = runner.run(true).await?;
19
20 // the activity can include any combination of builder function calls
21 let activity = Activity::new()
22 .activity_type(ActivityType::Playing)
23 .details("epic game")
24 .details_url("https://github.com/hitblast")
25 .status_display_type(StatusDisplayType::Details)
26 .large_image("game_icon")
27 .large_text("Playing a game")
28 .large_url("https://hitblast.github.io/")
29 .small_image("status")
30 .small_text("Online")
31 .build();
32
33 client.set_activity(activity).await?;
34
35 // indefinitely block here
36 runner.wait().await?;
37
38 Ok(())
39}examples/timed.rs (line 31)
13async fn main() -> Result<(), PresenceError> {
14 // simple atomic counter
15 let count = Arc::new(AtomicU8::new(0));
16
17 let mut runner = PresenceRunner::new("1463450870480900160")
18 .on_ready(|data| println!("Connected to user: {}", data.user.username))
19 .on_activity_send(move |_| {
20
21 // increments the counter with every send_activity()
22 let val = count.fetch_add(1, Ordering::Relaxed) + 1;
23
24 println!("Activity {val} sent successfully.")
25
26 })
27 .show_errors() // enables verbose error logging
28 ;
29
30 // create activities for later use
31 let activity_1 = Activity::new()
32 .details("this runs")
33 .state("for ten seconds")
34 .build();
35
36 let activity_2 = Activity::new()
37 .details("believe it")
38 .state("or not")
39 .build();
40
41 let closing_activity = Activity::new()
42 .details("closing presence in...")
43 .duration(Duration::from_secs(5))
44 .small_image("status")
45 .build();
46
47 // first run
48 let client = runner.run(true).await?;
49
50 client.set_activity(activity_1).await?;
51 sleep(Duration::from_secs(5)).await;
52 client.set_activity(activity_2).await?;
53 sleep(Duration::from_secs(5)).await;
54 client.set_activity(closing_activity).await?;
55 sleep(Duration::from_secs(5)).await;
56
57 client.close().await?;
58
59 println!("Stopped.");
60
61 Ok(())
62}Trait Implementations§
Source§impl Default for Activity
impl Default for Activity
Source§fn default() -> Self
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§
impl Freeze for Activity
impl RefUnwindSafe for Activity
impl Send for Activity
impl Sync for Activity
impl Unpin for Activity
impl UnsafeUnpin for Activity
impl UnwindSafe for Activity
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more