shared_state/
shared_state.rs1use std::sync::{
4 atomic::{AtomicU64, Ordering},
5 Arc,
6};
7
8use teloxide::prelude::*;
9
10#[tokio::main]
11async fn main() {
12 pretty_env_logger::init();
13 log::info!("Starting shared state bot...");
14
15 let bot = Bot::from_env();
16 let messages_total = Arc::new(AtomicU64::new(0));
17
18 let handler = Update::filter_message().endpoint(
19 |bot: Bot, messages_total: Arc<AtomicU64>, msg: Message| async move {
20 let previous = messages_total.fetch_add(1, Ordering::Relaxed);
21 bot.send_message(msg.chat.id, format!("I received {previous} messages in total."))
22 .await?;
23 respond(())
24 },
25 );
26
27 Dispatcher::builder(bot, handler)
28 .dependencies(dptree::deps![messages_total])
30 .enable_ctrlc_handler()
31 .build()
32 .dispatch()
33 .await;
34}