Skip to main content

dispatcher_task/
dispatcher-task.rs

1//! Пример бота с периодическими заданиями.
2//!
3//! Запуск:
4//! ```bash
5//! export MAXBOT_TOKEN="ваш_токен"
6//! cargo run --example dispatcher-task
7//! ```
8
9use maxbot::{Dispatcher, MaxClient, ScheduledTaskContext, StartContext};
10use std::time::Duration;
11
12#[tokio::main]
13async fn main() -> Result<(), Box<dyn std::error::Error>> {
14    // Инициализируем клиент из переменной окружения MAXBOT_TOKEN
15    let bot = MaxClient::from_env().expect("MAXBOT_TOKEN not set");
16
17    // Создаём диспетчер
18    let mut dp = Dispatcher::new(bot);
19
20    dp.on_start(|ctx: StartContext| async move {
21        let me = ctx.bot().get_me().await?;
22        println!("Бот {} запущен", me.user.username.unwrap_or_default());
23        Ok(())
24    });
25
26    dp.task(Duration::from_secs(10), |_ctx: ScheduledTaskContext| async move {
27        println!("Периодическое задание каждые 10 секунд");
28        Ok(())
29    });
30
31    println!("Нажмите Ctrl+C для остановки.");
32    dp.start_polling().await;
33
34    Ok(())
35}