1use teloxide::{
2 prelude::*,
3 types::{
4 InlineQueryResult, InlineQueryResultArticle, InputMessageContent, InputMessageContentText,
5 },
6};
7
8#[tokio::main]
9async fn main() {
10 pretty_env_logger::init();
11 log::info!("Starting inline bot...");
12
13 let bot = Bot::from_env();
14
15 let handler = Update::filter_inline_query().branch(dptree::endpoint(
16 |bot: Bot, q: InlineQuery| async move {
17 let google_search = InlineQueryResultArticle::new(
19 "01".to_string(),
23 "Google Search",
25 InputMessageContent::Text(InputMessageContentText::new(format!(
27 "https://www.google.com/search?q={}",
28 q.query,
29 ))),
30 );
31 let ddg_search = InlineQueryResultArticle::new(
36 "02".to_string(),
37 "DuckDuckGo Search".to_string(),
38 InputMessageContent::Text(InputMessageContentText::new(format!(
39 "https://duckduckgo.com/?q={}",
40 q.query
41 ))),
42 )
43 .description("DuckDuckGo Search")
44 .thumbnail_url("https://duckduckgo.com/assets/logo_header.v108.png".parse().unwrap())
45 .url("https://duckduckgo.com/about".parse().unwrap()); let results = vec![
48 InlineQueryResult::Article(google_search),
49 InlineQueryResult::Article(ddg_search),
50 ];
51
52 let response = bot.answer_inline_query(q.id.clone(), results).send().await;
55 if let Err(err) = response {
56 log::error!("Error in handler: {err:?}");
57 }
58 respond(())
59 },
60 ));
61
62 Dispatcher::builder(bot, handler).enable_ctrlc_handler().build().dispatch().await;
63}