拿到update.id检查其是否更新,如有更新则取message.Text匹配已经定义好的路由(这是我定义的叫法,也就是我们约定的命令,事实上他的确和路由很像)
如果匹配成功,执行我们定义的方法,如果匹配失败则当做普通信息无视,或者返回对应信息
从上面过程可以看出命令是否是/开头其实已经不那么重要了,那么为什么官方要定义BotCommand类呢,理由(优点)如下
用以和普通消息区分
在聊天消息中命令会高亮显示
已经注册的命令在对话框中只需要输入/就会有提示列表
给机器人注册指令手动注册
和botFather对话,输入/mybot
选择要注册指令的机器人
选择Edit Bot选项
选择Edit Commands
输入你想定义的命令,格式为
command1 - 描述 command2 - Description注意:注册时命令开头没有斜杠,使用命令时需要带上斜杠,中间用 - 分割;每一次的命令编辑都会覆盖之前的命令而不是追加,所以必须一次发送全部命令(在对话框中按shift + enter换行)
通过setMyCommands方法注册
详见(telegram方法 setMyCommands)
查看已注册的指令详见(telegram方法 getMyCommands)
基本指令telegram建议我们的机器人都带上三条基本指令分别是
/start
/help
/settings
当设置了上面三个命令,用户首次打开与你的机器人的对话时,将看到Start按钮。机器人的个人资料页面上的菜单中将提供Help和Settings链接。
键盘telegram中键盘也是机器人的一大特色,开发者可以自定义自己的键盘,一个键盘相当于机器人的菜单可以理解为一个答复界面,可以更加方便的和机器人交互。
telegram中的键盘有四种ReplyKeyboardMarkup,InlineKeyboardMarkup,ReplyKeyboardRemove和ForceReply,这四个对象可参考前面的介绍
创建键盘只需要在sendMessage时指定reply_markup即可,详见sendMessage方法