//! Демонстрация отправки действий бота (typing, отправка фото и т.д.).
//!
//! # Запуск
//! ```bash
//! export MAXBOT_TOKEN="ваш_токен"
//! export CHAT_ID=-1234567890
//! cargo run --example send-chat-actions-demo
//! ```

use maxbot::MaxClient;
use std::env;
use std::time::Duration;

const ACTIONS: &[&str] = &[
    "typing_on",
    "sending_photo",
    "sending_video",
    "sending_audio",
    "sending_file",
    "mark_seen",
];

#[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);

    println!("Отправляем последовательно действия бота в чат {}...\n", chat_id);

    for action in ACTIONS {
        print!("Действие: {:15} ", action);
        match client.send_chat_action(chat_id, action).await {
            Ok(()) => println!("✅ успешно"),
            Err(e) => {
                println!("❌ ошибка: {}", e);
                if let maxbot::Error::Api { code, message } = &e {
                    println!("   Код ответа API: {}", code);
                    println!("   Сообщение: {}", message);
                }
            }
        }
        // Задержка 7 секунд, чтобы в интерфейсе можно было заметить смену статуса
        tokio::time::sleep(Duration::from_secs(7)).await;
    }

    println!("\nВсе действия отправлены.");
    Ok(())
}
