Erstellen eines Telegram-Bots in Yandex.Cloud

Erstellen eines Telegram-Bots in Yandex.Cloud

Heute werden wir aus improvisierten Materialien sammeln Yandex.Cloud Telegrammbot mit Yandex Cloud-Funktionen (oder Yandex-Funktionen der Kürze halber) und Yandex-Objektspeicher (oder Objektspeicher - zur Klarheit). Der Code wird aktiviert sein Node.js. Es gibt jedoch einen pikanten Umstand – eine bestimmte Organisation namens, sagen wir mal, RossKomZensur (Zensur ist gemäß Artikel 29 der Verfassung der Russischen Föderation verboten) erlaubt es Internetanbietern in Russland nicht, Anfragen an weiterzuleiten Telegramm API по отель: https://api.telegram.org/. Nun, das werden wir nicht – nein, nein. Tatsächlich gibt es in unserer Tasche sogenannte. Webhooks - Mit ihrer Hilfe richten wir keine Anfragen an eine bestimmte Adresse, sondern senden unsere Anfrage nur als Antwort auf eine Anfrage an uns. Das heißt, wie in Odessa beantworten wir eine Frage mit einer Frage. Deshalb Telegramm API wird in unserem Code nicht auftauchen.

HaftungsausschlussDie Namen aller in diesem Artikel erwähnten staatlichen Organisationen sind fiktiv und mögliche Übereinstimmungen mit den Namen realer Organisationen sind zufällig.

Also werden wir einen Bot erstellen, der uns mit klugen Gedanken versorgt. Genau wie auf dem Bild:

Erstellen eines Telegram-Bots in Yandex.Cloud

Sie können es in Aktion ausprobieren – hier ist der Name: @SmartThoughtsBot. Beachten Sie die Schaltfläche „Alices Fähigkeit“? Denn der Bot ist eine Art „Begleiter“ des Namensgebers Alices Können, d.h. Es erfüllt die gleichen Funktionen wie Alices Können und vielleicht, dass sie friedlich zusammenleben und sich gegenseitig bewerben können. Informationen zum Erstellen Fertigkeit „Intelligentes Denken“. im Artikel beschrieben Alice bekommt die Fähigkeit. Jetzt (nachdem nach der Veröffentlichung des obigen Artikels einige Änderungen vorgenommen wurden) ist dies auf einem Smartphone der Fall Geschicklichkeit wird etwa so aussehen:

Erstellen eines Telegram-Bots in Yandex.Cloud

Bot-Erstellung

Ich möchte, dass dieses Tutorial für alle nützlich ist, einschließlich. und Anfänger „Bot Builder“. Daher werde ich in diesem Abschnitt ausführlicher beschreiben, wie man im Allgemeinen erstellt TelegramDas sind Bots. Für diejenigen, die diese Informationen nicht benötigen, fahren Sie mit den nächsten Abschnitten fort.

Öffnen der Anwendung Telegaram, nennen wir den Vater aller Bots (sie haben alles wie Menschen) - @ BotFather - und zunächst geben wir ihm den Befehl /help, um unsere Erinnerung daran aufzufrischen, was wir tun können. Jetzt interessieren wir uns für das Team / newbot.

Erstellen eines Telegram-Bots in Yandex.Cloud

Da der hier beschriebene Bot bereits erstellt wurde, werde ich zu Demonstrationszwecken kurzzeitig einen weiteren Bot erstellen (dann werde ich ihn löschen). Ich werde ihn anrufen DemoHabrBot. Namen (Benutzername) müssen alle Telegram-Bots mit einem Wort enden botzum Beispiel: MyCoolBot oder mein_cool_bot Das ist für Bots. Aber geben Sie dem Bot zunächst einen Namen (Name) ist für Menschen. Der Name kann in einer beliebigen Sprache verfasst sein, Leerzeichen enthalten und muss nicht mit einem Wort enden botund muss nicht einmal eindeutig sein. In diesem Beispiel habe ich diesen Bot aufgerufen Demo Habr.

Erstellen eines Telegram-Bots in Yandex.Cloud

Wählen Sie nun einen Namen für den Bot (Benutzername, der für Bots). Nennen wir es DemoHabrBot. Alles, was mit dem Namen des Bots zu tun hat (Name) hat überhaupt nichts mit seinem Namen zu tun - Benutzername (oder trifft zu, aber genau das Gegenteil). Nachdem wir erfolgreich einen eindeutigen Bot-Namen erstellt haben, müssen wir das im Screenshot mit einem roten Pfeil gezeigte Token kopieren und (streng vertraulich!) speichern. Mit seiner Hilfe werden wir später das ausgehende installieren Telegram'ein Webhook zu unserem Yandex-Funktion.

Erstellen eines Telegram-Bots in Yandex.Cloud

Und jetzt geben wir dem Vater aller Bots den Befehl: /mybotsund es zeigt uns eine Liste aller von uns erstellten Bots. Lassen wir den frisch gebackenen Bot erst einmal in Ruhe Demo Habr (Es wurde erstellt, um zu zeigen, wie man Bots erstellt, aber wir werden es heute für andere Demonstrationszwecke verwenden) und betrachten Sie den Bot Kluge Gedanken (@SmartThoughtsBot). Klicken Sie in der Liste der Bots auf die Schaltfläche mit ihrem Namen.

Erstellen eines Telegram-Bots in Yandex.Cloud

Hier können wir unseren Bot einrichten. Einen Knopf drücken Bearbeiten… Wir werden mit der Bearbeitung der einen oder anderen Option fortfahren. Zum Beispiel durch einen Klick auf den Button Namen bearbeiten Wir können den Namen des Bots ändern, sagen wir statt Kluge Gedankenschreiben verrückte Ideen. Botpic - Das ist zumindest der Avatar des Bots 150 x 150 px. Beschreibung ist eine kurze Beschreibung, die der Benutzer sieht, wenn der Bot zum ersten Mal gestartet wird, als Antwort auf die Frage: Was kann dieser Bot? Über uns - eine noch kürzere Beschreibung, die mit einem Link zum Bot übermittelt wird (https://t.me/SmartThoughtsBot) oder beim Anzeigen von Informationen darüber.

Erstellen eines Telegram-Bots in Yandex.Cloud

Wir müssen nur die Befehle einrichten. Drücken Sie dazu die Taste Befehle bearbeiten. Um Benutzerpraktiken zu standardisieren Telegram empfiehlt, immer zwei Befehle zu verwenden: Ich fange an и /Hilfe, und wenn der Bot Einstellungen benötigt, ein zusätzlicher /settings-Befehl. Unser Bot ist kinderleicht und benötigt daher noch keine Einstellungen. Wir schreiben die ersten beiden Befehle, die wir dann im Code verarbeiten. Wenn der Benutzer nun einen Schrägstrich (Schrägstrich: /) in das Eingabefeld eingibt, erscheint eine Liste mit Befehlen zur schnellen Auswahl. Alles ist wie auf dem Bild: links - wir geben Befehle über den Bot-Vater ein; Auf der rechten Seite stehen diese Befehle den Benutzern in unserem Bot bereits zur Verfügung.

Erstellen eines Telegram-Bots in Yandex.Cloud

Yandex-Funktion

Nachdem unser Bot nun erstellt wurde, können wir fortfahren Yandex.Cloudum eine Funktion zu erstellen, die unseren Bot-Code ausführt. Wenn Sie nicht mit gearbeitet haben Yandex.Cloud Lesen Sie das Material Alice im Land Bitrix, Und danach - Yandex-Funktionen zum Senden von E-Mails. Ich bin mir fast sicher, dass diese beiden relativ kleinen Artikel ausreichen werden, um ein grundlegendes Verständnis des Themas zu erlangen.

Also in der Konsole Yandex.Clouds Wählen Sie im linken Navigationsmenü das Element aus Cloud-Funktionen, und drücken Sie dann die Taste Erstellen Sie eine Funktion. Wir geben ihm einen Namen und für uns selbst eine kurze Beschreibung.

Erstellen eines Telegram-Bots in Yandex.Cloud

Nach dem Drücken der Taste Schaffen und nach ein paar Sekunden erscheint die neue Funktion in der Liste aller Funktionen. Klicken Sie auf ihren Namen – wir gelangen zur Seite Beschreibung unsere Funktion. Hier müssen Sie aktivierenOn) schalten öffentliche Funktiones von außen verfügbar zu machen (z Yandex.Clouds) der Welt und den Wert der Felder Link zum Anruf и ID - Halten Sie es vor allen außer Ihnen und Telegram geheim, damit verschiedene Betrüger Ihre Funktion nicht aufrufen können.

Erstellen eines Telegram-Bots in Yandex.Cloud

Gehen Sie nun über das linke Menü zu Editor Funktionen. Lassen Sie uns für einen Moment beiseite legen Kluge Gedanken, und erstellen Sie eine minimale Vorlagenfunktion, um die Leistung unseres Bots zu überprüfen ... In diesem Zusammenhang ist diese Funktion jedoch unser Bot ... Kurz gesagt, jetzt und genau hier werden wir den einfachsten Bot erstellen, der „spiegelt“ ( d.h. Benutzeranfragen zurücksenden. Diese Vorlage kann immer beim Erstellen neuer Telegram-Bots verwendet werden, um sicherzustellen, dass die Kommunikation mit Telegramm'om funktioniert gut. Klicken Erstelle Datei, nennen index.js, und online Code-Editor Fügen Sie den folgenden Code in diese Datei ein:

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
  };
};

In der Yandex.Cloud-Konsole sollte es etwa so aussehen:

Erstellen eines Telegram-Bots in Yandex.Cloud

Nachfolgend geben wir an Einstiegspunkt - index.botWo Index das ist der Dateiname (index.js), und bot - Funktionsname (module.exports.bot). Lassen Sie alle anderen Felder unverändert und klicken Sie in der oberen rechten Ecke auf die Schaltfläche Version erstellen. Nach einigen Sekunden wird diese Version der Funktion erstellt. Bald nach dem Test Webhook, wir werden eine neue Version erstellen − Kluge Gedanken.

Erstellen eines Telegram-Bots in Yandex.Cloud

Objektspeicher

Jetzt haben wir es eingerichtet Yandex-FunktionLass uns gehen, während wir in der Konsole sind Yandex.Clouds, erstellen Sie ein sogenanntes. Eimer (Eimer, d.h. Bucket auf Russisch, keineswegs ein Blumenstrauß) zum Speichern von Bilddateien, die in unserem Bot verwendet werden Kluge Gedanken. Wählen Sie im linken Navigationsmenü aus Objektspeicher, Drücken Sie den Knopf Bucket erstellen, gib ihm einen Namen, zum Beispiel img-bucket, und am wichtigsten, Lesezugriff auf Objekte Machen Sie es öffentlich, sonst sieht Telegram unsere Bilder nicht. Alle anderen Felder bleiben unverändert. Wir drücken den Knopf Bucket erstellen.

Erstellen eines Telegram-Bots in Yandex.Cloud

Danach könnte eine Liste aller Buckets etwa so aussehen (wenn dies Ihr einziger Bucket ist):

Erstellen eines Telegram-Bots in Yandex.Cloud

Jetzt schlage ich vor, auf den Namen des Buckets zu klicken und darin einen Ordner zu erstellen, um die Speicherung von Bildern für verschiedene Anwendungen zu organisieren. Zum Beispiel für einen Telegram-Bot Kluge Gedanken Ich habe einen Ordner namens erstellt tg-bot-smart-thoughts (Nichts, ich werde diese Chiffre verstehen). Erstellen Sie auch eines.

Erstellen eines Telegram-Bots in Yandex.Cloud

Jetzt können Sie auf den Ordnernamen klicken, hineingehen und Dateien hochladen:

Erstellen eines Telegram-Bots in Yandex.Cloud

Und wenn Sie auf den Dateinamen klicken, erhalten Sie ihn URL zur Verwendung in unserem Bot und allgemein – überall (veröffentlichen Sie dies jedoch nicht URL unnötig, da Verkehr von Objektspeicher berechnet).

Erstellen eines Telegram-Bots in Yandex.Cloud

Hier ist es eigentlich alles Objektspeicher. Jetzt wissen Sie, was zu tun ist, wenn Sie dort zum Hochladen von Dateien aufgefordert werden.

Webhook

Jetzt werden wir installieren Webhook – d.h. wenn der Bot ein Update (z. B. eine Nachricht vom Benutzer) vom Server erhält Telegram in unserer Yandex-Funktion Anfrage wird verschicktAnforderung) mit Daten. Hier ist eine Zeichenfolge, die Sie einfach in das Adressfeld des Browsers einfügen und dann die Seite aktualisieren können (dies muss nur einmal durchgeführt werden): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Einfach austauschen {bot_token} auf den Token, den wir vom Vater-Bot erhalten haben, als wir unseren Bot erstellt haben, und {webhook_url} - auf URL unsere Yandex-Funktionen. Warten Sie eine Minute! Aber RossKomZensur verbietet Anbietern in der Russischen Föderation, die Adresse bereitzustellen https://api.telegram.org. Ja Richtig. Aber dir fällt etwas ein. Schließlich können Sie zum Beispiel in der Ukraine, in Israel oder Kanada Ihre Großmutter danach fragen – dort gibt es keine „russische Zensur“ und nur Gott weiß, wie Menschen ohne sie leben. Daher sollte die Anfrage-Antwort bei der Installation des Webhooks wie folgt aussehen:

Erstellen eines Telegram-Bots in Yandex.Cloud

Testen. Sollte gespiegelt sein.

Erstellen eines Telegram-Bots in Yandex.Cloud

So ist das. Unsere Glückwünsche – jetzt Yandex-Funktion geworden Telegram-Bot!

Kluge Gedanken

Und jetzt machen wir Smart Thoughts. Der Code ist offen und liegt weiter GitHub. Es ist ziemlich gut kommentiert und nur hundert Zeilen lang. Lesen Sie es wie ein Operndiva-Libretto!

Erstellen eines Telegram-Bots in Yandex.Cloud

Klonen Sie das Projekt und installieren Sie die Abhängigkeiten:

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

Nehmen Sie die erforderlichen Änderungen an der Datei vor index.js (optional; Sie können nichts ändern). Erstellen Reißverschluss-Archiv, mit einer Datei index.js und Ordner node_modules innen, zum Beispiel genannt smart.zip.

Erstellen eines Telegram-Bots in Yandex.Cloud

Gehen Sie nun in die Konsole zu unserem Yandex-Funktionen, wählen Sie die Registerkarte aus ZIP-Archiv, Drücken Sie den Knopf Wählen Sie eine Datei ausund laden Sie unser Archiv herunter smart.zip. Klicken Sie abschließend in der oberen rechten Ecke auf die Schaltfläche Version erstellen.

Erstellen eines Telegram-Bots in Yandex.Cloud

In wenigen Sekunden, wenn die Funktion aktualisiert ist, werden wir unseren Bot erneut testen. Jetzt „spiegelt“ er nicht mehr, sondern liefert kluge Gedanken!

Erstellen eines Telegram-Bots in Yandex.Cloud

Das ist alles für heute. Weitere Artikel folgen. Wenn Sie daran interessiert sind, dies zu lesen, abonnieren Sie Benachrichtigungen über neue Artikel. Abonnieren könnt ihr hier oder Telegram-Kanal IT-Tutorial ZakharOder Twitter @mikezaharov.

Referenzen

Code auf GitHub
Yandex Cloud-Funktionen
Yandex-Objektspeicher
Bots: Eine Einführung für Entwickler
Telegramm-Bot-API

Spenden

Erstellen eines Telegram-Bots in Yandex.Cloud

Source: habr.com

Kommentar hinzufügen