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 Discord IPC client instance.
Examples found in repository?
More examples
examples/indefinite.rs (line 6)
5async fn main() -> Result<()> {
6 let mut client = DiscordIPC::new("1463450870480900160")
7 .on_ready(|data| println!("Connected to user: {}", data.user.username));
8
9 client.run(true).await?;
10
11 let activity = Activity::new().details("this runs forever").build();
12
13 client.set_activity(activity).await?;
14 client.wait().await?;
15
16 Ok(())
17}examples/timed.rs (line 9)
8async fn main() -> Result<()> {
9 let mut client = DiscordIPC::new("1463450870480900160")
10 .on_ready(|data| println!("Connected to user: {}", data.user.username));
11
12 // create activities for later use
13 let activity_1 = Activity::new()
14 .details("this runs")
15 .state("for ten seconds")
16 .build();
17
18 let activity_2 = Activity::new()
19 .details("believe it")
20 .state("or not")
21 .build();
22
23 let closing_activity = Activity::new()
24 .details("closing presence in...")
25 .duration(Duration::from_secs(5))
26 .build();
27
28 // first run
29 client.run(true).await?;
30
31 client.set_activity(activity_1).await?;
32 sleep(Duration::from_secs(5)).await;
33 client.set_activity(activity_2).await?;
34 sleep(Duration::from_secs(5)).await;
35 client.set_activity(closing_activity).await?;
36 sleep(Duration::from_secs(5)).await;
37
38 Ok(())
39}Sourcepub fn on_ready<F: Fn(ReadyData) + Send + Sync + 'static>(self, f: F) -> Self
pub fn on_ready<F: Fn(ReadyData) + Send + Sync + 'static>(self, f: F) -> Self
Run a particular closure after receiving the READY event from the local Discord IPC server.
Examples found in repository?
examples/indefinite.rs (line 7)
5async fn main() -> Result<()> {
6 let mut client = DiscordIPC::new("1463450870480900160")
7 .on_ready(|data| println!("Connected to user: {}", data.user.username));
8
9 client.run(true).await?;
10
11 let activity = Activity::new().details("this runs forever").build();
12
13 client.set_activity(activity).await?;
14 client.wait().await?;
15
16 Ok(())
17}More examples
examples/timed.rs (line 10)
8async fn main() -> Result<()> {
9 let mut client = DiscordIPC::new("1463450870480900160")
10 .on_ready(|data| println!("Connected to user: {}", data.user.username));
11
12 // create activities for later use
13 let activity_1 = Activity::new()
14 .details("this runs")
15 .state("for ten seconds")
16 .build();
17
18 let activity_2 = Activity::new()
19 .details("believe it")
20 .state("or not")
21 .build();
22
23 let closing_activity = Activity::new()
24 .details("closing presence in...")
25 .duration(Duration::from_secs(5))
26 .build();
27
28 // first run
29 client.run(true).await?;
30
31 client.set_activity(activity_1).await?;
32 sleep(Duration::from_secs(5)).await;
33 client.set_activity(activity_2).await?;
34 sleep(Duration::from_secs(5)).await;
35 client.set_activity(closing_activity).await?;
36 sleep(Duration::from_secs(5)).await;
37
38 Ok(())
39}Sourcepub fn client_id(&self) -> String
pub fn client_id(&self) -> String
The Discord client ID that has been used to initialize this IPC client instance.
Sourcepub async fn run(&mut self, wait_for_ready: bool) -> Result<()>
pub async fn run(&mut self, wait_for_ready: bool) -> Result<()>
Run the client.
Must be called before any DiscordIPC::set_activity calls.
Examples found in repository?
More examples
examples/indefinite.rs (line 9)
5async fn main() -> Result<()> {
6 let mut client = DiscordIPC::new("1463450870480900160")
7 .on_ready(|data| println!("Connected to user: {}", data.user.username));
8
9 client.run(true).await?;
10
11 let activity = Activity::new().details("this runs forever").build();
12
13 client.set_activity(activity).await?;
14 client.wait().await?;
15
16 Ok(())
17}examples/timed.rs (line 29)
8async fn main() -> Result<()> {
9 let mut client = DiscordIPC::new("1463450870480900160")
10 .on_ready(|data| println!("Connected to user: {}", data.user.username));
11
12 // create activities for later use
13 let activity_1 = Activity::new()
14 .details("this runs")
15 .state("for ten seconds")
16 .build();
17
18 let activity_2 = Activity::new()
19 .details("believe it")
20 .state("or not")
21 .build();
22
23 let closing_activity = Activity::new()
24 .details("closing presence in...")
25 .duration(Duration::from_secs(5))
26 .build();
27
28 // first run
29 client.run(true).await?;
30
31 client.set_activity(activity_1).await?;
32 sleep(Duration::from_secs(5)).await;
33 client.set_activity(activity_2).await?;
34 sleep(Duration::from_secs(5)).await;
35 client.set_activity(closing_activity).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 IPC task to finish.
Examples found in repository?
More examples
examples/indefinite.rs (line 14)
5async fn main() -> Result<()> {
6 let mut client = DiscordIPC::new("1463450870480900160")
7 .on_ready(|data| println!("Connected to user: {}", data.user.username));
8
9 client.run(true).await?;
10
11 let activity = Activity::new().details("this runs forever").build();
12
13 client.set_activity(activity).await?;
14 client.wait().await?;
15
16 Ok(())
17}Sourcepub fn is_running(&self) -> bool
pub fn is_running(&self) -> bool
Checks whether the task is running through the internal atomic indicator flag.
Sourcepub async fn set_activity(&self, activity: Activity) -> Result<()>
pub async fn set_activity(&self, activity: Activity) -> Result<()>
Sets/updates the Discord Rich presence activity.
DiscordIPC::run must be executed prior to calling this.
Examples found in repository?
More examples
examples/indefinite.rs (line 13)
5async fn main() -> Result<()> {
6 let mut client = DiscordIPC::new("1463450870480900160")
7 .on_ready(|data| println!("Connected to user: {}", data.user.username));
8
9 client.run(true).await?;
10
11 let activity = Activity::new().details("this runs forever").build();
12
13 client.set_activity(activity).await?;
14 client.wait().await?;
15
16 Ok(())
17}examples/timed.rs (line 31)
8async fn main() -> Result<()> {
9 let mut client = DiscordIPC::new("1463450870480900160")
10 .on_ready(|data| println!("Connected to user: {}", data.user.username));
11
12 // create activities for later use
13 let activity_1 = Activity::new()
14 .details("this runs")
15 .state("for ten seconds")
16 .build();
17
18 let activity_2 = Activity::new()
19 .details("believe it")
20 .state("or not")
21 .build();
22
23 let closing_activity = Activity::new()
24 .details("closing presence in...")
25 .duration(Duration::from_secs(5))
26 .build();
27
28 // first run
29 client.run(true).await?;
30
31 client.set_activity(activity_1).await?;
32 sleep(Duration::from_secs(5)).await;
33 client.set_activity(activity_2).await?;
34 sleep(Duration::from_secs(5)).await;
35 client.set_activity(closing_activity).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.
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