use hypixel::HypixelClient;
#[tokio::main]
async fn main() -> hypixel::Result<()> {
dotenvy::dotenv().ok();
let key = std::env::var("HYPIXEL_API_KEY").expect("set HYPIXEL_API_KEY");
let uuid = std::env::args()
.nth(1)
.unwrap_or_else(|| "be5c42d4ea454601a57b944c6413f3cd".to_string());
let client = HypixelClient::new(key);
let player = client.player(&uuid).await?.expect("player not found");
println!(
"Name: {}",
player.displayname.as_deref().unwrap_or("?")
);
println!(
"Rank: {}",
player
.rank
.or(player.monthly_package_rank)
.or(player.package_rank)
.as_deref()
.unwrap_or("NONE")
);
println!(
"Achievement points: {}",
player.achievement_points.unwrap_or(0)
);
println!("Karma: {}", player.karma.unwrap_or(0));
if let Some(exp) = player.network_exp {
println!("Network experience: {exp:.0}");
}
let status = client.status(&uuid).await?;
if status.online {
println!(
"Currently online in {} ({})",
status.game_type.as_deref().unwrap_or("?"),
status.mode.as_deref().unwrap_or("?")
);
} else {
println!("Currently offline");
}
println!(
"\nRate limit remaining: {:?}",
client.rate_limit().remaining
);
Ok(())
}