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(())
}