pub struct ActivityBuilder { /* private fields */ }Expand description
A builder for a Rich Presence activity.
To build an Activity out of it, use ActivityBuilder::build.
Implementations§
Source§impl ActivityBuilder
impl ActivityBuilder
Sourcepub fn name(self, text: impl Into<String>) -> Self
pub fn name(self, text: impl Into<String>) -> Self
Name of the activity.
Examples found in repository?
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}Sourcepub fn activity_type(self, type: ActivityType) -> Self
pub fn activity_type(self, type: ActivityType) -> Self
The type of activity you want to create.
Examples found in repository?
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}Sourcepub fn details(self, text: impl Into<String>) -> Self
pub fn details(self, text: impl Into<String>) -> Self
Top text for your activity.
Examples found in repository?
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
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}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 fn details_url(self, url: impl Into<String>) -> Self
pub fn details_url(self, url: impl Into<String>) -> Self
URL for the top text of your activity.
Examples found in repository?
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}Sourcepub fn state(self, text: impl Into<String>) -> Self
pub fn state(self, text: impl Into<String>) -> Self
Bottom text for your activity.
Examples found in repository?
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
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 fn state_url(self, url: impl Into<String>) -> Self
pub fn state_url(self, url: impl Into<String>) -> Self
URL for the bottom text of your activity.
Sourcepub fn set_as_instance(self) -> Self
pub fn set_as_instance(self) -> Self
Sets the activity to be an instance.
Sourcepub fn status_display_type(self, type: StatusDisplayType) -> Self
pub fn status_display_type(self, type: StatusDisplayType) -> Self
The status display type for the activity.
Examples found in repository?
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}Sourcepub fn duration(self, duration: Duration) -> Self
pub fn duration(self, duration: Duration) -> Self
Countdown duration for your activity.
Examples found in repository?
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}Add a button to the activity.
Sourcepub fn large_image(self, key: impl Into<String>) -> Self
pub fn large_image(self, key: impl Into<String>) -> Self
Large image for your activity (e.g., game icon).
Examples found in repository?
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}Sourcepub fn large_text(self, text: impl Into<String>) -> Self
pub fn large_text(self, text: impl Into<String>) -> Self
Text for the large image of your activity.
Examples found in repository?
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}Sourcepub fn large_url(self, url: impl Into<String>) -> Self
pub fn large_url(self, url: impl Into<String>) -> Self
URL for the large image of your activity.
Examples found in repository?
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}Sourcepub fn small_image(self, key: impl Into<String>) -> Self
pub fn small_image(self, key: impl Into<String>) -> Self
Small image for your activity (e.g., game icon).
Examples found in repository?
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}More examples
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 fn small_text(self, text: impl Into<String>) -> Self
pub fn small_text(self, text: impl Into<String>) -> Self
Text for the small image of your activity.
Examples found in repository?
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}Sourcepub fn small_url(self, url: impl Into<String>) -> Self
pub fn small_url(self, url: impl Into<String>) -> Self
URL for the small image of your activity.
Sourcepub fn build(self) -> Activity
pub fn build(self) -> Activity
Parses the state of this builder into a usable Activity for you to pass through super::PresenceClient::set_activity.
Examples found in repository?
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
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}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}