use maxbot::{MaxClient, SendMessageParamsBuilder, UpdateChatInfo};
use std::env;
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let token = env::var("MAXBOT_TOKEN").expect("Missing MAXBOT_TOKEN");
let chat_id = env::var("CHAT_ID")
.expect("Missing CHAT_ID")
.parse::<i64>()?;
if let Ok(proxy_url) = env::var("MAXBOT_PROXY") {
maxbot::set_global_base_url(proxy_url);
}
let client = MaxClient::new(token);
let chat_before = client.get_chat(chat_id).await?;
let original_title = chat_before.title.clone();
println!("📋 Чат до изменений:");
println!(" Название: {}", original_title.as_deref().unwrap_or("без названия"));
println!(" Иконка: {:?}", chat_before.icon.as_ref().map(|i| &i.url));
println!(" Закреплённое сообщение: {:?}", chat_before.pinned_message.is_some());
let builder = SendMessageParamsBuilder::new()
.text("Это сообщение будет закреплено 📌")
.chat_id(chat_id);
let mids = client.send_message_builder(builder).await?;
let pin_mid = mids.first().expect("Не получен MID сообщения");
println!("📨 Отправлено сообщение для закрепления, MID = {}", pin_mid);
tokio::time::sleep(Duration::from_secs(1)).await;
let update_info = UpdateChatInfo {
title: Some("Новое название чата (демо)".to_string()),
icon_url: Some("https://cdn-icons-png.flaticon.com/256/185/185718.png".to_string()),
pin: Some(pin_mid.clone()),
notify: Some(false),
..Default::default()
};
println!("🔄 Применяем изменения...");
let chat_after = client.update_chat(chat_id, update_info).await?;
println!("✅ Чат обновлён успешно!");
println!("\n📋 Чат после изменений:");
println!(" Название: {}", chat_after.title.as_deref().unwrap_or("без названия"));
println!(" Иконка: {:?}", chat_after.icon.as_ref().map(|i| &i.url));
println!(" Закреплённое сообщение: {}", chat_after.pinned_message.is_some());
tokio::time::sleep(Duration::from_secs(10)).await;
println!("\n🔄 Возвращаем исходное название и открепляем сообщение...");
client.unpin_message(chat_id).await?;
println!(" Сообщение откреплено.");
if let Some(orig_title) = original_title {
let revert_info = UpdateChatInfo {
title: Some(orig_title),
notify: Some(false),
..Default::default()
};
client.update_chat(chat_id, revert_info).await?;
println!(" Название возвращено.");
}
let chat_final = client.get_chat(chat_id).await?;
println!("\n📋 Финальное состояние чата:");
println!(" Название: {}", chat_final.title.as_deref().unwrap_or("без названия"));
println!(" Закреплённое сообщение: {}", chat_final.pinned_message.is_some());
Ok(())
}