Erstellen eines Telegramm-Bots in Yandex.Cloud

Telegramm-Bot-Erstellung

Heute werden wir aus den vorliegenden Materialien einen Telegramm-Bot in Yandex.Cloud zusammenstellen , der Yandex Cloud-Funktionen (oder kurz Yandex-Funktionen ) und Yandex Object Storage (oder Objektspeicher zur Klarheit) verwendet. Der Code wird auf sein Node.js . Es gibt jedoch einen Umstand, der scharf ist - eine Art Organisation namens RossKomTsenzur (Zensur ist nach Artikel 29 der Verfassung verboten) erlaubt Internetdienstanbietern nicht, Anfragen an die Russia Telegram API zu senden : https://api.telegram.org/. Nun, wir werden nicht - nein, nein, nein. In unserer Tasche gibt es in der Tat sogenannte Webhooks- Mit ihrer Hilfe stellen wir keine Anfragen an eine bestimmte Adresse, sondern senden Ihre Anfrage einfach als Antwort auf jede Anfrage an uns. Das heißt, wie in Odessa - wir beantworten die Frage mit einer Frage. Daher wird die Telegramm-API in unserem Code nicht angezeigt.

Haftungsausschluss
- , — .

Also werden wir einen Bot machen, der uns mit klugen Gedanken versorgt. Genau wie auf dem Bild: Sie können es in Aktion ausprobieren - hier ist der Name: @SmartThoughtsBot . Haben Sie den Alice Skill Button bemerkt ? Dies liegt daran, dass der Bot eine Art "Begleiter" für Alices gleichnamige Fähigkeiten ist , d. H. Es erfüllt die gleichen Funktionen wie Alices Fähigkeiten und es ist möglich, dass sie friedlich zusammenleben können, indem sie sich gegenseitig bewerben. Wie man die Fertigkeit Clever Thoughts erstellt, wird in dem Artikel beschrieben, in dem Alice die Fertigkeit erlangt . Jetzt (nach einigen Änderungen nach der Veröffentlichung des obigen Artikels) auf einem Smartphone sieht diese Fähigkeit ungefähr so aus:

Telegrammbot Clevere Gedanken



Alice's Fähigkeit Clevere Gedanken

Bot-Erstellung


Ich möchte, dass dieses Tutorial für alle nützlich ist, auch für alle und Anfänger "Botaniker". Daher werde ich in diesem Abschnitt ausführlich beschreiben, wie Bots in Telegrammen überhaupt erstellt werden . Für diejenigen, die diese Informationen nicht benötigen, fahren Sie mit den nächsten Abschnitten fort.

Wir öffnen die Telegaram- Anwendung , rufen den Vater aller Bots an (sie haben alles, was die Leute haben) - @BotFather - und geben ihm zuerst den Befehl / help, um zu aktualisieren, was wir tun können. Jetzt interessieren wir uns für den Befehl / newbot .

Erstellen Sie einen neuen Bot

Da der hier beschriebene Bot bereits erstellt wurde, werde ich zu Demonstrationszwecken für kurze Zeit einen weiteren Bot erstellen (dann werde ich ihn löschen). Ich werde es DemoHabrBot nennen . Namen ( Benutzername) Alle Telegramm-Bots müssen mit dem Wort bot enden , zum Beispiel: MyCoolBot oder my_cool_bot - dies ist für Bots. Aber zuerst geben Sie dem Bot einen Namen ( Name ) - und das ist für Menschen. Der Name kann in einer beliebigen Sprache sein, Leerzeichen enthalten, muss nicht mit dem Wort bot enden und muss nicht einmal eindeutig sein. In diesem Beispiel habe ich diesen Bot Demo Habr genannt .

Bot Name

Wählen Sie nun den Bot-Namen ( Benutzername , der für Bots). Nennen wir es DemoHabrBot . Alles, was sich auf den Namen des Bots ( Name ) bezieht, gilt überhaupt nicht für seinen Namen - Benutzername(oder gilt, aber genau das Gegenteil). Nachdem wir erfolgreich einen eindeutigen Bot-Namen erstellt haben, müssen wir das im Screenshot gezeigte Token mit einem roten Pfeil kopieren und speichern (streng vertraulich!). Wenig später werden wir damit den von Telegram kommenden Webhook auf unserer Yandex-Funktion installieren .

Bot Name

Geben wir nun dem Vater aller Bots den Befehl: / mybots , und er zeigt uns eine Liste aller von uns erstellten Bots. Lassen wir den frisch gebackenen Bot Demo Habr einfach in Ruhe (er wurde erstellt, um zu zeigen, wie Bots erstellt werden, aber wir werden ihn heute für andere Demonstrationszwecke verwenden) und betrachten den Smart Thoughts- Bot ( @SmartThoughtsBot ). Drücken Sie die Taste mit seinem Namen in der Liste der Bots.

Bot-Einstellungen

Hier können wir unseren Bot konfigurieren. Durch Klicken auf die Schaltfläche Bearbeiten ... bearbeiten wir diese oder jene Option. Wenn Sie beispielsweise auf die Schaltfläche Name bearbeiten klicken, können Sie den Namen des Bots ändern, z. B. anstelle von Clever Thoughts Delusional Ideas schreiben . Botpic ist ein Bot-Avatar, muss mindestens 150 x 150 px groß sein . Beschreibung ist eine kurze Beschreibung, die der Benutzer beim ersten Start des Bots als Antwort auf die Frage sieht : Was kann dieser Bot tun? Info - eine noch kürzere Beschreibung, die mit einem Link zum Bot ( https://t.me/SmartThoughtsBot) oder beim Anzeigen von Informationen darüber übertragen wird.

Bot: Beschreibung und Kurzinformation

Wir müssen nur das Team konfigurieren. Klicken Sie dazu auf die Schaltfläche Befehle bearbeiten . Um die Benutzerpraxis zu standardisieren, empfiehlt Telegram , immer zwei Befehle zu verwenden: / start und / help , und wenn der Bot Einstellungen benötigt, einen zusätzlichen Befehl / Einstellungen. Unser Bot ist einfach wie ein Ball, benötigt also 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, wird eine Liste von Befehlen für die schnelle Auswahl angezeigt. Alles ist wie auf dem Bild: links - wir setzen die Befehle durch den Bot-Vater; Auf der rechten Seite stehen diese Befehle den Benutzern in unserem Bot bereits zur Verfügung.

Installation und Verwendung im Bot-Befehl

Yandex-Funktion


Nachdem unser Bot erstellt wurde, gehen Sie zu Yandex. Cloud , um eine Funktion zu erstellen, die den Code unseres Bots ausführt. Wenn Sie noch nicht mit Yandex.Cloud gearbeitet haben, lesen Sie Alices Material im Land Bitrix , und dann senden die Yandex-Funktionen E-Mails . Ich bin mir ziemlich sicher, dass diese beiden relativ kleinen Artikel ausreichen werden, um ein grundlegendes Verständnis des Themas zu erlangen. Wählen Sie

in der Yandex.Cloud- Konsole im linken Navigationsmenü Cloud-Funktionen aus und klicken Sie dann auf die Schaltfläche Funktion erstellen . Wir geben ihr einen Namen und für sich eine kurze Beschreibung.

Erstellen einer Yandex-Funktion

Nachdem Sie auf Erstellen geklickt habenNach einigen Sekunden wird eine neue Funktion in der Liste aller Funktionen angezeigt. Klicken Sie auf ihren Namen - dies führt uns zur Übersichtsseite unserer Funktion. Hier müssen Sie (enable On ) , um die öffentliche Funktion Schalter , so dass er von außen (zum erhältlich ist Yandex.Cloud ) Welt, und dem Wert der Verbindung und Identifier Felder wird im Geheimen von allen außer sich selbst und Telegramm , so dass Ihre Funktion gehalten verschiedene Betrüger konnten nicht anrufen.

Eigenschaften der Yandex-Funktion

Nun, das linke Menü, gehen Sie auf die Funktion Editor . Lassen Sie uns unsere klugen Gedanken für kurze Zeit beiseite legen.und erstellen Sie eine minimale Vorlagenfunktion, um die Leistung unseres Bots zu testen ... In diesem Zusammenhang ist diese Funktion jedoch unser Bot ... Kurz gesagt, jetzt und genau hier erstellen wir einen einfachen Bot, der "spiegelt" (dh zurücksendet) ) Benutzeranfragen. Diese Vorlage kann immer verwendet werden, wenn neue Telegramm-Bots erstellt werden, um sicherzustellen, dass die Kommunikation mit Telegramm ordnungsgemäß funktioniert. Klicken Sie auf Datei erstellen , nennen Sie sie index.js und fügen Sie im Online- Code-Editor 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 ungefähr so ​​aussehen:

Der Code des einfachsten Bots auf Yandex funktioniert

Als nächstes geben wir direkt darunter den Einstiegspunkt - index.bot an , wobei index der Name der Datei ( index.js ) und bot der Name der Funktion ( module.exports.bot ) ist. Wir lassen alle anderen Felder unverändert und klicken in der oberen rechten Ecke auf die Schaltfläche Version erstellen . Nach einigen Sekunden wird diese Version der Funktion erstellt. Bald nach dem Testen des Webhooks werden wir eine neue Version erstellen - Smart Thoughts .

Einstiegspunkt für die Yandex-Funktion

Objektspeicherung


Nachdem wir die Yandex-Funktion eingerichtet haben , lassen Sie uns in der Konsole Yandeks.Oblaka eine sogenannte erstellen Ein Bucket ( Bucket , d. h. ein Bucket auf Russisch, keinesfalls ein Bouquet) zum Speichern von Bilddateien, die in unserem Smart Thoughts- Bot verwendet werden . Wählen Sie im linken Navigationsmenü das Objektobjektelement aus , klicken Sie auf die Schaltfläche " Bucket erstellen" , geben Sie einen Namen ein, z. B. " img-Bucket" , und vor allem machen wir den Zugriff auf gelesene Objekte öffentlich - andernfalls kann Telegram unsere Bilder nicht sehen. Alle anderen Felder bleiben unverändert. Klicken Sie auf die Schaltfläche Bucket erstellen .

Eimer bauen.

Danach sieht die Liste aller Buckets möglicherweise so aus (wenn dies Ihr einziger Bucket ist):

Bucket List

Jetzt schlage ich vor, auf den Namen des Buckets zu klicken und einen Ordner darin zu erstellen, um die Speicherung von Bildern für verschiedene Anwendungen zu organisieren. Zum Beispiel habe ich für den Telegrammbot Smart Thoughts einen Ordner namens tg-bot-smart- Thoughts erstellt (nichts, ich verstehe diese Chiffre). Erschaffe auch einige von dir.

Erstellen eines Ordners in einem Bucket

Jetzt können Sie auf den Namen des Ordners klicken, ihn

Hochladen einer Datei in einen Ordner in einem Bucket

aufrufen und Dateien hochladen: Und indem Sie auf den Dateinamen klicken, erhalten Sie dessen URL zur Verwendung in unserem Bot und im Allgemeinen irgendwo (aber veröffentlichen Sie diese URL nicht unnötig, da der Datenverkehr aus dem Objektspeicher berechnet wird )

Abrufen einer Dateiadresse im Objektspeicher

Das ist in der Tat alles mitObjektspeicherung . Jetzt wissen Sie, was zu tun ist, wenn Sie einen Aufruf zum Hochladen von Dateien sehen.

Webhook


Jetzt installieren wir einen Webhook - d. H. Wenn der Bot ein Update erhält (z. B. eine Nachricht vom Benutzer), wird eine Anfrage mit Daten von unserem Telegrammserver an unsere Yandex-Funktion gesendet . Hier ist eine Zeile, die Sie einfach in das Adressfeld Ihres Browsers einfügen und dann die Seite aktualisieren können (dies muss nur einmal durchgeführt werden): Ersetzen Sie einfach {bot_token} durch das Token, das wir beim Erstellen unseres Bots vom Vater-Vater erhalten haben, und {webhook_url} durch die URL unsere Yandex-Funktion . Einen Augenblick! Aber RossKomTsensur verbietet Anbieter in der Russischen Föderation die Adresse vom Diensthttps://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
https://api.telegram.org. Ja Richtig. Aber du hast etwas gefunden. Schließlich können Sie zum Beispiel Ihre Großmutter in der Ukraine, in Israel oder Kanada danach fragen - dort gibt es keine „russischen Kommentare“, und ein Gott weiß, wie Menschen ohne sie leben. Daher sollte die Anforderungsantwort bei der Installation eines Web-Hooks folgendermaßen aussehen:

Webhook-Installation

Testen. Es sollte "spiegeln".

Erster Bot-Test

So ist es. Herzlichen Glückwunsch - jetzt ist die Yandex-Funktion ein Telegramm- Bot geworden!

Kluge Gedanken


Und jetzt machen wir kluge Gedanken. Der Code ist offen und liegt auf GitHub . Es ist ziemlich gut kommentiert und es gibt nur hundert Zeilen darin. Lesen Sie es wie ein Opern-Diva-Libretto!

Bot Code Smart Thoughts

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 index.js vor (optional; Sie können nichts ändern). Erstellen Sie zip --Secondary, die Datei index.js und den Ordner node_modules beispielsweise unter dem Namen smart.zip .

ZIP-Archiv des Bots Smart Thoughts

Gehen Sie nun zu unseren Yandex-Funktionen in der Konsole , wählen Sie die Registerkarte ZIP-Archiv , klicken Sie auf die Schaltfläche Datei auswählen und laden Sie unser smart.zip- Archiv herunter . Klicken Sie abschließend in der oberen rechten Ecke auf die Schaltfläche Version erstellen .

Erstellen einer funktionierenden Version des Bots

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

Fertigstellung der Bot Smart Thoughts

Verweise


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


Fazit


Das ist alles für heute. Weitere Materialien folgen. Für wen es interessant ist zu lesen, abonnieren Sie Benachrichtigungen über neue Veröffentlichungen. Sie können auf dieser Website (die Schaltfläche Abonnieren unten) oder im Telegrammkanal IT Tutorial Zakhar oder in der gleichnamigen Community auf VK oder Twitter @mikezaharov abonnieren .

Donuts


Krapfen

Source: https://habr.com/ru/post/undefined/


All Articles