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

use maxbot::{MaxClient, SendMessageParamsBuilder};
use std::env;
use std::time::Duration;

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

    if let Ok(proxy_url) = env::var("MAXBOT_PROXY") {
        maxbot::set_global_base_url(proxy_url);
    }

    let client = MaxClient::new(token);

    // 1. Отправляем сообщение
    let builder = SendMessageParamsBuilder::new()
        .text("Это сообщение будет закреплено, а затем откреплено.")
        .chat_id(chat_id);
    let mids = client.send_message_builder(builder).await?;
    let message_mid = mids.first().expect("Не получен MID сообщения");
    println!("📨 Сообщение отправлено, MID = {}", message_mid);

    tokio::time::sleep(Duration::from_secs(1)).await;

    // 2. Закрепляем сообщение
    println!("📌 Закрепляем сообщение...");
    match client.pin_message(chat_id, message_mid).await {
        Ok(()) => println!("✅ Сообщение закреплено."),
        Err(e) => {
            eprintln!("❌ Ошибка при закреплении: {}", e);
            return Err(e.into());
        }
    }

    // Пауза 5 секунд, чтобы можно было увидеть закрепление в интерфейсе
    println!("Ждём 5 секунд...");
    tokio::time::sleep(Duration::from_secs(5)).await;

    // 3. Открепляем сообщение
    println!("📍 Открепляем сообщение...");
    match client.unpin_message(chat_id).await {
        Ok(()) => println!("✅ Сообщение откреплено."),
        Err(e) => {
            eprintln!("❌ Ошибка при откреплении: {}", e);
            return Err(e.into());
        }
    }

    Ok(())
}
