//! Пример бота с периодическими заданиями.
//!
//! Запуск:
//! ```bash
//! export MAXBOT_TOKEN="ваш_токен"
//! cargo run --example dispatcher-task
//! ```

use maxbot::{Dispatcher, MaxClient, ScheduledTaskContext, StartContext};
use std::time::Duration;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Инициализируем клиент из переменной окружения MAXBOT_TOKEN
    let bot = MaxClient::from_env().expect("MAXBOT_TOKEN not set");

    // Создаём диспетчер
    let mut dp = Dispatcher::new(bot);

    dp.on_start(|ctx: StartContext| async move {
        let me = ctx.bot().get_me().await?;
        println!("Бот {} запущен", me.user.username.unwrap_or_default());
        Ok(())
    });

    dp.task(Duration::from_secs(10), |_ctx: ScheduledTaskContext| async move {
        println!("Периодическое задание каждые 10 секунд");
        Ok(())
    });

    println!("Нажмите Ctrl+C для остановки.");
    dp.start_polling().await;

    Ok(())
}
