Skip to main content

ngrok_ping_pong/
ngrok_ping_pong.rs

1// The version of ngrok ping-pong-bot, which uses a webhook to receive updates
2// from Telegram, instead of long polling.
3
4use teloxide_ng::{prelude::*, update_listeners::webhooks};
5
6#[tokio::main]
7async fn main() {
8    pretty_env_logger::init();
9    log::info!("Starting ngrok ping-pong bot...");
10
11    let bot = Bot::from_env();
12
13    let addr = ([127, 0, 0, 1], 8443).into();
14    let url = "Your HTTPS ngrok URL here. Get it by `ngrok http 8443`".parse().unwrap();
15    let listener = webhooks::axum(bot.clone(), webhooks::Options::new(addr, url))
16        .await
17        .expect("Couldn't setup webhook");
18
19    teloxide_ng::repl_with_listener(
20        bot,
21        |bot: Bot, msg: Message| async move {
22            bot.send_message(msg.chat.id, "pong").await?;
23            Ok(())
24        },
25        listener,
26    )
27    .await;
28}