You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Rust的Teloxide crate为Telegram Bot设置聊天菜单按钮

使用teloxide为Telegram Bot添加WebApp菜单按钮

核心实现步骤

要设置WebApp菜单按钮,只需按以下三步操作,直接结合代码示例理解更清晰:

  1. 导入必要类型
    先在代码顶部引入teloxide相关的结构体与枚举:

    use teloxide::{
        prelude::*,
        types::{MenuButton, WebAppInfo},
    };
    
  2. 定义WebApp信息
    用WebAppInfo结构体指定你的WebApp访问地址,必须是HTTPS链接:

    let web_app_info = WebAppInfo::new("https://your-webapp-url.com");
    
  3. 创建菜单按钮并调用设置方法

    • 构造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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:45:57