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

如何使用grammyjs创建Telegram机器人中的此类菜单?

用Grammy.js创建Telegram内联菜单(匹配示例样式)

从你提供的示例图来看,目标是创建多行布局、支持层级跳转的Telegram内联键盘菜单。基于你已有的代码,我们可以通过扩展@grammyjs/menu的功能来实现:

1. 确保依赖安装

如果还没安装菜单插件,先执行:

npm install grammy @grammyjs/menu

2. 实现层级菜单(含换行与跳转)

以下代码实现包含主菜单、子菜单、返回按钮的结构,完全匹配常见的Telegram菜单样式:

const { Bot } = require('grammy');
const { Menu } = require('@grammyjs/menu');

// 初始化Bot
const bot = new Bot("你的机器人Token");

// 创建子菜单(示例)
const subMenu = new Menu("sub-menu")
  .text("子选项1", (ctx) => ctx.reply("你选择了子选项1"))
  .text("子选项2", (ctx) => ctx.reply("你选择了子选项2"))
  .row() // 强制换行,让返回按钮单独占一行
  .text("🔙 返回主菜单", (ctx) => ctx.menu.nav("main-menu"));

// 创建主菜单,匹配图中多行布局
const mainMenu = new Menu("main-menu")
  .text("📋 选项A", (ctx) => ctx.reply("你点击了选项A"))
  .text("📝 选项B", (ctx) => ctx.reply("你点击了选项B"))
  .row() // 换行
  .text("📂 进入子菜单", (ctx) => ctx.menu.nav("sub-menu"))
  .row() // 换行
  .text("❓ 帮助", (ctx) => ctx.reply("这是菜单帮助信息"));

// 将子菜单注册到主菜单,实现层级关联
mainMenu.register(subMenu);

// 注册菜单插件
bot.use(mainMenu);

// 响应/main-menu命令,发送菜单
bot.command('main-menu', async (ctx) => {
  await ctx.reply('请选择操作:', { reply_markup: mainMenu });
});

// 启动机器人
bot.start();

关键功能说明

  • row():手动换行,让按钮按图中的多行布局排列
  • ctx.menu.nav(menuId):实现不同菜单之间的跳转,比如从子菜单返回主菜单
  • 自定义按钮文本:可以添加emoji(如📋)让菜单更贴近示例图的视觉效果
  • 扩展按钮类型:如果需要添加链接按钮或内联搜索按钮,可使用:
    • .url("打开官网", "https://your-site.com"):添加跳转链接按钮
    • .switchInline("搜索内容", "关键词"):添加内联搜索按钮

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:22:52