如何使用Rust的Teloxide crate为Telegram Bot设置聊天菜单按钮
使用teloxide为Telegram Bot添加WebApp菜单按钮
核心实现步骤
要设置WebApp菜单按钮,只需按以下三步操作,直接结合代码示例理解更清晰:
导入必要类型
先在代码顶部引入teloxide相关的结构体与枚举:use teloxide::{ prelude::*, types::{MenuButton, WebAppInfo}, };定义WebApp信息
用WebAppInfo结构体指定你的WebApp访问地址,必须是HTTPS链接:let web_app_info = WebAppInfo::new("https://your-webapp-url.com");创建菜单按钮并调用设置方法
- 构造
MenuButton::WebApp类型的按钮实例,传入显示文本和WebApp信息:let web_app_menu_btn = MenuButton::WebApp { text: "打开我的Web应用", web_app: web_app_info, }; - 调用
set_chat_menu_button完成设置:- 全局设置(对所有用户生效):
bot.set_chat_menu_button() .menu_button(web_app_menu_btn) .send() .await?; - 针对特定对话/用户设置:
bot.set_chat_menu_button() .chat_id(123456789) // 替换为目标对话ID .menu_button(web_app_menu_btn) .send() .await?;
- 全局设置(对所有用户生效):
- 构造
完整示例代码
#[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let bot = Bot::from_env(); // 配置WebApp地址 let web_app_info = WebAppInfo::new("https://your-webapp-url.com"); // 创建WebApp菜单按钮 let menu_button = MenuButton::WebApp { text: "启动Web应用", web_app: web_app_info, }; // 全局设置菜单按钮 bot.set_chat_menu_button() .menu_button(menu_button) .send() .await?; println!("WebApp菜单按钮已成功设置"); Ok(()) }
注意事项
- WebApp必须使用HTTPS协议,Telegram不支持HTTP链接。
- 若要恢复默认菜单按钮,可传入
MenuButton::Default调用设置方法。 - 确保Bot Token拥有正常权限,常规Bot账号均可使用该功能。
内容的提问来源于stack exchange,提问作者Nick Nizovtsev
相关产品推荐
相关产品推荐

