如何创建Telegram机器人的自定义键盘?
最近在做telegram机器人,想要给paper.flyme网站增加自定义键盘,想让用户体验更好。但是具体怎么设置啊,例如设置按钮,绑定命令等等,有没有大佬给个简单教程或者代码。在线等,急。
3 个回答
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,方便调试参数组合
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. 按钮
代码结构应该保证每个按钮都有明确指向功能,不要太多让用户难以取舍。
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类封装了这个功能。实际编写代码时需要保证按钮回调能够触发业务逻辑。