//! Демонстрация получения информации о членстве бота в групповом чате.
//!
//! Запуск:
//! ```bash
//! export MAXBOT_TOKEN="ваш_токен"
//! export CHAT_ID=-1234567890
//! cargo run --example get_bot_member_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!("Запрашиваем информацию о членстве бота в чате {}...", chat_id);
    match client.get_bot_member(chat_id).await {
        Ok(member) => {
            println!("✅ Информация получена:\n");
            println!("  Имя: {} {}", 
                member.user.first_name, 
                member.user.last_name.as_deref().unwrap_or("")
            );
            if let Some(username) = &member.user.username {
                println!("  Username: @{}", username);
            }
            println!("  ID пользователя: {}", member.user.user_id);
            println!("  Это бот: {}", member.user.is_bot);
            if let Some(last_activity) = member.user.last_activity_time_formatted() {
                println!("  Последняя активность: {}", last_activity);
            }
            if let Some(desc) = &member.description {
                println!("  Описание: {}", desc);
            }
            if let Some(avatar) = &member.avatar_url {
                println!("  URL аватара: {}", avatar);
            }
            if let Some(full_avatar) = &member.full_avatar_url {
                println!("  Полный URL аватара: {}", full_avatar);
            }
            println!("  Последний доступ к чату: {}", member.last_access_time_formatted());
            println!("  Владелец чата: {}", member.is_owner);
            println!("  Администратор: {}", member.is_admin);
            println!("  Присоединился: {}", member.join_time_formatted());
            if !member.permissions.is_empty() {
                print!("  Права: ");
                for (i, perm) in member.permissions.iter().enumerate() {
                    if i > 0 {
                        print!(", ");
                    }
                    print!("{}", perm.as_str());
                }
                println!();
            } else {
                println!("  Права: нет");
            }
            if let Some(alias) = &member.alias {
                println!("  Псевдоним: {}", alias);
            }
        }
        Err(e) => {
            println!("❌ Ошибка: {}", e);
            if let maxbot::Error::Api { code, message } = &e {
                println!("   Код ответа API: {}", code);
                println!("   Сообщение: {}", message);
            }
        }
    }

    Ok(())
}
