//! Демонстрация редактирования ранее отправленного сообщения.
//!
//! Отправляет в чат сообщение и через 2 секунды изменяет его.
//!
//! Так как сообщение короткое (меньше 4000 символов), оно
//! состоит из одного фрагмента, потому в данном примере
//! используется демонстрация изменения сообщения по его mid.
//!
//! Для изменения всех фрагментов большого текста можно
//! использовать метод edit_multimessage.
//!
//! # Запуск
//! ```bash
//! export MAXBOT_TOKEN="ваш_токен"
//! export CHAT_ID=-1234567890
//! cargo run --example edit-message-demo
//! ```

use maxbot::{EditMessageParams, MaxClient, SendMessageParamsBuilder};
use std::time::Duration;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let token = std::env::var("MAXBOT_TOKEN").expect("Missing MAXBOT_TOKEN");
    let chat_id = std::env::var("CHAT_ID")
        .expect("Missing CHAT_ID")
        .parse::<i64>()?;
    if let Ok(proxy_url) = std::env::var("MAXBOT_PROXY") {
        maxbot::set_global_base_url(proxy_url);
    }

    let client = MaxClient::new(token);

    // 1. Отправляем исходное сообщение
    let builder = SendMessageParamsBuilder::new()
        .text("Это сообщение будет отредактировано")
        .chat_id(chat_id);
    let mids = client.send_message_builder(builder).await?;
    let original_mid = mids.first().expect("No message ID returned");
    println!("📤 Исходное сообщение отправлено, mid = {}", original_mid);

    tokio::time::sleep(Duration::from_secs(2)).await;

    // 2. Редактируем сообщение
    let edit_params = EditMessageParams {
        text: Some("✅ Сообщение успешно отредактировано!".to_string()),
        ..Default::default()
    };
    client.edit_message(original_mid, edit_params).await?;
    println!("✏️ Сообщение отредактировано");

    Ok(())
}
