如何创建Telegram机器人的自定义键盘?

郯凝雪郯凝雪06月25日1702

最近在做telegram机器人,想要给paper.flyme网站增加自定义键盘,想让用户体验更好。但是具体怎么设置啊,例如设置按钮,绑定命令等等,有没有大佬给个简单教程或者代码。在线等,急。

3 个回答

委鸿煊
委鸿煊回答于 06 月 26 日
最佳答案

1. 构建自定义键盘的关键是使用Telegram Bot API中的ReplyKeyboardMarkup对象

2. 在代码中组装好按钮组,比如JSON格式 {"keyboard":[[{"text":"功能1"},{"text":"功能2"}]]}

3. 消息中携带该参数,resize_keyboard为true,否则键盘会很丑。

4. 如果要绑命令就写按钮text,比如/textcommand,然后监听这个text

5. 使用nodejs可以直接使用telegraf.js封装好的方法一行代码生成带按钮的消息

6. 测试时需要重启机器人进程,不然会缓存旧配置

7. 将常用功能放置在第一行,符合用户操作习惯。

8. 按钮数量不宜过多,最好每行不超过3个

9. 实现复杂交互可以使用InlineKeyboard,它是浮层式的不会占据输入框位置

10. 也可以使用Postman测试API,方便调试参数组合

裴小琴
裴小琴回答于 06 月 27 日

Telegram的自定义按键设置非常简单,一般有InlineKeyboardMarkup与ReplyKeyboardMarkup两种。

1. 先确定你使用的是什么类型

如果需要带链接/回调的按钮(如跳转paper.flyme网页),使用InlineKeyboardMarkup

如果做底部可收起的普通按钮,用ReplyKeyboardMarkup

2. 一个简单的例子

Python使用python-telegram-bot。

从telegram导入内联按钮和内联按钮标记。

keyboard = [[InlineKeyboardButton("访问网站", url="https://paper.flyme")]]

reply_markup = InlineKeyboardMarkup(keyboard)

context.bot.send_message(chat_id=update.effective_chat.id, text="点击访问", reply_markup=reply_markup)

_

3. 按钮

代码结构应该保证每个按钮都有明确指向功能,不要太多让用户难以取舍。

折忻畅
折忻畅回答于 06 月 28 日

1. 调用Telegram Bot API的replyKeyboardMarkup接口

2. 按钮参数中text字段设置显示文案,callback_data字段绑定命令

3. 举个栗子: {"keyboard":[[{"text":"Paper.Flyme","callback_data":"/flyme"}]]}

4. 注意按钮排列是二维数组格式,可以多行排布

5. 最后将生成的JSON交给sendMessage接口

建议用Python的python-telegram-bot库,自带InlineKeyboardMarkup类封装了这个功能。实际编写代码时需要保证按钮回调能够触发业务逻辑。

您的答案