maxbot 0.1.13

Автоматизация работы с чат-ботами на платформе MAX (max.ru)
Documentation
use chrono::{DateTime, Local, TimeZone, Utc};
use maxbot::MaxClient;
use std::env;

fn format_timestamp(ts_millis: i64) -> String {
    let dt = Utc.timestamp_millis_opt(ts_millis).unwrap();
    let local = dt.with_timezone(&Local);
    local.format("%d.%m.%Y %H:%M:%S").to_string()
}

#[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_bot_member(chat_id).await {
        Ok(member) => {
            println!("✅ Информация о боте:\n");
            println!("  Имя: {} {}", 
                member.user.first_name, 
                member.user.last_name.as_deref().unwrap_or(""));
            println!("  Username: {:?}", member.user.username);
            println!("  ID: {}", member.user.user_id);
            println!("  Это бот: {}", member.user.is_bot);
            if let Some(last_activity) = member.user.last_activity_time {
                println!("  Последняя активность: {}", format_timestamp(last_activity));
            }
            if let Some(desc) = member.description {
                println!("  Описание: {}", desc);
            }
            if let Some(avatar) = member.avatar_url {
                println!("  Аватар: {}", avatar);
            }
            println!("  Последний доступ к чату: {}", format_timestamp(member.last_access_time));
            println!("  Владелец чата: {}", member.is_owner);
            println!("  Администратор: {}", member.is_admin);
            println!("  Дата присоединения: {}", format_timestamp(member.join_time));
            if !member.permissions.is_empty() {
                println!("  Права: {:?}", member.permissions);
            } 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(())
}