//! Демонстрация постраничного получения списка сообщений из чата.
//!
//! # Запуск
//! ```bash
//! export MAXBOT_TOKEN="ваш_токен"
//! export CHAT_ID=-1234567890
//! cargo run --example get-messages-demo
//! ```

use maxbot::{GetMessagesParams, MaxClient};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let token = std::env::var("MAXBOT_TOKEN").expect("Missing MAXBOT_TOKEN");
    let chat_id = std::env::var("CHAT_ID")
        .expect("Missing CHAT_ID")
        .parse::<i64>()?;
    if let Ok(proxy_url) = std::env::var("MAXBOT_PROXY") {
        maxbot::set_global_base_url(proxy_url);
    }

    let client = MaxClient::new(token);

    println!("Получаем последние 10 сообщений из чата {}...", chat_id);
    let params = GetMessagesParams {
        chat_id,
        count: Some(10),
        ..Default::default()
    };
    let (messages, next_marker) = client.get_messages(params).await?;

    println!("Получено сообщений: {}", messages.len());
    for msg in messages {
        let sender = msg
            .sender
            .map(|u| u.first_name.clone())
            .unwrap_or_else(|| "неизвестный".to_string());
        let text = msg
            .body
            .and_then(|b| b.text)
            .unwrap_or_else(|| "<без текста>".to_string());
        println!(
            "[{}] {}: {}",
            msg.timestamp, sender, text.chars().take(50).collect::<String>()
        );
    }

    if let Some(marker) = next_marker {
        println!("\nСледующий маркер: {}", marker);
    } else {
        println!("\nДостигнут конец истории.");
    }

    Ok(())
}
