テレボットライブラリパート1を使用してPythonでテレグラムボットを作成する

注意、 記事の第2部が公開されました 。読むことをお勧めします





叙情的な余談



ボットは今日、ビジネスとエンターテイメントの両方のための多機能ツールです。 個人的には、未来は彼らにあると信じています。 もちろん、この記事を読んだ後は、大規模なプロジェクトを作成することはできませんが、興味を持って開始するのは非常に簡単です。



インストールとセットアップ



はじめに、Python自体をダウンロードしましょう。 これは公式ウェブサイトで行えます。 インストール中にPATHに追加することを忘れないでください! pythonをインストールしたら、優れたコードエディターが必要です。 JetBrainsは無料のPyCharmで救助に来ます。 私たちは近い、それはテレボットライブラリをダウンロードするままです。 これを行うには、コマンドラインに移動して次のように記述します。



pip install pytelegrambotapi
      
      





すべてがうまくいけば、続行できます!



VPN



ロシアでの電報ブロックについては誰もが知っていると思いますが、唯一の解決策はいつものようにvpnです。 個人的には、 Windscribeをお勧めします 。 彼らはあなたに2 GBを与えます。 トラフィックは完全に無料です!



ボットの父



テレグラムの検索では、ボットファーハーを見つけ、/ newbotコマンドを使用してボットを作成します。 次に、名前とユーザー名を入力します。 ユーザー名はボットで終わる必要があることに注意してください!



画像



ご覧のとおり、ボットを制御できる特別なAPIトークンが与えられました(私の場合、 776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM )。 トークンを覚えることはできますが、書き留めておくことをお勧めします。



コード



誰もが待っている瞬間が来ました。 PyCharmを開き、新しいプロジェクトを作成します。



画像



ここでは、すべてのものを私のものにすることをお勧めします(名前はもちろん変更できます)。 プロジェクトを作成したら、コードを格納するファイルを作成しましょう。 プロジェクトのあるフォルダーを右クリックし、「新規」→「Pythonファイル」を選択します。 さあ、コードを書き始めましょう。 次を使用してテレボットライブラリをインポートします。



 import telebot
      
      





次に、ボット変数を作成する必要があります。 実際、変数名は何でも構いませんが、私はボットを書くことに慣れています。



 bot = telebot.TeleBot(' ')
      
      





ボットの .message_handler()デコレータを作成します。このデコレータを使用して、ボットは/ startコマンドに応答します。 これを行うには、かっこでコマンド= ['start']を記述します。 その結果、これを取得する必要があります。



 @bot.message_handler(commands=['start'])
      
      





ボットを起動しようとすると(RMB->実行)、何も機能しません。 まず、コードの最後に、bot.polling()を記述する必要があります。 これは、ボットがすぐにオフにならずに機能し、サーバーに新しいメッセージがあるかどうかを確認するために必要です。 次に、ボットはメッセージをチェックしても、応答できません。 それを修正する時が来ました! デコレーターの後に、start_message関数を作成します。これは、messageパラメーターを受け入れます(関数の名前は何でもかまいません)。 次に、ボット自体からのメッセージ送信を実装しましょう。 この関数では、bot.send_message(message.chat.id、「こんにちは、あなたが書いてくれました/開始」)を記述します。 あなたが得るべきものを参照してください:



 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') bot.polling()
      
      





確認しましょう...



画像



すばらしい、ボットは機能します! コマンドだけでなくメッセージにも応答するには、新しいデコレーターbot .message_handler()を作成し、括弧内にcontent_types = ['text']を記述します。 一般に、場所、写真、音声、ステッカーなど、多くの種類のコンテンツがあります。 しかし、私たちはテキストに応答する必要がありますよね? したがって、メッセージパラメーターを受け取るsend_text関数を作成します。 関数では、条件を書きます:



 @bot.message_handler(content_types=['text']) def send_text(message): if message.text == '': bot.send_message(message.chat.id, ',  ') elif message.text == '': bot.send_message(message.chat.id, ', ')
      
      





メッセージテキストが「Hello」の場合、ボットは「Hello、my creator」と応答し、メッセージテキストが「Bye」の場合、ボットは「Goodbye、creator」と応答します。 ここではすべてが明確だと思います。 しかし、おそらく疑問に思われます。ユーザーが「こんにちは」または「こんにちは」と書いた場合、この状況で何をすべきでしょうか。 すべてが非常に簡単です! 条件では、message.textの後に関数.lower()を記述し、テキスト内のすべての大文字を小文字に置き換えます。 現在、ボットは「hello」だけでなく、「PrivT」、さらには「PRIVET」にも応答します。



画像



ここにあなたが得るものがあります:



 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') bot.polling()
      
      





さて、私たちはテキストを理解しましたが、たとえばステッカーを送る方法は? すべてがシンプルです! 各ステッカーには独自のIDがあるため、IDを知っていれば送信できます。 ステッカーのIDを取得するには2つの方法があります。 最初の(単純な)-特別なボット「ステッカーIDとは?」



画像



2つ目の方法は、簡単な方法を探していない人向けです。 content_types = ['sticker']と書く括弧内のみに、新しいデコレータボット .message_handler()を作成します。 その後、すべてが通常通りです。 メッセージパラメーターを受け取る関数を作成しますが、ここではprint(メッセージ)を記述します。 ボットを起動します。







ステッカーを送信するとすぐに、コンソールに情報が表示され、最後にステッカーID(file_id)が表示されます。 ユーザーがボットに「I love you」を送信すると、ボットがステッカーで応答することを確認しましょう。 新しいデコレータを作成する必要はありません。その前の条件を追加するだけです。 しかし、bot.send_message()の代わりにbot.send_sticker()を書き、テキストの代わりにステッカーのidを書きます。



画像



おめでとうございます、すべてうまくいきました! 音声、写真、および位置情報を送信する方法を考えています。あなたはそれを自分で理解するでしょう。 ボットが起動時に表示するキーボードの作成方法を説明します。 これにより難しくなります。 keyboard1変数を作成し、telebot.types.ReplyKeyboardMarkup()を作成します。 この関数はキーボードを呼び出します。 次に、行を作成しますが、12行を超えることはできないことに注意してください! それらを作成するには、keyboard1.row()を記述します。 括弧内に、あなたが望むものを書き留めてください;個人的に、私は「こんにちは」と「バイ」を書きます。 次に、キーボードを呼び出すために、起動時にメッセージを送信する機能にreply_markup = keyboard1を追加しましょう。 ここにあなたが得るものがあります:



 keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1)
      
      





ボットを起動します...







キーボードが少し大きいことがわかります。 これを修正するには、ReplyKeyboardMarkup()にTrueを登録するだけです。 ユーザーがクリックするとすぐにキーボードを非表示にする場合は、別のTrueを記述します。 これらのTrueの意味の詳細については、 公式ドキュメントを参照してください



 keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True)
      
      





まあ、それだけです! もちろん、これは電信のボットですべて可能というわけではありませんが、主な機能を紹介しました。 ご清聴ありがとうございました。



ソースコード:



 import telebot bot = telebot.TeleBot('< >') keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1) @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == '  ': bot.send_sticker(message.chat.id, 'CAADAgADZgkAAnlc4gmfCor5YbYYRAI') @bot.message_handler(content_types=['sticker']) def sticker_id(message): print(message) bot.polling()
      
      







ご質問がある場合-あなたは電報dimagorovtsovに書くことができます



All Articles