微信公衆號:上古的碑
我會在微信公衆號上分享各種技術乾貨,歡迎來玩!
前言
再閱讀之前,要求掌握一定的編程基礎,瞭解怎樣進行HTTP的請求和懷抱有一顆熱愛學習的心。
API
-
什麼是API
API全稱 Application Programming Interface,翻譯過來就是 應用程序編程接口。簡單點說,它就是一些事先定義好的東西。
-
API的用途
讓開發者無須訪問源碼又可以訪問這些預定好的東西,同時也能方便開發者進行開發。API的使用是否收費取決於放出這些API的組織。
-
Telegram Bot API 現狀
完全免費且官方進行維護。經過幾個版本的迭代更新,最新版本的Telegram 的 Bot API已經更新到了
4.6
版本,更新的日期爲January 23, 2020
。
控制Bot
一. 發送控制請求
在創建Bot的時候,BotFather
同時爲你的Bot設立了一個token
,這個token
用於控制Bot,且可隨時更換。想要獲得token
,在BotFather發送命令/token
,然後選擇Bot就可以查詢到Bot的token
。
對Bot的所有控制請求都必須通過HTTPS進行,同時還要用官方給定的形式進行請求:https://api.telegram.org/bot<token>/METHOD_NAME
把<token>
換成Bot的token
,同時METHOD_NAME
換成官方API文檔裏的方法,就可以完成各種各樣的控制請求。
例子:https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe
(爲什麼用getMe方法呢?大概它是編程語言裏的Hello world!吧)
Bot支持GET 和 POST 的方式進行請求,還支持以下四種方式傳遞參數:
- URL query string (參數直接寫在請求的URL裏)
- application/x-www-form-urlencoded
- application/json (除了上傳文件)
- multipart/form-data (用於上傳文件)
對了,所有的METHOD_NAME
大小寫都可以,同時要保證所有的請求都是使用UTF-8
。
二. Bot的迴應
發送的所有控制請求,Bot的迴應都是JSON類型。
例子:使用getMe方法請求後迴應的內容:
{
"ok": true,# 所有的請求都有這個,true表示請求成功,false反之
"result": {
"id": ,# 整數,Bot的id
"is_bot": ,# 布爾值,True表明這是一個機器人,False反之
"first_name": "",# 字符串,Bot的稱呼
"username": "",# 字符串,Bot的用戶名
"can_join_groups": ,# 布爾值,True可以加入羣聊,False反之
"can_read_all_group_messages": ,# 布爾值,True爲可以閱讀所有的羣消息,False反之
"supports_inline_queries": # 是否支持Inline
}
}
所有的返回類型都是JSON,這大大方便了開發。
開發自己的Bot
如果你有能力,可以使用自己熟悉的編程語言來從零開發自己的Bot並在GitHub上開源它
我們現在瞭解到控制Bot可以直接通過一條URL就可以完成。但是,簡單的一兩個控制可以很快就完成。如果有許多用戶使用你的Bot,這種通過URL方式的控制就會變得非常的艱鉅且不友好。同時,通過URL方式控制Bot做不到自動化,效率自然不高。
發展至今的Telegram Bot已經有許多的大佬開發了自己的Telegram Bot並在GitHub上開源了Bot的源代碼。官方里收錄的Bot Code使用的編程語言有Node.js,PHP,Python,Java,Ruby, Swift,Go,Rust, C++,Dart,C#,Scala,Perl,Lua,Haskell,OCaml
。
你可以在Examples的頁面找到適合自己Bot代碼進行學習並開發你的Telegram Bot。可能在GitHub的主頁對代碼的介紹比較少,但是下載了代碼後直接閱讀代碼可以快速的學習如何通過這些代碼控制Bot。閱讀源代碼是最快掌握如何使用和提高自己水平的方法。
END
關注我的微信公衆號:上古的碑
努力分享技術!