Skip to main content

indefinite/
indefinite.rs

1use filthy_rich::{
2    PresenceRunner,
3    errors::PresenceError,
4    types::{Activity, ActivityType, StatusDisplayType},
5};
6
7#[tokio::main]
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}