1use std::{
2 sync::{
3 Arc,
4 atomic::{AtomicU8, Ordering},
5 },
6 time::Duration,
7};
8
9use filthy_rich::{PresenceRunner, errors::PresenceError, types::Activity};
10use tokio::time::sleep;
11
12#[tokio::main]
13async fn main() -> Result<(), PresenceError> {
14 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 let val = count.fetch_add(1, Ordering::Relaxed) + 1;
23
24 println!("Activity {val} sent successfully.")
25
26 })
27 .show_errors() ;
29
30 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 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}