use maxbot::MaxClient;
use std::env;
use std::io::{self, Write};
#[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);
let admins_before = match client.get_chat_admins(chat_id).await {
Ok(admins) => admins,
Err(e) => {
eprintln!("❌ Не удалось получить список администраторов: {}", e);
vec![]
}
};
if admins_before.is_empty() {
println!(" (нет администраторов или нет прав на просмотр)");
} else {
for admin in &admins_before {
println!(
" - {} {} (ID: {}){}",
admin.user.first_name,
admin.user.last_name.as_deref().unwrap_or(""),
admin.user.user_id,
if admin.is_owner { " [владелец]" } else { "" }
);
}
}
let user_ids: Vec<i64> = if let Ok(ids_str) = env::var("USER_IDS") {
ids_str
.split(',')
.filter_map(|s| s.trim().parse().ok())
.collect()
} else {
print!("Введите user_id пользователя для снятия прав администратора: ");
io::stdout().flush()?;
let mut input = String::new();
io::stdin().read_line(&mut input)?;
if let Ok(id) = input.trim().parse() {
vec![id]
} else {
println!("❌ Некорректный ввод, завершаем.");
return Ok(());
}
};
if user_ids.is_empty() {
println!("❌ Нет user_id для снятия прав.");
return Ok(());
}
let first_id = user_ids[0];
println!("\n📌 Снимаем права администратора с пользователя {}...", first_id);
match client.remove_chat_admin(chat_id, first_id).await {
Ok(()) => println!("✅ Права администратора сняты с пользователя {}.", first_id),
Err(e) => eprintln!("❌ Ошибка при снятии прав: {}", e),
}
if user_ids.len() > 1 {
println!("\n📌 Снимаем права администратора с остальных пользователей массово...");
let rest_ids = user_ids[1..].to_vec();
match client.remove_chat_admins(chat_id, rest_ids).await {
Ok(()) => println!("✅ Попытки снятия прав завершены."),
Err(e) => eprintln!("❌ Ошибка при массовом снятии прав: {}", e),
}
}
println!("\n🔍 Обновлённый список администраторов:");
match client.get_chat_admins(chat_id).await {
Ok(admins) => {
if admins.is_empty() {
println!(" (нет администраторов)");
} else {
for admin in admins {
println!(
" - {} {} (ID: {}){}",
admin.user.first_name,
admin.user.last_name.as_deref().unwrap_or(""),
admin.user.user_id,
if admin.is_owner { " [владелец]" } else { "" }
);
}
}
}
Err(e) => eprintln!("❌ Не удалось получить обновлённый список: {}", e),
}
Ok(())
}