bot/
bot.rs

1use teloxide::prelude::*;
2use teloxide_plugins::{dispatch, PluginContext};
3mod plugs;
4
5async fn handle_message(bot: Bot, msg: Message) -> ResponseResult<()> {
6    println!("message: {:?}", msg);
7    let ctx = PluginContext::new(bot.clone(), Some(msg.clone()), None);
8    let _ = dispatch(ctx).await;
9    Ok(())
10}
11
12async fn handle_callback_query(bot: Bot, cq: CallbackQuery) -> ResponseResult<()> {
13    println!("callback query: {:?}", cq);
14    let ctx = PluginContext::new(bot.clone(), None, Some(cq.clone()));
15    let _ = dispatch(ctx).await;
16    Ok(())
17}
18
19#[tokio::main]
20async fn main() {
21    println!("Starting bot...");
22
23    let bot = Bot::new(std::env::var("TELOXIDE_BOT_TOKEN").unwrap());
24
25    let handler = dptree::entry()
26        .branch(Update::filter_message().endpoint(handle_message))
27        .branch(Update::filter_callback_query().endpoint(handle_callback_query));
28
29    Dispatcher::builder(bot, handler)
30        .enable_ctrlc_handler()
31        .build()
32        .dispatch()
33        .await;
34}