pub struct DiscordIPC { /* private fields */ }Expand description
Primary struct for you to set and update Discord Rich Presences with.
Implementations§
Source§impl DiscordIPC
impl DiscordIPC
Sourcepub fn new(client_id: &str) -> Self
pub fn new(client_id: &str) -> Self
Creates a new asynchronous Discord IPC client with the given client ID.
Examples found in repository?
More examples
examples/timed.rs (line 9)
8async fn main() -> Result<()> {
9 let mut client = DiscordIPC::new("1463450870480900160");
10
11 // first run
12 client.run().await.unwrap();
13
14 client.set_activity("this runs", "for ten seconds").await?;
15 sleep(Duration::from_secs(5)).await;
16 client.set_activity("believe it", "or not").await?;
17 sleep(Duration::from_secs(5)).await;
18
19 client.clear_activity().await?;
20
21 // if you want to drop the connection here:
22 // client.close().await?;
23
24 // optional sleep
25 sleep(Duration::from_secs(2)).await;
26
27 // if you closed the connection, you must run it afterwards:
28 // client.run().await?;
29
30 // 2nd run
31 client.set_activity("this is the", "second run").await?;
32 sleep(Duration::from_secs(5)).await;
33 client
34 .set_activity("which also runs for", "ten seconds")
35 .await?;
36 sleep(Duration::from_secs(5)).await;
37
38 Ok(())
39}Sourcepub fn client_id(&self) -> String
pub fn client_id(&self) -> String
Returns the Discord client ID that has been used to initialize this IPC client.
Sourcepub fn is_running(&self) -> bool
pub fn is_running(&self) -> bool
Checks internally whether or not an existing IPC client instance is running and currently attached with Discord.
Sourcepub async fn run(&mut self) -> Result<()>
pub async fn run(&mut self) -> Result<()>
Runs the Discord IPC client.
Examples found in repository?
More examples
examples/timed.rs (line 12)
8async fn main() -> Result<()> {
9 let mut client = DiscordIPC::new("1463450870480900160");
10
11 // first run
12 client.run().await.unwrap();
13
14 client.set_activity("this runs", "for ten seconds").await?;
15 sleep(Duration::from_secs(5)).await;
16 client.set_activity("believe it", "or not").await?;
17 sleep(Duration::from_secs(5)).await;
18
19 client.clear_activity().await?;
20
21 // if you want to drop the connection here:
22 // client.close().await?;
23
24 // optional sleep
25 sleep(Duration::from_secs(2)).await;
26
27 // if you closed the connection, you must run it afterwards:
28 // client.run().await?;
29
30 // 2nd run
31 client.set_activity("this is the", "second run").await?;
32 sleep(Duration::from_secs(5)).await;
33 client
34 .set_activity("which also runs for", "ten seconds")
35 .await?;
36 sleep(Duration::from_secs(5)).await;
37
38 Ok(())
39}Sourcepub async fn wait(&mut self) -> Result<()>
pub async fn wait(&mut self) -> Result<()>
Waits for the primary IPC client task to finish. Can also be used to keep the IPC client running forever.
Sourcepub async fn set_activity(&self, details: &str, state: &str) -> Result<()>
pub async fn set_activity(&self, details: &str, state: &str) -> Result<()>
Sets/updates a Discord Rich Presence activity.
Examples found in repository?
More examples
examples/timed.rs (line 14)
8async fn main() -> Result<()> {
9 let mut client = DiscordIPC::new("1463450870480900160");
10
11 // first run
12 client.run().await.unwrap();
13
14 client.set_activity("this runs", "for ten seconds").await?;
15 sleep(Duration::from_secs(5)).await;
16 client.set_activity("believe it", "or not").await?;
17 sleep(Duration::from_secs(5)).await;
18
19 client.clear_activity().await?;
20
21 // if you want to drop the connection here:
22 // client.close().await?;
23
24 // optional sleep
25 sleep(Duration::from_secs(2)).await;
26
27 // if you closed the connection, you must run it afterwards:
28 // client.run().await?;
29
30 // 2nd run
31 client.set_activity("this is the", "second run").await?;
32 sleep(Duration::from_secs(5)).await;
33 client
34 .set_activity("which also runs for", "ten seconds")
35 .await?;
36 sleep(Duration::from_secs(5)).await;
37
38 Ok(())
39}Sourcepub async fn clear_activity(&self) -> Result<()>
pub async fn clear_activity(&self) -> Result<()>
Clears a previously-set Discord Rich Presence activity. Prefer this function over close() if the current process is not being exited with the presence toggle.
Examples found in repository?
examples/timed.rs (line 19)
8async fn main() -> Result<()> {
9 let mut client = DiscordIPC::new("1463450870480900160");
10
11 // first run
12 client.run().await.unwrap();
13
14 client.set_activity("this runs", "for ten seconds").await?;
15 sleep(Duration::from_secs(5)).await;
16 client.set_activity("believe it", "or not").await?;
17 sleep(Duration::from_secs(5)).await;
18
19 client.clear_activity().await?;
20
21 // if you want to drop the connection here:
22 // client.close().await?;
23
24 // optional sleep
25 sleep(Duration::from_secs(2)).await;
26
27 // if you closed the connection, you must run it afterwards:
28 // client.run().await?;
29
30 // 2nd run
31 client.set_activity("this is the", "second run").await?;
32 sleep(Duration::from_secs(5)).await;
33 client
34 .set_activity("which also runs for", "ten seconds")
35 .await?;
36 sleep(Duration::from_secs(5)).await;
37
38 Ok(())
39}Trait Implementations§
Auto Trait Implementations§
impl Freeze for DiscordIPC
impl RefUnwindSafe for DiscordIPC
impl Send for DiscordIPC
impl Sync for DiscordIPC
impl Unpin for DiscordIPC
impl UnsafeUnpin for DiscordIPC
impl UnwindSafe for DiscordIPC
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