teloxide/examples/shared_state.rs

28 lines
860 B
Rust
Raw Normal View History

2020-03-04 09:15:23 +01:00
// This bot answers how many messages it received in total on every message.
use std::sync::atomic::{AtomicU64, Ordering};
2022-02-04 15:14:57 +01:00
use once_cell::sync::Lazy;
2022-03-24 12:25:42 +01:00
use teloxide::prelude::*;
2020-03-04 09:15:23 +01:00
2022-02-04 15:14:57 +01:00
static MESSAGES_TOTAL: Lazy<AtomicU64> = Lazy::new(AtomicU64::default);
2020-03-04 09:15:23 +01:00
#[tokio::main]
async fn main() {
pretty_env_logger::init();
log::info!("Starting shared state bot...");
2020-03-04 09:15:23 +01:00
2021-03-05 22:24:10 +01:00
let bot = Bot::from_env().auto_send();
2020-03-04 09:15:23 +01:00
2022-01-26 10:51:51 +01:00
let handler = Update::filter_message().branch(dptree::endpoint(
|msg: Message, bot: AutoSend<Bot>| async move {
2022-01-26 10:51:51 +01:00
let previous = MESSAGES_TOTAL.fetch_add(1, Ordering::Relaxed);
bot.send_message(msg.chat.id, format!("I received {previous} messages in total."))
2022-01-06 12:59:50 +01:00
.await?;
2022-01-26 10:51:51 +01:00
respond(())
},
));
Dispatcher::builder(bot, handler).build().setup_ctrlc_handler().dispatch().await;
2020-03-04 09:15:23 +01:00
}