70
src/main.rs
Normal file
70
src/main.rs
Normal file
@@ -0,0 +1,70 @@
|
||||
use std::{path::PathBuf, thread::sleep, time::Duration};
|
||||
|
||||
use clap::Parser;
|
||||
use discord_presence::{Client, models::ActivityType};
|
||||
use mpd::{Idle, Subsystem};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
struct Config {
|
||||
address: String,
|
||||
}
|
||||
|
||||
impl Default for Config {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
address: "localhost:6600".to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Parser)]
|
||||
struct Args {
|
||||
#[arg(short, long)]
|
||||
config: Option<PathBuf>,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let args = Args::parse();
|
||||
let config = args
|
||||
.config
|
||||
.and_then(|path| std::fs::read_to_string(path).ok())
|
||||
.and_then(|t| toml::from_str::<Config>(&t).ok())
|
||||
.unwrap_or_default();
|
||||
|
||||
let mut mpdc = mpd::Client::connect("localhost:6600").unwrap();
|
||||
println!("Status: {:?}", mpdc.status());
|
||||
mpdc.idle(&[Subsystem::Player]);
|
||||
|
||||
let mut client = Client::new(1464985070992363645);
|
||||
|
||||
client.start();
|
||||
|
||||
{
|
||||
let ready = client.on_ready({
|
||||
let client = client.clone();
|
||||
move |_ctx| {
|
||||
let mut client = client.clone();
|
||||
println!("READY!");
|
||||
|
||||
client
|
||||
.set_activity(|a| {
|
||||
a.state("Rust")
|
||||
.details("Programming")
|
||||
.activity_type(ActivityType::Listening)
|
||||
})
|
||||
.unwrap();
|
||||
}
|
||||
});
|
||||
|
||||
std::mem::forget(ready);
|
||||
}
|
||||
|
||||
let _error = client.on_error(|ctx| {
|
||||
eprintln!("An error occured, {:?}", ctx.event);
|
||||
});
|
||||
|
||||
loop {
|
||||
sleep(Duration::from_secs(100));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user