hypixel-sdk 0.1.1

Async client for the Hypixel Public API with typed models and SkyBlock helpers
Documentation
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(())
}