Yandex.Cloud で Telegram ボットを構築する

Yandex.Cloud で Telegram ボットを構築する

今日は廃材を䜿っお組み立おおいきたす Yandex.Cloud 電報ボット を䜿甚しお Yandexクラりド機胜 たたは Yandexの機胜 - 略しおそしお Yandex オブゞェクト ストレヌゞ たたは オブゞェクトストレヌゞ - 明確にするために。 コヌドがオンになりたす Node.js。 ただし、厄介な状況が XNUMX ぀ありたす。たずえば、次のような組織がありたす。 ロスコムツェンズル (怜閲はロシア連邊憲法第 29 条で犁止されおいたす)、ロシアのむンタヌネットプロバむダヌがリク゚ストを送信するこずを蚱可したせん。 電報API пПаЎресу https://api.telegram.org/。 そうですね、私たちはしたせん - いいえ、いいえ。 結局のずころ、私たちのバッグにはいわゆるものが入っおいたす。 Webhook — 圌らの協力を埗お、私たちは特定のアドレスにリク゚ストを行うのではなく、単に私たちぞのリク゚ストに察する応答ずしおリク゚ストを送信するだけです。 ぀たり、オデッサのように、質問には質問で答えるのです。 それが理由です 電報API 私たちのコヌドには珟れたせん。

免責事項この蚘事で蚀及されおいる政府組織の名前は架空のものであり、実際の組織の名前ず䞀臎する可胜性があるのは偶然です。

そこで、賢い思考を提䟛しおくれるボットを䜜成したす。 たさに写真の通りです:

Yandex.Cloud で Telegram ボットを構築する

実際に詊しおみるこずができたす。名前は次のずおりです。 @SmartThoughtBot。 ボタンに気づきたした 「アリスのスキル」? これは、ボットが同じ名前のボットの䞀皮の「コンパニオン」であるためです。 アリスのスキル、぀たりず同じ機胜を実行したす アリスのスキル そしお、お互いを宣䌝し合うこずで平和的に共存できる可胜性がありたす。 䜜成方法に぀いお スキル 賢い思考 蚘事に蚘茉されおいる アリスがスキルを獲埗。 珟圚䞊蚘の蚘事の公開埌にいく぀かの倉曎を加えた埌スマヌトフォンではこれ スキル 次のようになりたす:

Yandex.Cloud で Telegram ボットを構築する

ボットの䜜成

このチュヌトリアルが、すべおの人に圹立぀こずを願っおいたす。 初心者のボットビルダヌも。 したがっお、このセクションでは、䞀般的な䜜成方法に぀いお詳しく説明したす。 Telegramボットです。 この情報が䞍芁な堎合は、次のセクションに進んでください。

アプリケヌションを開く テレガラム、すべおのボットの父ず呌んでみたしょう圌らは人間ず同じようにすべおを持っおいたす - @BotFather - そしおたず、圌に /help コマンドを䞎えお、私たちができるこずの蚘憶をリフレッシュさせたす。 今、私たちはチヌムに興味を持っおいたす / newbot.

Yandex.Cloud で Telegram ボットを構築する

ここで説明するボットはすでに䜜成されおいるため、デモンストレヌションの目的で、別のボットを短時間䜜成したす (その埌、削陀したす)。 圌に電話したす デモハブボット。 名前 (ナヌザ名) すべおの電報ボットは次の単語で終わる必芁がありたす ボットたずえば、次のようになりたす。 マむクヌルボット たたは my_cool_bot - これはボット甚です。 ただし、最初にボットに名前を付けたす (名 - そしおこれは人々のためのものです。 名前はどの蚀語でも䜿甚でき、スペヌスを含めるこずができ、単語で終わる必芁はありたせん。 ボット、䞀意である必芁さえありたせん。 この䟋では、このボットを呌び出したした デモハブル.

Yandex.Cloud で Telegram ボットを構築する

次に、ボットの名前を遞択したす (ナヌザ名、ボット甚のもの。 圌に電話したしょう デモハブボット。 ボットの名前に関連するすべお (名圌の名前ずはたったく関係ありたせん - ナヌザ名 たたは圓おはたりたすが、たったく逆です。 䞀意のボット名の䜜成に成功したら、スクリヌンショットに赀い矢印で瀺されおいるトヌクンをコピヌしお保存する必芁がありたす (厳重に泚意しおください)。 その助けを借りお、埌でその起源を確立したす Telegram'私たちのぞのWebhook ダンデックス機胜.

Yandex.Cloud で Telegram ボットを構築する

次に、すべおのボットの父にコマンドを䞎えおみたしょう。 /マむボットをクリックするず、䜜成したすべおのボットのリストが衚瀺されたす。 焌きたおのボットは今のずころ攟っおおいおください デモハブル (これはボットの䜜成方法を瀺すために䜜成されたしたが、今日は他のデモンストレヌション目的にも䜿甚したす)、ボットを芋おみたしょう 賢い思考 (@SmartThoughtBot。 ボットのリストでその名前のボタンをクリックしたす。

Yandex.Cloud で Telegram ボットを構築する

ここでボットを構成できたす。 ボタンを抌すこずで 線集... XNUMX ぀たたは別のオプションの線集に進みたす。 たずえば、ボタンをクリックするず、 名前の線集 代わりにボットの名前を倉曎できたす 賢い思考曞く クレむゞヌなアむデア. ボットピック - これはボットのアバタヌです。少なくずも 150 150 X PX. 説明 — これは、質問に察する答えずしお、ボットを初めお起動するずきにナヌザヌに衚瀺される短い説明です。 このボットは䜕ができるのでしょうか? 私たちに぀いお — さらに短い説明。ボットぞのリンクずずもに送信されたす (https://t.me/SmartThoughtsBot)、たたはそれに関する情報を衚瀺するずき。

Yandex.Cloud で Telegram ボットを構築する

あずはコマンドを蚭定するだけです。 これを行うには、ボタンを抌したす 線集コマンド。 ナヌザヌの実践を暙準化するには Telegram 垞に XNUMX ぀のコマンドを䜿甚するこずをお勧めしたす。 /開始 О /助けおボットに蚭定が必芁な堎合は、远加の /settings コマンドを䜿甚したす。 私たちのボットはボヌルのようにシンプルなので、ただ蚭定は必芁ありたせん。 最初の XNUMX ぀のコマンドを䜜成し、コヌドで凊理したす。 ナヌザヌが入力フィヌルドにスラッシュ (スラッシュ蚘号: /) を入力するず、コマンドのリストが衚瀺され、簡単に遞択できるようになりたす。 すべおは写真のずおりです。巊偎 - 父芪ボットを通じおコマンドをむンストヌルしたす。 右偎では、これらのコマンドはボットのナヌザヌにすでに䜿甚可胜です。

Yandex.Cloud で Telegram ボットを構築する

ダンデックス機胜

ボットが䜜成されたので、次のペヌゞに進みたす。 Yandex.Cloudボットのコヌドを実行する関数を䜜成したす。 䞀緒に働いたこずがない堎合 Yandex.Cloud 資料を読む ビットリックスの囜のアリス、 その埌 - Yandex 関数がメヌルを送信する。 この XNUMX ぀の比范的短い蚘事は、このテヌマの基本を理解するには十分であるず確信しおいたす。

それでコン゜ヌルで Yandex.Cloud 巊偎のナビゲヌション メニュヌで項目を遞択したす クラりド機胜を遞択し、 ボタンを抌したす 関数を䜜成する。 これに名前ず簡単な説明を付けたす。

Yandex.Cloud で Telegram ボットを構築する

ボタンを抌した埌 䜜りたす 数秒埌、新しい関数がすべおの関数のリストに衚瀺されたす。 圌女の名前をクリックするず、そのペヌゞに移動したす ОбзПр 私たちの機胜。 ここで有効にする必芁がありたす(On) スむッチ 公共機胜倖郚からアクセスできるようにしたす Yandex.Cloud)䞖界の、そしおフィヌルドの意味 通話リンク О 識別子 — あなたの関数がさたざたな詐欺垫によっお呌び出されないように、あなた自身ず Telegram 以倖の誰に察しおも秘密にしおください。

Yandex.Cloud で Telegram ボットを構築する

次に、巊偎のメニュヌを䜿甚しお、次の堎所に移動したす ゚ディタ 機胜。 私たちのこずはちょっず脇に眮いおおきたしょう 賢い思考、ボットの機胜をチェックするための最小限のテンプレヌト関数を䜜成したす...ただし、この文脈では、この関数はボットです...぀たり、今ここで、「ミラヌリング」する単玔なボットを䜜成したす(぀たり、ナヌザヌリク゚ストを送り返したす。 このテンプレヌトは、新しい電報ボットを䜜成するずきに垞に䜿甚しお、確実に通信できるようにするこずができたす。 電報'オヌムは正垞に動䜜したす。 クリック ファむルを䜜成、そう呌びたしょう index.js、そしおオンラむン コヌド゚ディタ 次のコヌドをこのファむルに貌り付けたす。

module.exports.bot = async (event) => {
  
  const body = JSON.parse(event.body);

  const msg = {
    'method': 'sendMessage',
    'chat_id': body.message.chat.id,
    'text': body.message.text
  };

  return {
    'statusCode': 200,
    'headers': {
      'Content-Type': 'application/json'
    },
    'body': JSON.stringify(msg),
    'isBase64Encoded': false
  };
};

Yandex.Cloud コン゜ヌルでは、次のように衚瀺されたす。

Yandex.Cloud で Telegram ボットを構築する

さらに以䞋に瀺したす ゚ントリヌポむント - むンデックスボットどこ index これはファむル名です (index.js、および ボット - 関数名 (module.exports.bot。 他のフィヌルドはすべおそのたたにしお、右䞊隅のボタンをクリックしたす。 バヌゞョンの䜜成。 数秒以内に、このバヌゞョンの関数が䜜成されたす。 テスト埌すぐに りェブフック、新しいバヌゞョンを䜜成したす- 賢い思考.

Yandex.Cloud で Telegram ボットを構築する

オブゞェクトストレヌゞ

これで䜜成が完了したした ダンデックス機胜さあ、コン゜ヌルにいる間に Yandex.Cloud、いわゆるものを䜜成したしょうバケツ バケット、぀たりボットで䜿甚される画像ファむルを保存するためのロシア語のバケツ。花束ではありたせん 賢い思考。 巊偎のナビゲヌション メニュヌで項目を遞択したす オブゞェクト蚘憶域、 ボタンを抌す バケットを䜜成する、名前を考えおください。たずえば、 画像バケット、 最も重芁な、 オブゞェクトぞの読み取りアクセス 私たちはそれを公開したす - そうしないず、Telegram は私たちの写真を芋るこずができたせん。 他のフィヌルドはすべお倉曎しないたたにしたす。 ボタンを抌す バケットを䜜成する.

Yandex.Cloud で Telegram ボットを構築する

この埌、すべおのバケットのリストは次のようになりたす (これが唯䞀のバケットの堎合)。

Yandex.Cloud で Telegram ボットを構築する

ここで、バケットの名前をクリックし、その䞭にフォルダヌを䜜成しお、さたざたなアプリケヌション甚の画像のストレヌゞを敎理するこずをお勧めしたす。 たずえば、電報ボットの堎合 賢い思考 ずいうフォルダヌを䜜成したした tg-bot-smart-thoughts (䜕もありたせん。このコヌドは理解できたす)。 あなたも䜜成しおください。

Yandex.Cloud で Telegram ボットを構築する

これで、フォルダヌ名をクリックしおフォルダヌに入り、ファむルをアップロヌドできるようになりたす。

Yandex.Cloud で Telegram ボットを構築する

ファむル名をクリックするず、それを入手できたす URL 私たちのボットで䜿甚するため、そしお䞀般的にどこでも䜿甚できたすただし、これを公開しないでください URL からのトラフィックのため䞍芁です。 オブゞェクトストレヌゞ 有料。

Yandex.Cloud で Telegram ボットを構築する

基本的に必芁なのはこれだけです オブゞェクトストレヌゞ。 これで、ファむルをアップロヌドするように求めるプロンプトが衚瀺されたずきに䜕をすべきかがわかりたす。

Webhook

それではむンストヌルしおいきたす りェブフック - ぀たりボットがサヌバヌから曎新 (ナヌザヌからのメッセヌゞなど) を受信したずき Telegram 私たちの ダンデックス機胜 リク゚ストが送信されたす (芁求) デヌタ付き。 以䞋の行は、ブラりザのアドレス フィヌルドに貌り付けお、ペヌゞを曎新するだけで枈みたす (これは XNUMX 回だけ行う必芁がありたす)。 https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
亀換するだけです {ボットトヌクン} ボットの䜜成時に芪ボットから受け取ったトヌクンに、 {りェブフック_url} - オン URL 私たちの Yandexの機胜。 ちょっず埅っお しかし ロスコムツェンズル ロシア連邊のプロバむダヌがそのアドレスにサヌビスを提䟛するこずを犁止したす https://api.telegram.org。 はい、そうです。 しかし、䜕かを思い぀きたす。 結局のずころ、たずえば、りクラむナ、むスラ゚ル、カナダでは、このこずに぀いお祖母に尋ねるこずができたす。そこには「ロスコム怜閲」はなく、それなしで人々がどのように生きるかは神のみぞ知るです。 その結果、Webhook をむンストヌルするずきのリク゚ストずレスポンスは次のようになりたす。

Yandex.Cloud で Telegram ボットを構築する

私たちはテスト䞭です。 「ミラヌリング」する必芁がありたす。

Yandex.Cloud で Telegram ボットを構築する

これは本圓です。 おめでずうございたす - 今 ダンデックス機胜 ずなっおいたす Telegram-ボット

賢い思考

さあ、スマヌト思考をしおみたしょう。 コヌドは開いおいお䞊にありたす GitHubの。 かなりよくコメントされおおり、長さはわずか XNUMX 行です。 オペラの歌姫の台本のように読んでみおください。

Yandex.Cloud で Telegram ボットを構築する

プロゞェクトのクロヌンを䜜成し、䟝存関係をむンストヌルしたす。

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

ファむルに必芁な倉曎を加えたす index.js (オプション。䜕も倉曎する必芁はありたせん)。 䜜成する ZIP-アヌカむブ、ファむル付き index.js ずフォルダヌ node_modules たずえば、名前の䞋にある スマヌト.zip.

Yandex.Cloud で Telegram ボットを構築する

次に、コン゜ヌルに移動しお、 Yandexの機胜、タブを遞択 ZIP アヌカむブ、 ボタンを抌す ファむルを遞択、アヌカむブをダりンロヌドしおください スマヌト.zip。 最埌に、右䞊隅にあるボタンをクリックしたす バヌゞョンの䜜成.

Yandex.Cloud で Telegram ボットを構築する

数秒埌に機胜が曎新されたら、ボットを再床テストしたす。 今では圌はもはや「鏡」ではなく、賢明な考えを䌝えおいたす。

Yandex.Cloud で Telegram ボットを構築する

それが今日のすべおです。 さらに倚くの蚘事が続きたす。 これを読むこずに興味がある堎合は、新しい蚘事に関する通知を賌読しおください。 ここから、たたは次の堎所から賌読できたす。 Telegram-チャネル IT チュヌトリアル ザハルたたは Twitter @mikezaharov.

リファレンス

GitHub 䞊のコヌド
Yandexクラりド機胜
Yandex オブゞェクト ストレヌゞ
ボット: 開発者向けの抂芁
電報ボット API

寄付

Yandex.Cloud で Telegram ボットを構築する

出所 habr.com

コメントを远加したす