Python3で基本的なテレグラムボットを構築する方法

Python3で基本的なテレグラムボットを構築する方法

Telegramユーザーの場合、ある時点でチャットボットと「会話」をしたことがあるはずです。 Telegramのボットは、その驚くべきカスタマイズ性により、さまざまな利点を提供します。タスクを自動化する場合でも、チャットグループのゲームを少し楽しむ場合でも同様です。





ボットの開発は困難な作業であると感じる人もいるかもしれませんが、実際にはそうではありません。適切な計画を立てれば、Telegramボットを1時間以内に稼働させることができます。プロンプトが表示されたときにインターネット猫のかわいい写真を​​出力する簡単なTelegramボットを作成する方法は次のとおりです。





入門

このチュートリアルでは、Python3を使用します。 python-telegram-botリクエスト ライブラリ、および TheCatAPI





Telegramのすべてのボットには、通信に役立つ一意のトークンがあります ボットAPI アプリのメッセージングインターフェースを使用するため。 Telegramの開発者の間で最も人気のある機能の1つであるBotAPIを使用すると、そのメッセージをインターフェイスとして使用できます。

ノートパソコンにズームをインストールする方法

トークンを取得するには、との会話を開始します @BotFather 名前が示すように、これは独自のボットを作成およびカスタマイズできる公式ボットです。指定されたリンクを使用してボットにアクセスするか、Telegramで「@botfather」を検索できます。



チャットに参加したら、次のように入力してボットを作成します / newbot 指図。ボットの名前とユーザー名を引き続き設定します(@pawsomebotという名前を付けることにしました)。これに続いて、ボットに固有のトークンを取得します。

すべての前提条件が整ったので、次はエキサイティングな部分に進みます。





ライブラリのインストール

Windowsを使用している場合は、コマンドプロンプトを開き、次のコマンドを入力します。

pip install python-telegram-bot
pip install requests

macOSまたはLinuxを使用している場合は、代わりにターミナルで次のコマンドを使用してください。さらに、Linuxでは、sudo権限を持つユーザーとしてログインしていることを確認してください。





pip3 install python-telegram-bot
pip3 install requests

プログラムを書く

コンピューターに新しいフォルダーを作成し、お気に入りのエディターで開きます。新しいファイルを作成し、main.pyという名前を付けます。このファイルには、ボットのソースコードが含まれています。

それでは、以前にインストールしたライブラリとその組み込み関数のいくつかをインポートしましょう。

from telegram.ext import Updater, CommandHandler
import requests
import re

これからのプログラムの流れは、TheCatAPIにアクセスし、ランダムな画像のURLを取得して、その画像をユーザーのチャットに送信することです。

画像のURLを取得する関数から始めましょう。これは、requestsモジュールを使用して実行できます。この関数では、TheCatAPIによって提供されるランダムファイルのJSONデータをロードし、後で使用するためにそのURLを抽出します。 JSONオブジェクトの形式を確認するには、次のURLにアクセスしてください。 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を取得します。これにより、メッセージのボットのターゲットの場所が定義され、ボットAPIの組み込みを介してURLが解析されます。 写真を送る() 関数。

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

Bot APIのさまざまな組み込み関数とその機能の詳細については、Telegramの 公式ドキュメント このチュートリアルの後。

最後に、ボットの全体的な動作を制御する関数を作成しましょう。この関数---従来はmain()---は、チュートリアルの最初に取得したトークンを使用してボットAPIにHTTPリクエストを送信し、ボットのユーザー操作がどのようになるかを定義します。私たちのように単純な場合、これは基本的にボットを起動して呼び出します 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, CommandHandler
import requests
import re
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
def 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()

あなた自身の電報ボット

おめでとう!プロンプトが表示されたら、かわいいインターネット猫のオープンソース画像を送信する独自​​のストレス解消ボットを作成しました。プログラムを実行して入力してみてください /ニャー ボットのチャットでアクティブにします。

これは機能が制限された単純なボットかもしれませんが、Telegramのボット開発エコシステムがいかに強力であるかを示しています。ボットの機能を強化するために、複雑なサブルーチンや機能をいくつでも追加できます---空が限界です。寄稿者が何年にもわたって作成した素晴らしいTelegramボットの詳細については、 便利なTelegramボットのリスト

また、GitHubなどのプラットフォームでTelegramボット用のさまざまなオープンソースライセンスプログラムを見つけることができます。ほとんどのオープンソースライセンスでは、プログラムのソースコードを使用、調査、ダウンロード、または変更できます。

Telegramボットをオンラインでホストする

ボットが稼働しているので、PCでmain.pyを閉じて、Telegramメッセンジャーアプリでボットを使用してみてください。それはまだ応答しますか /ニャー 指図?いいえ、そうではありません。

初心者の方は、インターネット上で実行されるボットを既に作成しているのに、PC上のmain.pyを起動して実行する必要がある理由について混乱する可能性があります。これは、プログラムがPCをローカルサーバーとして使用して、このプログラムで使用されるAPIにHTTPリクエストを送信するためです。

そのため、アプリを使用するたびにプログラムを実行する必要があることは、実現可能でも便利でもありません。この問題を解決するには、ボットのデバイスへの依存関係を削除する必要があります

そのための1つの方法は、Raspberry Piなどの低コストのプリント回路基板(PCB)を使用して、独自のWebサーバーをセットアップし、それを使用してプログラムを実行することです。 PCBのエネルギーフットプリントは大幅に低くなる傾向があるため、昼夜を問わずプログラムを維持するコストをかけずに、PCでプログラムを実行するのと同じ利点があります。

または、プログラムをクラウドにデプロイすることもできます。 Heroku、AWS、Google Cloud、Microsoft Azureなどのウェブアプリホスティングプラットフォームにアクセスして、ニーズに最適なサブスクリプションを選択してください。プログラムの規模や範囲を拡大するにつれて、無料の試用版またはサブスクリプションを選択してアップグレードすることをお勧めします。

共有 共有 つぶやき Eメール HerokuでPythonWebサイトを無料でホストする方法

小さなウェブサイトを無料でホストする必要がありますか? Herokuはまさにあなたが探しているものかもしれません。

次を読む
関連トピック
  • プログラミング
  • Python
  • 電報
  • チャットボット
  • ソーシャルメディアボット
著者について ヤシュシェラニ(10件の記事が公開されました)

Yashは、物を作り、すべての技術について書くのが大好きな、意欲的なコンピューターサイエンスの学生です。余暇には、Squashをプレイしたり、最新のMurakamiのコピーを読んだり、Skyrimでドラゴンを狩ったりするのが好きです。

YashChellaniのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください