此為舊文章,可參考這裡的新內容
Telegram 簡介
Telegram 是一款集成眾多優點 (Ex. 自由, 快速, 輕量 etc.) 的通訊軟體
不管是親友間閒聊,或是社群間討論,用 Telegram 都較 LINE 適合
如何產生 bot
想要一隻 bot 需要先有一個 Telegram 帳號 (電話簡訊驗證)
私訊 @BotFather 輸入 /newbot
他將會請您依序輸入 bot 顯示的名稱、 bot 的 username (必須為 bot 結尾) ,且長度需介於 6-32 字元
完成後, BotFather 會顯示您的 Token (格式: 12345:AAJqs_w-4) ,您可利用此 Token 透過 HTTPS 發送請求
取得訊息
Telegram bot API 的請求 (大部分) 都是 https://api.telegram.org/botTOKEN/METHOD
的格式
目前 Telegram 支援兩種取得更新的方法,分別為
-
setWebhook 設定 webhook 在有人傳送訊息給您的 bot (或加入、離開群組等) 時, Telegram 將會使用 JSON 格式 POST 到您的伺服器,需使用下列指令設定
curl https://api.telegram.org/bot12345:AAJqs_w4/setWebhook?url=sean.taipei/telegram/hook.php
-
getUpdates 分為兩種
傳送訊息
Telegram 是藉由下列請求傳送訊息給使用者 GET https://api.telegram.org/bot12345:AAJqs_w-4/sendMessage?chat_id=-1001033293696&text=Hello
- chat_id
- 群組 (Group) 為負數 (例如
-79897268
) - 超級群組 (Supergroup) 為負數 (例如
-1001033293696
) 或是@頻道名
- 私訊 (Private) 為正數 (例如
109780439
) - 頻道 (Channel) 為
@頻道名
(例如@Telegram
)
- 群組 (Group) 為負數 (例如
- parse_mode 此為選擇性參數,未設定則為純文字 皆不支援複合使用 (像是
<b><i>重要</i></b>
)- Markdown 可以用
[連結](url)
,*粗體*
,_斜體_
,`等寬字`
,```程式碼 (等寬區塊)```
在有使用者輸入資料得環境不建議使用,如果解析錯誤 Telegram Server 會出現錯誤,無法發送訊息 - HTML 同一般 HTML 用法,支援
b
,strong
,i
,em
,a
,code
,pre
非標籤的<
,>
,&
,"
需要 HTML entity 後使用
- Markdown 可以用
- text 傳送訊息內容
Inline bot
Telegram 有一大特色是可以在私訊、群組,甚至是頻道使用 @botname query_string
來發送 inline query 給 bot
像是輸入 “@bold Hello” 之後會出現選項,這就是 Telegram 送 inline_query
(不同於一般訊息的 message
欄位) 然後 bot 透過 answerInlineQuery
提供選項 (至多 50 筆) ,由於較為複雜,請參見官方文件
HTML5 Game
Telegram 在 2016 十月加入了此功能支援,利用 in app browser 開啟遊戲網頁
Example: Foxmosa 推星星
相關連結
官方 API 文件
Telegram 傳奇
Android 版 API 發送器 可用來體驗 Methods 用法
範例 (PHP, 作者自用)
Telegram 機器人應用交流 測試、討論 Bot 相關問題
Telegram 推廣特區
Telegram Geeks
Bot News
Bots Channel
@RawDataBot 可以藉此簡單查看 bot API 收到的訊息長什麼樣子
Telegram Store Bot (Bots list & rate)
Bot Father
Bot Support