pub struct PresenceClient { /* private fields */ }Expand description
A client handle for communicating with super::PresenceRunner and its inner loop.
Implementations§
Source§impl PresenceClient
impl PresenceClient
Sourcepub async fn set_activity(&self, activity: Activity) -> Result<(), Error>
pub async fn set_activity(&self, activity: Activity) -> Result<(), Error>
Sets/updates the Discord Rich presence activity. The runner must be started before calling this.
Examples found in repository?
examples/simple.rs (line 15)
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
examples/indefinite.rs (line 32)
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 51)
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}Sourcepub async fn clear_activity(&self) -> Result<(), Error>
pub async fn clear_activity(&self) -> Result<(), Error>
Clears a previously set Discord Rich Presence activity.
Sourcepub async fn close(&self) -> Result<(), Error>
pub async fn close(&self) -> Result<(), Error>
Closes the current connection if any.
Examples found in repository?
examples/timed.rs (line 58)
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 PresenceClient
impl Clone for PresenceClient
Source§fn clone(&self) -> PresenceClient
fn clone(&self) -> PresenceClient
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for PresenceClient
impl RefUnwindSafe for PresenceClient
impl Send for PresenceClient
impl Sync for PresenceClient
impl Unpin for PresenceClient
impl UnsafeUnpin for PresenceClient
impl UnwindSafe for PresenceClient
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