Skip to main content

login_status/
login_status.rs

1//! 读取当前账号的登录状态、硬币余额和每日奖励。
2//!
3//! ```powershell
4//! $env:BPI_ACCOUNT_TOML = "account.toml"
5//! $env:BPI_ACCOUNT_PROFILE = "vip"
6//! cargo run --example login_status --features login
7//! ```
8
9#[path = "common/account.rs"]
10mod account;
11
12use bpi_rs::BpiResult;
13
14#[tokio::main]
15async fn main() -> BpiResult<()> {
16    let client = account::authenticated_client()?;
17    let login = client.login();
18
19    let nav = login.nav().await?;
20    println!(
21        "登录状态: is_login={} mid={:?} uname={}",
22        nav.is_login,
23        nav.mid,
24        nav.uname.as_deref().unwrap_or("<unknown>")
25    );
26
27    let coin = login.coin().await?;
28    println!("硬币余额: {:.2}", coin.money);
29
30    match login.daily_reward().await {
31        Ok(reward) => println!(
32            "每日奖励: login={} watch={} coins={} share={}",
33            reward.login, reward.watch, reward.coins, reward.share
34        ),
35        Err(err) if err.is_risk_control() => {
36            println!("每日奖励: 当前请求被风控拦截,已跳过 ({err})");
37        }
38        Err(err) => return Err(err),
39    }
40
41    let vip = login.vip_info().await?;
42    println!(
43        "VIP: active={} type={} status={}",
44        vip.is_active(),
45        vip.vip_type,
46        vip.vip_status
47    );
48
49    Ok(())
50}