
Heute werden wir aus einfachen Materialien in Telegram-Bot geschrieben und verwendet (oder Yandex-Funktionen — um es kurz zu machen) und (oder Objektspeicher — zur Klarheit). Der Code wird in Node.js. Allerdings gibt es ein pikantes Detail — eine Organisation namens, sagen wir mal, Roskomnadzor (Zensur ist durch Artikel 29 der Verfassung der Russischen Föderation verboten), erlaubt es Internetanbietern in Russland nicht, Anfragen an die Telegram API unter der Adresse: https://api.telegram.org/. Nun werden wir das auch nicht machen — wenn es nicht geht, dann geht es nicht. Schließlich haben wir in unserem Koffer das sogenannte Webhook — damit stellen wir keine Anfragen an eine bestimmte Adresse, sondern senden nur unsere Anfrage als Antwort auf jede Anfrage an uns. Das heißt, wie in Odessa — wir antworten mit einer Frage auf eine Frage. Daher Telegram API wird in unserem Code nicht vorkommen.
HaftungsausschlussDie in diesem Artikel erwähnten Namen staatlicher Organisationen sind fiktiv, und mögliche Übereinstimmungen mit den Namen real existierender Organisationen sind zufällig.
Also werden wir einen Bot erstellen, der uns mit klugen Gedanken versorgt. Genau wie auf dem Bild:
Sie können ihn in der Praxis testen — hier ist der Name: @SmartThoughtsBotBeachten Sie die Schaltfläche „Alises Fähigkeit“? Это потому, что бот является своеобразным «компаньоном» для одноименного von Alises Fähigkeit, d.h. sie erfüllt die gleichen Funktionen wie Alises Fähigkeit und möglicherweise können sie harmonisch koexistieren und sich gegenseitig bewerben. Wie man einen Fähigkeit „Intelligente Gedanken“ wird im Artikel beschrieben . Jetzt (nach einigen Änderungen nach der Veröffentlichung des genannten Artikels) wird diese Fähigkeit ungefähr so aussehen:
Erstellen eines Bots
Ich hoffe, dass dieses Tutorial für alle nützlich ist, einschließlich der Anfänger, die „Bots erstellen“. Daher werde ich in diesem Abschnitt recht detailliert beschreiben, wie man überhaupt in TelegramTelegram-Bots erstellt. Für diejenigen, die diese Informationen nicht benötigen — fahren Sie mit den nächsten Abschnitten fort.
Öffnen Sie die Anwendung Telegram, rufen Sie den Vater aller Bots (bei ihnen ist alles wie bei Menschen) — @BotFather — und geben Sie ihm zu Beginn den Befehl /help, um sich ins Gedächtnis zu rufen, was wir tun können. Jetzt interessiert uns der Befehl /newbot.

Da der hier beschriebene Bot bereits erstellt wurde, werde ich zu Demonstrationszwecken vorübergehend einen anderen Bot erstellen (den ich später löschen werde). Ich nenne ihn DemoHabrBot. Alle Namen (Benutzername) aller Telegram-Bots müssen mit dem Wort enden bot, zum Beispiel: MyCoolBot oder my_cool_bot — das ist für Bots. Zuerst geben wir dem Bot einen Namen (name) — und das ist für Menschen. Der Name kann in jeder Sprache sein, Leerzeichen enthalten und muss nicht mit einem Wort enden bot, und er muss sogar nicht einzigartig sein. In diesem Beispiel habe ich diesen Bot genannt Demo Habr.

Jetzt wählen wir einen Namen für den Bot (Benutzername, der für Bots gedacht ist). Nennen wir ihn DemoHabrBot. Alles, was mit dem Namen des Bots zu tun hat (name) hat nichts mit seinem Namen zu tun — Benutzername (oder hat damit zu tun, aber genau entgegengesetzt). Nach der erfolgreichen Erstellung eines einzigartigen Botnamens müssen wir das Token kopieren und aufbewahren (unter strengster Geheimhaltung!), das auf dem Screenshot mit dem roten Pfeil gezeigt wird. Damit werden wir später den Webhook aus Telegram‘ einstellen für unsere Yandex-Funktion.

Jetzt geben wir dem Vater aller Bots den Befehl: /mybots, und er zeigt uns die Liste aller von uns erstellten Bots. Lassen Sie den frisch erstellten Bot Demo Habr vorerst in Ruhe (er wurde erstellt, um zu zeigen, wie man Bots erstellt, aber wir werden ihn heute noch für andere Demonstrationszwecke verwenden), und betrachten wir den Bot Schlaue Gedanken (@SmartThoughtsBot). Im Bots Fenster klicken wir auf den Button mit seinem Namen.

Hier können wir unseren Bot konfigurieren. Klicken Sie auf die Schaltfläche Bearbeiten… Wir werden mit der Bearbeitung einer bestimmten Option fortfahren. Zum Beispiel, indem wir auf die Schaltfläche klicken Name bearbeiten wir können den Namen des Bots ändern, sagen wir statt Schlaue Gedanken, schreiben wir Abstruse Ideen. Botpic — ist das Avatar des Bots, und sollte mindestens 150 x 150 px. Beschreibung — ist eine kurze Beschreibung, die der Benutzer beim ersten Start des Bots sieht, als Antwort auf die Frage: Was kann dieser Bot tun? Über — eine noch kürzere Beschreibung, die mit einem Link zum Bot übermittelt wird (https://t.me/SmartThoughtsBot) oder beim Anzeigen von Informationen über ihn.

Jetzt müssen wir nur noch die Befehle einstellen. Dazu drücken wir die Schaltfläche Befehle bearbeiten. Zur Standardisierung der Benutzerpraxis Telegram wird empfohlen, immer zwei Befehle zu verwenden: /start und /help, und wenn der Bot Anpassungen benötigt – einen zusätzlichen Befehl /settings. Unser Bot ist so einfach wie ein Ball, daher sind momentan keine Einstellungen nötig. Wir schreiben die ersten beiden Befehle auf, die wir später im Code bearbeiten werden. Jetzt, wenn der Benutzer ein Slash (Schrägstrich: /) in das Eingabefeld eingibt, erscheint eine Liste von Befehlen zur schnellen Auswahl. Alles wie im Bild: links – wir setzen die Befehle über den Bot-Vater; rechts sind diese Befehle bereits den Benutzern in unserem Bot verfügbar.

Yandex-Funktion
Jetzt, da unser Bot erstellt wurde, gehen wir zu Yandex.Cloud, um eine Funktion zu erstellen, die den Code unseres Bots ausführt. Falls Sie noch nicht mit Yandex.Cloud gearbeitet haben, lesen Sie das Material , und dann— . Ich bin mir fast sicher, dass diese beiden relativ kurzen Artikel ausreichend sind, um ein grundlegendes Verständnis des Themas zu erlangen.
Also wählen Sie im Yandex.Cloud im linken Navigationsmenü den Punkt Cloud Functions, und klicken dann auf die Schaltfläche Funktion erstellen. Geben Sie ihr einen Namen und eine kurze Beschreibung für sich selbst.

Nach dem Klicken auf die Schaltfläche Erstellen Sie und nach ein paar Sekunden wird die neue Funktion in der Liste aller Funktionen erscheinen. Klicken Sie auf ihren Namen—das bringt uns zur Seite Übersicht unserer Funktion. Hier müssen Sie den Schalter (Ein) für Öffentliche Funktionaktivieren, damit sie von der Außenwelt (für Yandex.Cloud) zugänglich ist, und die Werte der Felder Aufruf-URL und Identifikator sollten streng geheim gehalten werden, damit nur Sie und Telegram darüber Bescheid wissen, sodass Ihre Funktion nicht von Betrügern aufgerufen werden kann.

Jetzt wechseln wir mit dem linken Menü zu Editor Funktionen. Lassen Sie uns vorerst unsere Schlaue Gedanken, und erstellen wir eine minimale Vorlagenfunktion, um die Funktionalität unseres Bots zu überprüfen… Im Grunde genommen ist diese Funktion in diesem Kontext unser Bot… Kurz gesagt, hier und jetzt erstellen wir einen einfachen Bot, der Benutzeranfragen „spiegelt“ (d.h. zurücksendet). Diese Vorlage kann immer beim Erstellen neuer Telegram-Bots verwendet werden, um sicherzustellen, dass die Verbindung zu Telegramnormal funktioniert. Klicken Sie auf Datei erstellen, benennen 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:

Darunter geben wir den Endpunkt — index.bot, wobei index das ist der Name der Datei (index.js), und bot — der Name der Funktion (module.exports.bot). Alle anderen Felder lassen wir „wie sie sind“, und klicken oben rechts auf die Schaltfläche Version erstellen. In wenigen Sekunden wird diese Funktionsversion erstellt. Bald nach den Tests Webhook, werden wir eine neue Version erstellen — Schlaue Gedanken.

Objektspeicher
Jetzt, wo wir eine erstellt haben Yandex-Funktion, lassen Sie uns, während wir in der Konsole sind Yandex.Cloud, einen sogenannten Bucket (bucket, also ein Eimer auf Deutsch, definitiv kein Strauß) zum Speichern von Bilddateien erstellen, die in unserem Bot verwendet werden Schlaue Gedanken. Im linken Navigationsmenü wählen wir den Punkt Object Storage, klicken auf die Schaltfläche Bucket erstellen, denken uns einen Namen aus, zum Beispiel img-bucket, und das Wichtigste, Zugriff auf Objekt lesen stellen wir öffentlich ein — sonst sieht Telegram unsere Bilder nicht. Alle anderen Felder lassen wir unverändert. Wir klicken auf die Schaltfläche Bucket erstellen.

Danach könnte die Liste aller Buckets ungefähr so aussehen (wenn dies Ihr einziger Bucket ist):

Ich schlage 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 den Telegram-Bot Schlaue Gedanken habe ich einen Ordner mit dem Namen tg-bot-smart-thoughts erstellt (keine Sorge, ich verstehe diesen Code). Erstellen Sie auch einen.

Jetzt können Sie auf den Namen des Ordners klicken, ihn öffnen und Dateien hochladen:

Und durch Klicken auf den Dateinamen erhalten Sie dessen URL zur Nutzung in unserem Bot, und eigentlich überall (aber veröffentlichen Sie das nicht URL ohne Notwendigkeit, da der Datenverkehr von Objektspeicher berechnet wird).

Das ist im Grunde alles zu Objektspeicher. Jetzt wissen Sie, was zu tun ist, wenn Sie aufgefordert werden, Dateien dort hochzuladen.
Webhook
Jetzt richten wir den Webhook ein – d.h. wenn der Bot ein Update erhält (zum Beispiel eine Nachricht von einem Benutzer), wird vom Server Telegram an unser Yandex-Funktion eine Anfrage (request) mit den Daten gesendet. Hier ist die Zeile, die Sie einfach in die Adressleiste Ihres Browsers einfügen und die Seite dann aktualisieren können (das muss nur einmal geschehen): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Ersetzen wir nur {bot_token} durch das Token, das wir vom Bot-Vater bei der Erstellung unseres Bots erhalten haben, und {webhook_url} durch URL unserem Yandex-Funktionen. Einen Moment! Aber Roskomnadzor verhindert es, dass Anbieter in der RF diese Adresse bedienen. https://api.telegram.org. Ja, das stimmt. Aber Sie denken sich etwas aus. Sie könnten zum Beispiel Ihre Großmutter in der Ukraine, Israel oder Kanada bitten – dort gibt es keine „Russischen Zensuren“, und nur Gott weiß, wie die Menschen ohne so etwas leben. Letztendlich sollte die Anfrage-Antwort beim Einrichten des Webhooks so aussehen:

Testen wir. Es sollte „spiegeln“.

Das stimmt. Unsere Glückwünsche – jetzt Yandex-Funktion ist es Telegram-Bot!
Schlaue Gedanken
Jetzt erstellen wir Smarte Gedanken. Der Code ist offen und liegt unter . Er ist recht gut kommentiert und umfasst nur etwa hundert Zeilen. Lesen Sie ihn wie ein Libretto einer Operndiva!

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 notwendigen Änderungen in die Datei vor index.js (optional; Sie können auch nichts ändern). Erstellen Sie eine ZIP-Archive mit der Datei index.js und dem Ordner node_modules darinnen, zum Beispiel unter dem Namen smart.zip.

Gehen Sie nun im Terminal zu unserem Yandex-Funktionen, wählen Sie den Reiter ZIP-Archiv, klicken Sie auf die Schaltfläche Datei auswählen, und laden Sie unser Archiv smart.ziphoch. Schließlich klicken Sie oben rechts auf die Schaltfläche Version erstellen.

Nach ein paar Sekunden, wenn die Funktion aktualisiert wird, testen wir unseren Bot erneut. Jetzt spiegelt er nicht mehr, sondern liefert schlaue Gedanken!

Das war's für heute. Weitere Artikel folgen. Wer an ähnlichen Inhalten interessiert ist, kann sich hier für Benachrichtigungen über neue Artikel anmelden, oder auf Telegram-Kanal , oder Twitter .
Links
Spenden
Quelle: habr.com
