//! Демонстрация загрузки файла и использования токена.
//!
//! # Запуск
//! ```bash
//! export MAXBOT_TOKEN="ваш_токен"
//! export CHAT_ID=-1234567890
//! cargo run --example upload-file-demo
//! ```

use maxbot::{Attachment, MaxClient, SendMessageParamsBuilder};
use std::path::PathBuf;

#[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);

    // Путь к файлу
    let file_path = PathBuf::from("examples/files/hello.jpg");
    if !file_path.exists() {
        eprintln!("Файл не найден: {:?}", file_path);
        return Ok(());
    }

    // 1. Загружаем файл и получаем токен
    println!("Загружаем файл...");
    let file_token = client.upload_file(&file_path, "image").await?;
    println!("✅ Файл загружен, токен: {}", file_token);

    // 2. Отправляем сообщение, используя токен вместо локального файла
    let builder = SendMessageParamsBuilder::new()
        .text("Изображение, загруженное по токену")
        .chat_id(chat_id)
        .attachment(Attachment::image_token(file_token));

    let ids = client.send_message_builder(builder).await?;
    println!("📨 Сообщение отправлено, mid = {:?}", ids.first().unwrap());

    Ok(())
}
