[Python Django]建立自己的Telegram機器人-採用Django整合

本篇是紀錄一下透過Django來做webhook整合Telegram API,主要也是因爲爬了一些文章,都沒有人提到如何透過Django進行整合,多是介紹Python或是Flask的方式.

由於沒什麼參考文章,之前整合過LineBot(好像偷懶了,沒有放上來,有時間再寫一篇),所以我就試想,同樣是通訊軟體、聊天機器人,應該有些做法雷同,沒想到測試下來真的可行,就紀錄分享一下.

1.行前知識

-已經具備了Python(3.8up)與Django(3.x)基礎知識

-本次採用pyTelegramBotAPI這個套件應用

-需先向Telegram的’爸爸’申請一個機器人,並且取得Token,之後要輸入用,這邊就不闡述,可以參考Telegram官網

-若想要本機測試,可以採用 ngrok這個酷東西,他可以產生一個https網址對應到你的機器,這樣就不用先上傳服務器或準備ssl憑證了.(不過這邊就不細說,可以參考ngrol官網)

2.本次做法採用webhook方式,接收Telegram來的資訊.

3.架構長得像這樣

Telegram—>webhook(我們的主機)—>接收

回傳—>webhook(我們的主機)—>Telegram

4.所以我們可以看得出來,webhook就是我們要實作的.

5.開始寫程式摟

-建立一個名為TG的Project

–再此Project下的settings.py修改

–再此Project下的url.py修改

-建立一個App叫做webhook

–在此App下view.py建立一個callback function

–在此App下urls.py建立剛寫的callback路徑

此時要先跟Telegram註冊您的webhook url,在網址列打上,以下資訊,並且替換相關訊息,URL=https://domain:port/webhook/callback

並且要看到以下訊息才算設定成功.

開始測試是否主機可以通,透過丟一個訊息給您的機器人看有無收到,並且在主機部分會印出

表示成功,或是直接連網址也可以,網址為https://domain:port/webhook/callback

–接著我們來建立一個回聲機器人,在pyTelegramBotAPI內建很多好用的Function或是handler,就可以直接拿來用,例如簡單的您打什麼給機器人,機器人就會您什麼.

您沒看錯,就這樣就好了,透過pyTelegramBotAPI的handler就可以處理,當是傳入為文字的時候啟動echo function,然後bot會send訊息回去.

6.成品如下,您可以發現只要打什麼就回什麼,但是貼圖就不行,但一些表情符號因為底層是文字呈現,所以也會回傳.

Telegram回聲機器人

Telegram回聲機器人

7.其實Telegram還有很多強大的功能,甚至可以判斷傳入的內容類型,這邊有機會再跟各位分享,至於可以產生什麼應用就有賴各位的巧思.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *