//! Демонстрация получения списка администраторов группового чата.
//!
//! Запуск:
//! ```bash
//! export MAXBOT_TOKEN="ваш_токен"
//! export CHAT_ID=-1234567890
//! cargo run --example get-chat-admins-demo
//! ```

use maxbot::MaxClient;
use std::env;

#[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);
    match client.get_chat_admins(chat_id).await {
        Ok(admins) => {
            if admins.is_empty() {
                println!("В чате нет администраторов (или бот не имеет прав для просмотра).");
            } else {
                println!("Найдено администраторов: {}\n", admins.len());
                for (i, admin) in admins.iter().enumerate() {
                    println!("{}. {} {}", 
                        i + 1, 
                        admin.user.first_name, 
                        admin.user.last_name.as_deref().unwrap_or("")
                    );
                    if let Some(username) = &admin.user.username {
                        println!("   Username: @{}", username);
                    }
                    println!("   ID: {}", admin.user.user_id);
                    println!("   Это бот: {}", admin.user.is_bot);
                    println!("   Владелец чата: {}", admin.is_owner);
                    println!("   Администратор: {}", admin.is_admin);
                    println!("   Дата вступления: {}", admin.join_time_formatted());
                    if !admin.permissions.is_empty() {
                        print!("   Права: ");
                        for (j, perm) in admin.permissions.iter().enumerate() {
                            if j > 0 {
                                print!(", ");
                            }
                            print!("{}", perm.as_str());
                        }
                        println!();
                    }
                    if let Some(alias) = &admin.alias {
                        println!("   Псевдоним: {}", alias);
                    }
                    if let Some(last_activity) = admin.user.last_activity_time_formatted() {
                        println!("   Последняя активность: {}", last_activity);
                    }
                    println!();
                }
            }
        }
        Err(e) => {
            eprintln!("❌ Ошибка при получении администраторов: {}", e);
            if let maxbot::Error::Api { code, message } = &e {
                eprintln!("   Код ответа API: {}", code);
                eprintln!("   Сообщение: {}", message);
            }
        }
    }

    Ok(())
}
