Telegram Bot API

Meow
·
·
IPFS
·
大家好,這篇文章簡單的紀錄一下我學習 Telegram Bot 時閱讀 Telegram Bot API 的心得這個 API 可以讓大機去建立一個自己的Telegram Bot。文章的大標會與文件內的標題一致,方便之後去文件中查訊對應的資訊。接下來就開始啦~


Authorizing your bot

這個步驟要做的事情是在Telegram中建造一個屬於自己的Bot,因此需要先註冊一個Telegram的帳號,加 BotFather 為好友

之後再聊天對話筐輸入 /newbot ,建立一個新的 bot ,成功後 BotFather 會給你一個 token

這個token是telegram給的授權,之後操作我們自己的bot都會需要這個token,詳細的步驟可以看這裡

                                                            . . . . . .   . . .

Making requests

Telegram Bot API 是 HTTP-based 的,所有的 API 都需要透過 Https 協定傳送 , 格式如下:

https://api.telegram.org/bot<token>/METHOD_NAME

token 處要放自己申請到的token,METHOD_NAME則放API提供的方法,吝外注意tpken前的bot要記得不要誤刪掉惹,那時爬文很多人 API 打不過都是因為誤刪了這個部分。


而 Telegram Bot API 的一些特性如下:

  • 支援 Get 與 Pos
  • 所有的方法都是case-insensitive(不區分大小寫的)
  • 使用 UTF-8 編碼

                                                            . . .  . . .   . . .

Getting updates

Update 是一個 Telegram Bot API 中的 Object,包含有使用者傳訊息給 bot,或是有使用者傳加入 bot好友,都算是一個Update

每個Update Object 會有兩個物件,一定會有一個update_id的property,以及一個optional property

這個 optional property 有很多種 ,下面列出其中三種,有興趣的話可以去翻看看文件。

message        Message       新的訊息,包含文字、影像、貼圖等等。
channel_post   Message       如果 bot 有加入 channel 的話,拿到       
                             channel 中的信息
inline_query   InlineQuery   如果有使用者使用 @yourbotname 去呼叫 
                             bot的話,拿到使用者所傳的訊息


在 Telegram Bot API 中要如何接到 Bot 的 Update 通知呢,Telegram 提供兩種方法:

1. getUpdates:

設定一個url告訴telegram當收到update時把訊息傳到我們設定的url去,使用 long polling 去更新拿新的資料,還有提供刪除webhook以及查看webhook的資訊的方法

新的updates會點在的存在telegram的server裡面,但24小時內便會被刪除

如果有使用 outgoing webhook 的話 getUpdates 不會起作用

呼叫 getUpdates() 會回傳一個array的update物件,getUpdates Method 的文件如下:

parameter
----------------------------------------------------------------
url              :  HTTPS url
certificate      :  your public key certificate,self-signed guide
max_connections  :  同時可以連接的connections數量,1~100,預設40
allowed_updates  :  一個json去設定希望拿到update的property,預設
                    Null,拿全部的


2. setWebhook:

設定一個url告訴telegram當收到update時把訊息傳到我們設定的url去

如果想要確定收到的訊息是來自telegram的話,可以將我們取得的token設定在網路裡, 像是 https://www.example.com/<token>

支援的port: 443, 80, 88, 8443

還有提供刪除webhook以及查看webhook的資訊的方法,可以去文件裡看

setWebhook Method 的文件如下:

parameter
---------------------------------------------------------------- 
url              :  HTTPS url
certificate      :  your public key certificate,self-signed guide
max_connections  :  同時可以連接的connections數量,1~100,預設40
allowed_updates  :  一個json去設定希望拿到update的property,預設
                    Null,拿全部的

                                                            . . .  . . .   . . .

Available types

telegram api 中的type都是json object,像是User object代表有使用者的資訊first_name、last_name等等,Message object 裡面則有message_id、from(來自哪個user等等,一個User的object),可以在文件中看到每個type的定義

                                                            . . .  . . .   . . .

Available method

Telegram 提供的 API有以下的特性:

所有的API都是case-insensitive(不區分大小寫)

支持Get或是Post的方法

成功時會回傳一個Json object

Telegram API 提供很多method,像是傳訊息的方法sendMessage、sendPhoto、sendAud-io、sendVideo,也包含操控bot做一些動作,像是leaveChat、kickChatMember,對bot管控的chat做一些設定setChatPhoto、setChatTitle,也可以取得資訊,getMe、getChat。

                                                            . . .  . . .   . . .

Stickers

管理bot貼圖的功能

                                                            . . .  . . .   . . .

Inline Mode

Inline mode 是指可以讓使用者在使用者自己任意的頻道,使用@botname去呼叫bot,要起用者個功能的話可以傳送 /setinline 給@BotFather。Intergram 也有提供回覆 Inline Query的API。

                                                            . . .  . . .   . . .

Payments

bot 可以接收使用者的付款,使用者會需要Telegram v 4.0以上的版本才可以使用,本bot本身需要Bot API v.3.0 以上才可以使用這個功能,可以加BotNew好友去看目前使用的版本。

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!