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

如何使用telegraf为Telegram Bot添加Menu菜单按钮?

如何使用telegraf为Telegram Bot添加Menu菜单按钮

你要实现的输入框旁固定Menu按钮样式参考如下:
Menu按钮参考样式

以下是基于Telegraf v4版本的实现方法,无需额外安装第三方插件,直接调用Telegram原生接口即可完成配置:

基础准备

首先初始化Telegraf实例:

const { Telegraf } = require('telegraf')
// 替换为你从@BotFather获取的Bot Token
const bot = new Telegraf('YOUR_BOT_TOKEN')

常用菜单配置

1. 全局默认菜单(所有用户可见)

直接调用setChatMenuButton方法,不传chat_id参数时配置对所有用户生效:

  • 配置点击打开Web App的菜单(和参考图效果一致)
bot.telegram.setChatMenuButton({
  menuButton: {
    type: 'web_app',
    text: 'Menu', // 按钮显示的文字,可自定义
    web_app: {
      url: 'https://your-domain.com' // 必须为HTTPS协议地址,且提前在@BotFather处完成域名绑定
    }
  }
})
  • 配置点击展开Bot指令列表的菜单
bot.telegram.setChatMenuButton({
  menuButton: {
    type: 'commands'
  }
})
  • 配置点击跳转普通网页的菜单
bot.telegram.setChatMenuButton({
  menuButton: {
    type: 'default',
    text: '访问官网',
    url: 'https://your-official-site.com'
  }
})

2. 给指定用户/群组单独配置菜单

传入chat_id参数即可为特定会话单独设置菜单,优先级高于全局配置:

// 替换为目标用户/群组的实际ID
const targetChatId = 123456789
bot.telegram.setChatMenuButton({
  chat_id: targetChatId,
  menuButton: {
    type: 'web_app',
    text: '专属功能',
    web_app: { url: 'https://your-domain.com/exclusive' }
  }
})

3. 移除菜单按钮

将菜单类型设为默认值即可移除已配置的按钮:

// 移除全局菜单
bot.telegram.setChatMenuButton({
  menuButton: { type: 'default' }
})

// 移除指定用户的专属菜单(会自动回退到全局菜单配置)
bot.telegram.setChatMenuButton({
  chat_id: targetChatId,
  menuButton: { type: 'default' }
})

注意事项

  • 配置修改后不会立刻在客户端生效,受Telegram缓存机制影响,一般等待5-10分钟或重启客户端即可看到更新
  • Web App类型的菜单需要提前找@BotFather,发送/setmenubutton指令后按提示绑定对应域名,否则会触发权限报错
  • 菜单按钮的文字长度上限为30字符,过长会被自动截断

内容的提问来源于stack exchange,提问作者Miloud Mokkedem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:51:20