Telegram Bot學習筆記-4:命令列commands

Telegram bot學習筆記-4:命令列commands

commands 代替選單的快速功能表

在上一篇寫telegram bot keyboard裡,就有寫到commands了,就是在telegram上打 / 時,會出現的功能清單。

telegram keyboard的建立比較麻煩,如果說機器人的功能很少,或是不需要到第二層選單,用commands是比較快的。

本篇就來紀錄如何在telegram bot上制作命令列表。


關於commands

telegram bot commands,這邊翻作命令列,一般看一些程式語言教學,都會說開啟終端機或命令提示字元後,下command去安裝功能之類的,而telegram的command又是長這樣:

放個廣告賺點養主機的$$,謝謝

telegram bot commands
telegram bot commands

因此覺得翻作命令列會比較好理解。

在申請新的telegram bot,跟BotFather溝通時,就是在用commands功能了,只是一開始在用沒有解譯會不知道這就是機器人的commands。


建立telegram bot commands

建立機器人的commands,不用寫任何的code,但在判斷使用者按了哪個commands後執行不同的function就需要了。

首先,要先跟BotFather對話,輸入/mybot,然後點要建立commands的機器人帳號,再點選Edit Bot,就會看見選單中出現Edit Commands

BotFather的Edit Commands
BotFather的Edit Commands

點擊Edit Commands後,就會出現該送什麼訊息給BotFather,才會讓你的機器人有Commands:

OK. Send me a list of commands for your bot. Please use this format:

command1 – Description
command2 – Another description

比方說,我想要機器人的Commands,在輸入/後會出現的選單是以下:

/start 開啟keyboard
/test1 執行功能1
/test2 執行功能2

那只要貼以下訊息給BotFather就行:

start - 開啟keyboard
test1 - 執行功能1
test2 - 執行功能2

送出給BotFather後,就會收到更新成功的訊息:

telegram bot commands設定成功訊息
telegram bot commands設定成功訊息

接著打開剛設定的機器人視窗,就會看見輸入訊息欄的旁邊多了「/」的按鈕,按下去或是直接輸入/,就會看到剛設定的commands:

放個廣告賺點養主機的$$,謝謝

機器人多一個「/」的按鈕
機器人多一個「/」的按鈕
成功為機器人建立了commands
成功為機器人建立了commands

收到commands後

當使用者按下commands後,就會發送那個command的訊息:

收到command的訊息
收到command的訊息

機器人收到的訊息,json就會是這樣子:

機器人收到command訊息的json
機器人收到command訊息的json

所以我們只要寫一個判斷message.text是/start時,要執行某個function的code就行了,以下是用google apps script的範例:

怎麼使用google apps script當telegram bot的webhook,請參考這篇:

Telegram bot學習筆記-2:用google apps script接收/推播訊息


Telegram Bot學習筆記系列

  1. 用GCP + node.js接收/推播訊息
  2. 用google apps script接收/推播訊息
  3. 鍵盤keyboard
  4. 命令列commands
  5. 取得使用者大頭照

Summary
Telegram Bot學習筆記-4:命令列commands
Article Name
Telegram Bot學習筆記-4:命令列commands
Description
本篇大綱:commands 代替選單的快速功能表、關於commands、建立telegram bot commands、收到commands後。telegram keyboard的建立比較麻煩,如果說機器人的功能很少,或是不需要到第二層選單,用commands是比較快的。
Augustus
Let's Write
Let's Write
Publisher Logo

留言