combined_attachments_demo/
combined-attachments-demo.rs1use maxbot::{
12 Attachment, ContactData, InlineKeyboardBuilder, InlineKeyboardButton, MaxClient,
13 SendMessageParamsBuilder, ShareData,
14};
15
16#[tokio::main]
17async fn main() -> Result<(), Box<dyn std::error::Error>> {
18 let token = std::env::var("MAXBOT_TOKEN").expect("Missing MAXBOT_TOKEN");
19 let chat_id = std::env::var("CHAT_ID")
20 .expect("Missing CHAT_ID")
21 .parse::<i64>()?;
22 if let Ok(proxy_url) = std::env::var("MAXBOT_PROXY") {
23 maxbot::set_global_base_url(proxy_url);
24 }
25
26 let client = MaxClient::new(token);
27
28 println!("Отправляем стикер...");
30 let builder = SendMessageParamsBuilder::new()
31 .chat_id(chat_id)
32 .attachment(Attachment::sticker("154ed15bb")); match client.send_message_builder(builder).await {
34 Ok(ids) => println!(" ✅ mid = {:?}", ids.first().unwrap()),
35 Err(e) => eprintln!(" ❌ Ошибка: {}", e),
36 }
37
38 println!("Отправляем контакт...");
40 let me = client.get_me().await?;
43 let contact = ContactData {
44 name: Some("Мой бот".to_string()),
45 contact_id: Some(me.user.user_id),
46 vcf_info: None,
47 vcf_phone: None,
48 };
49 let builder = SendMessageParamsBuilder::new()
50 .text("Контакт:")
51 .chat_id(chat_id)
52 .attachment(Attachment::contact(contact));
53 match client.send_message_builder(builder).await {
54 Ok(ids) => println!(" ✅ mid = {:?}", ids.first().unwrap()),
55 Err(e) => eprintln!(" ❌ Ошибка: {}", e),
56 }
57
58 println!("Отправляем геолокацию...");
60 let builder = SendMessageParamsBuilder::new()
61 .text("Геолокация:")
62 .chat_id(chat_id)
63 .attachment(Attachment::location(55.7558, 37.6176)); match client.send_message_builder(builder).await {
65 Ok(ids) => println!(" ✅ mid = {:?}", ids.first().unwrap()),
66 Err(e) => eprintln!(" ❌ Ошибка: {}", e),
67 }
68
69 println!("Отправляем share (ссылку)...");
71 let share = ShareData {
72 url: Some("https://dev.max.ru".to_string()),
73 token: None,
74 };
75 let builder = SendMessageParamsBuilder::new()
76 .text("Полезная ссылка:")
77 .chat_id(chat_id)
78 .attachment(Attachment::share(share));
79 match client.send_message_builder(builder).await {
80 Ok(ids) => println!(" ✅ mid = {:?}", ids.first().unwrap()),
81 Err(e) => eprintln!(" ❌ Ошибка: {}", e),
82 }
83
84 println!("Отправляем inline-клавиатуру...");
86 let keyboard = InlineKeyboardBuilder::new()
87 .button(InlineKeyboardButton::link("Последние новости…", "https://www.e1.ru"))
89 .row(vec![InlineKeyboardButton::clipboard("Скопировать код", "SECRET_2026")])
91 .button(InlineKeyboardButton::callback("Кнопка", "demo_payload"))
92 .build()?;
94 let builder = SendMessageParamsBuilder::new()
95 .text("Клавиатура:")
96 .chat_id(chat_id)
97 .attachment(Attachment::inline_keyboard(keyboard));
98 match client.send_message_builder(builder).await {
99 Ok(ids) => println!(" ✅ mid = {:?}", ids.first().unwrap()),
100 Err(e) => eprintln!(" ❌ Ошибка: {}", e),
101 }
102
103 println!("Отправляем inline-клавиатуру в 3 строки…");
105 let keyboard = InlineKeyboardBuilder::new()
106 .push_button(InlineKeyboardButton::callback("1", "1"))
107 .push_button(InlineKeyboardButton::callback("2", "2"))
108 .push_button(InlineKeyboardButton::callback("3", "3"))
109 .push_button(InlineKeyboardButton::callback("4", "4"))
110 .push_button(InlineKeyboardButton::callback("5", "5"))
111 .push_button(InlineKeyboardButton::callback("6", "6"))
112 .push_button(InlineKeyboardButton::callback("7", "7"))
113 .push_button(InlineKeyboardButton::callback("8", "8"))
114 .push_button(InlineKeyboardButton::callback("9", "9"))
115 .push_button(InlineKeyboardButton::callback("10", "10"))
116 .push_button(InlineKeyboardButton::callback("11", "11"))
117 .push_button(InlineKeyboardButton::callback("12", "12"))
118 .push_button(InlineKeyboardButton::callback("13", "13"))
119 .push_button(InlineKeyboardButton::callback("14", "14"))
120 .push_button(InlineKeyboardButton::callback("15", "15"))
121 .build()?;
122 let builder = SendMessageParamsBuilder::new()
123 .text("Автозаполняемая клавиатура 1:")
124 .chat_id(chat_id)
125 .attachment(Attachment::inline_keyboard(keyboard));
126 match client.send_message_builder(builder).await {
127 Ok(ids) => println!(" ✅ mid = {:?}", ids.first().unwrap()),
128 Err(e) => eprintln!(" ❌ Ошибка: {}", e),
129 }
130
131 println!("Отправляем inline-клавиатуру в 2 строки…");
133 let keyboard = InlineKeyboardBuilder::new()
134 .push_button(InlineKeyboardButton::callback("A", "a"))
135 .push_button(InlineKeyboardButton::callback("B", "b"))
136 .push_button(InlineKeyboardButton::callback("C", "c"))
137 .push_button(InlineKeyboardButton::callback("D", "d")) .push_button(InlineKeyboardButton::link("Я", "https://ya.ru")) .push_button(InlineKeyboardButton::callback("E", "e")) .build()?;
141 let builder = SendMessageParamsBuilder::new()
142 .text("Автозаполняемая клавиатура 2:")
143 .chat_id(chat_id)
144 .attachment(Attachment::inline_keyboard(keyboard));
145 match client.send_message_builder(builder).await {
146 Ok(ids) => println!(" ✅ mid = {:?}", ids.first().unwrap()),
147 Err(e) => eprintln!(" ❌ Ошибка: {}", e),
148 }
149
150 Ok(())
151}