02_activity/
02_activity.rs1use discordipc::{
2 activity::{Activity, Button, Timestamps},
3 packet::Packet,
4 Client, Result,
5};
6
7fn main() -> Result<()> {
8 let client = Client::new("<application_id>");
9
10 client.on("READY", |client, _packet| {
11 println!("Connected");
12
13 let activity = Activity::new()
17 .details("In Workspace: test")
18 .state("Dealing with proc-macros")
19 .timestamps(Timestamps::new().start_now())
20 .button(Button::new("Get started!", "https://rustup.rs/"));
21
22 let _activity = Activity {
24 details: Some("In Workspace: test".to_string()),
25 state: Some("Dealing with proc-macros".to_string()),
26 timestamps: Some(Timestamps::new().start_now()),
27 buttons: Some(vec![Button {
28 label: "Get started!".to_string(),
29 url: "https://rustup.rs/".to_string(),
30 }]),
31 ..Activity::default()
32 };
33 let nonce = Packet::generate_nonce(); let activity_packet = Packet::new_activity(Some(&activity), Some(&nonce));
41
42 client.once(nonce, |client, packet| {
44 match packet.filter() {
48 Ok(_packet) => {
49 println!("Activity has been set!");
50
51 std::thread::sleep(std::time::Duration::from_secs(10));
52
53 if let Err(e) = client.send(Packet::new_activity(None, None)) {
54 eprintln!("Couldn't send packet: {}", e)
55 };
56 println!("Activity cleared!");
57 }
58 Err(e) => println!("Couldn't set activity: {}", e),
59 }
60 });
61
62 if let Err(e) = client.send(activity_packet) {
64 eprintln!("Couldn't send packet: {}", e)
65 };
66 });
67
68 client.connect()?;
70 std::io::stdin().read_line(&mut String::new()).unwrap();
71 client.disconnect()?;
72 println!("Disconnected");
73
74 Ok(())
75}