我们在和BotFather对话的时候发现它的左下角有个菜单按钮,而且里面有很多命令,这个是怎么实现的了?接着往下看
跳转到url
比如我们创建了一个网页,然后想要点击左下角菜单栏的时候就直接跳转到我们的网页,很简单,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import { Bot, api } from "https://deno.land/x/grammy@v1.25.0/mod.ts";
const TOKEN = ''; const bot = new Bot(TOKEN);
bot.command("start", (ctx) => { ctx.reply("欢迎使用我的Telegram机器人!"); async function setWebAppMenuButton() { const response = await bot.api.setChatMenuButton({ menu_button: { type: "web_app", text: "Open WebApp", web_app: { url: "https://lengmo714.top" } } }); console.log("Menu button set response:", response); } setWebAppMenuButton(); }); bot.start();
|
运行上面代码,再打开自己的机器人界面,就会看到自己的菜单按钮已经变成了Open WebApp
,如下图。要是在手机上面看,会发现这个按钮的左边有一个窗口的标志,说明是没问题的。
设置菜单
我们像要和BotFather一样,在菜单中设置很多命令,可以给我们的机器人添加很多的功能。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import { Bot, api } from "https://deno.land/x/grammy@v1.25.0/mod.ts";
const TOKEN = ''; const bot = new Bot(TOKEN); bot.command("start", (ctx) => { ctx.reply("欢迎使用我的Telegram机器人!"); }); bot.api.setMyCommands([ { command: "one", description: "一" }, { command: "two", description: "二" }, { command: "three", description: "三" }, ]) .then(() => { console.log("命令设置成功"); }) .catch((err) => { console.error("设置命令时出错", err); });
bot.api.getMyCommands() .then((commands) => { console.log("当前命令:", commands); }) .catch((err) => { console.error("获取命令时出错", err); });
bot.start();
|
运行上面代码,再打开机器人,就可以看到左下角你设置的菜单啦~,如下图所示:
注意,无论上面哪种方法,都不会立马生效,可能是有缓存。