如何用python3構建基本電報機器人

使用botapi和python3在Telegram中構建bot的初學者指南...

如果你是一個電報使用者,你一定會在某個時候與聊天機器人進行“對話”。Telegram的機器人有著驚人的可定製性,它提供了各種各樣的優勢——無論是自動完成任務,還是在聊天室裡玩遊戲。

telegram bots useful

雖然有些人可能會發現開發一個機器人是一項艱鉅的任務,但事實並非如此。有了正確的計劃,你就可以在不到一個小時內啟動並執行一個Telegram機器人!下面是如何建立一個簡單的電報機器人,輸出可愛的圖片時,提示網際網路貓。

入門

在本教程中,我們將使用python3、Python電報bot和請求庫以及catapi。

Telegram中的每個bot都有一個唯一的令牌,可以幫助它與bot API通訊,以便使用應用程式的訊息傳遞介面。botapi是Telegram在開發人員中最流行的特性之一,它允許您將其訊息用作介面。

要獲得令牌,請與@BotFather開始對話,顧名思義,它是一個官方的bot,允許您建立和自定義自己的bot。您可以使用給定的連結訪問bot,或者在Telegram上搜索'@botfather'。

在聊天室中,輸入/newbot命令建立bot。繼續設定您的機器人的名稱和使用者名稱(我們決定將我們的機器人命名為@pawsomebot)。在此之後,您將獲得一個唯一的令牌到您的機器人。

現在我們已經具備了所有的先決條件,是時候進入激動人心的部分了!

安裝庫

如果使用的是Windows,請開啟命令提示符並鍵入以下命令:

pip install python-telegram-botpip install requests

如果您使用的是macOS或Linux,請在終端上使用以下命令。此外,在Linux中,請確保以具有sudo許可權的使用者身份登入。

pip3 install python-telegram-botpip3 install requests

編寫程式

在您的計算機上建立一個新資料夾並在您喜愛的編輯器中開啟它。建立一個新檔案並命名它主.py. 此檔案將包含bot的原始碼。

現在,讓我們匯入前面安裝的庫及其一些內建函式。

from telegram.ext import Updater, CommandHandlerimport requestsimport re

程式從這裡開始的流程是訪問catapi,獲取隨機影象的URL,並將該影象傳送到使用者的聊天室。

讓我們從一個獲取影象URL的函式開始,這個函式可以使用requests模組完成。在這個函式中,我們載入catapi提供的一個隨機檔案的JSON資料,並提取其URL供以後使用。要檢視JSON物件的格式,請轉到https://api.thecatapi.com/v1/images/search在瀏覽器上。你會注意到這樣的情況:

[{"breeds":[],"id":"a8c","url":"url.jpg","width":800,"height":533}]

請注意,JSON物件是一個包含字典的陣列。此詞典包含鍵為“URL”的URL。要提取URL,我們需要引用陣列的第一個元素,然後引用相關的鍵。

def getUrl(): #obtain a json object with image details #extract image url from the json object contents = requests.get('https://api.thecatapi.com/v1/images/search') url = contents[0]['url'] return url

接下來,我們需要將此影象傳送到使用者的聊天室。為此,我們需要一個影象URL以及使用者聊天的唯一ID。讓我們建立一個包裝器函式來實現這一點。首先,我們呼叫getUrl()。函式獲取隨機影象的URL——每當程式遍歷函式時,此URL都會更改。

然後獲取收件人使用者的聊天ID,該ID定義bot的訊息目標位置,並透過bot API的內建send_photo()函式解析URL。

def sendImage(bot, update): url = getUrl() chat_id = update.message.chat_id bot.send_photo(chat_id=chat_id, image=url)

要了解更多關於botapi的各種內建函式以及它們是如何工作的,請在本教程之後檢視Telegram的官方文件。

最後,讓我們建立一個函式來控制bot的整體工作。這個函式(通常稱為main())是我們使用在教程開始時獲得的令牌向Bot API傳送HTTP請求,然後定義Bot的使用者互動。在像我們這樣簡單的情況下,這實際上意味著啟動bot並在使用者提示時呼叫sendImage()函式。

def main(): updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c") #call sendImage() when the user types a command in the telegram chat updater.dispatcher.add_handler(CommandHandler('meow',sendImage)) #start the bot updater.start_polling() updater.idle()if __name__ == '__main__': main()

你的最終課程應該是這樣的:

from telegram.ext import Updater, CommandHandlerimport requestsimport redef getUrl(): #obtain a json object with image details #extract image url from the json object contents = requests.get('https://api.thecatapi.com/v1/images/search') url = contents[0]['url'] return urldef sendImage(bot, update): url = getUrl() chat_id = update.message.chat_id bot.send_photo(chat_id=chat_id, image=url)def main(): updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c") #call sendImage() when the user types a command in the telegram chat updater.dispatcher.add_handler(CommandHandler('meow',sendImage)) #start the bot updater.start_polling() updater.idle()if __name__ == '__main__': main()

你自己的電報機器人

祝賀 你!你已經建立了你自己的減壓機器人,在提示下發送最可愛的網貓的開源圖片。試著執行你的程式,在你的機器人聊天中鍵入/meow來啟用它。

雖然這可能是一個功能有限的簡單機器人,但它顯示了Telegram的機器人開發生態系統是多麼強大。您可以新增任意數量的複雜子例程和功能,以增強您的機器人的功能---天空的限制。要了解更多關於這些年來貢獻者**的很棒的電報機器人,請檢視我們有用的電報機器人列表。

您還可以在GitHub等平臺上找到各種開放原始碼許可程式,用於電報機器人。大多數開源許可證允許您使用、研究、下載或修改程式的原始碼。

線上託管你的電報機器人

現在你已經啟動並運行了你的機器人,試著關閉它主.py在你的電腦上,使用你的電報信使應用程式的機器人。它仍然響應/meow命令嗎?不,沒有。

作為一個初學者,你可能不知道為什麼主.py當您已經建立了一個執行在internet上的bot時,您的PC需要啟動並執行。原因是程式將您的PC用作本地伺服器,向程式中使用的API傳送HTTP請求。

因此,每次想使用應用程式時都必須執行程式既不可行也不方便。為了解決這個問題,我們需要刪除bot對您的裝置的依賴關係

一種方法是使用低成本的印刷電路板(PCB),比如Raspberry-Pi,來建立自己的web伺服器並用它來執行程式。它與在你的電腦上執行程式有著相同的好處,而無需花費整天整夜開機的費用,因為PCB的能耗往往要低得多。

或者,您也可以將程式部署到雲上。前往Heroku、AWS、Google Cloud或Microsoft Azure等web應用託管平臺,選擇最適合您需求的訂閱。我們建議您選擇一個****版或訂閱,並在您擴大計劃的規模或範圍時進行升級。

  • 發表於 2021-03-28 15:23
  • 閱讀 ( 56 )
  • 分類:程式設計

你可能感興趣的文章

蟒蛇2(python 2)和三(3)的區別

...於各種應用程式。Python有兩個主要版本,分別是python2和python3。本文將討論這兩個版本之間的差異。Python2和3之間的關鍵區別在於,Python2在未來將獲得最低限度的支援,而Python3將在未來繼續開發更多。 目錄 1. 概述和主要區別 2. ...

  • 發佈於 2020-10-20 01:55
  • 閲讀 ( 51 )

如何用python程式設計和控制arduino

... 我們將使用Python3.4來控制Arduino,因為您將要安裝的模組將此指定為最新的相容版本。在此之前的任何版本都應該可以正常工作,並且已報告更高版本可以工作。您可以從Python軟體基...

  • 發佈於 2021-03-11 16:20
  • 閲讀 ( 74 )

whatsapp與telegram:哪一個是更好的訊息應用程式?

... 為什麼用電報? ...

  • 發佈於 2021-03-14 04:41
  • 閲讀 ( 53 )

在raspberry pi上安裝軟體的5種方法

... sudo apt-get install python3-pip ...

  • 發佈於 2021-03-15 00:30
  • 閲讀 ( 49 )

如何製作自己的電報貼紙

...紙是搞笑的模因般的創作,扔在一起的報價和照片。你的基本設計技能就足夠了。 ...

  • 發佈於 2021-03-17 21:17
  • 閲讀 ( 56 )

最佳電報頻道及其使用

... 基本上,群組允許一些人在一起交談,而頻道允許少數人向許多訂戶廣播訊息。 ...

  • 發佈於 2021-03-17 23:10
  • 閲讀 ( 42 )

開始使用tensorflow和raspberry pi進行影象識別

... sudo apt-get updatepython --versionpython3 --version ...

  • 發佈於 2021-03-18 14:49
  • 閲讀 ( 54 )

telegram增加了一個慢模式來對付垃圾郵件

...於劣勢,希望與大公司競爭,因此它一直在引入新功能。電報5.10也不例外。這些新功能是在這些有用的電報機器人之上的,它們可以讓你擺脫WhatsApp。 ...

  • 發佈於 2021-03-19 23:10
  • 閲讀 ( 46 )

如何建立一個照片推特機器人與樹莓皮和節點.js

...器人會教你一些有用的程式設計技巧。我們之前研究過如何用Python構建一個基本的Twitter bot(也在Raspberry Pi上),但這次我們採用了不同的方法。 ...

  • 發佈於 2021-03-23 18:07
  • 閲讀 ( 50 )

20個有用的電報機器人讓你擺脫whatsapp

...機器人。它將讓你的孩子透過一系列的問題來練習他們的基本數學技能,這些問題是基於四種基本技能的加、減、乘和除。 ...

  • 發佈於 2021-03-25 15:54
  • 閲讀 ( 58 )