
Heute werden wir aus verfügbaren Materialien in Telegram-Bot unter Verwendung von (oder Yandex-Funktionen — der Kürze halber) und (oder Objektspeicher — zur Klarheit). Der Code wird in Node.js. Es gibt jedoch ein pikantes Detail – eine Organisation mit dem Namen, sagen wir mal, RossKomZenzur (Zensur ist durch Artikel 29 der Verfassung der RF verboten), erlaubt es den Internetanbietern in Russland nicht, Anfragen an Telegram API an die Adresse: https://api.telegram.org/. Nun, wir werden es nicht tun – wenn es nicht möglich ist, dann eben nicht. Schließlich haben wir in unserem Koffer die sogenannten Webhooks — damit stellen wir keine Anfragen an eine bestimmte Adresse, sondern senden einfach unsere Anfrage als Antwort auf jede Anfrage an uns. Das heißt, wie in Odessa – wir antworten auf eine Frage mit einer Frage. Daher Telegram API wird es in unserem Code nicht auftauchen.
HaftungsausschlussDie in diesem Artikel genannten Namen von staatlichen Organisationen sind erfunden, und mögliche Übereinstimmungen mit den Namen real existierender Organisationen sind zufällig.
Also werden wir einen Bot erstellen, der uns mit intelligenten Gedanken versorgt. Genau so wie auf dem Bild:
Sie können ihn im Einsatz testen – hier ist der Name: @SmartThoughtsBot. Haben Sie die Schaltfläche „Fähigkeit von Alice“? Это потому, что бот является своеобразным «компаньоном» для одноименного Fähigkeit von Alice, d.h. er erfüllt die gleichen Funktionen wie Fähigkeit von Alice und es ist möglich, dass sie friedlich zusammen existieren, indem sie einander bewerben. Wie man eine Fähigkeit Intelligente Gedanken erstellt, wird im Artikel beschrieben. Jetzt (nach einigen Änderungen nach der Veröffentlichung des oben erwähnten Artikels) wird diese Fähigkeit auf dem Smartphone etwa so aussehen:
Bot-Erstellung
Ich hoffe, dass dieses Tutorial für alle hilfreich ist, auch für Anfänger im 'Bot-Bau'. Daher werde ich in diesem Abschnitt recht ausführlich beschreiben, wie man überhaupt TelegramBots erstellt. Für diejenigen, für die diese Informationen nicht erforderlich sind – wechseln Sie zu den nächsten Abschnitten.
Öffnen Sie die Anwendung Telegaram, rufen Sie den Vater aller Bots (sie sind wie 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 ist, werde ich zum Demonstrationszweck vorübergehend einen anderen Bot erstellen (ich werde ihn später löschen). Ich nenne ihn DemoHabrBot. Die Namen (username) aller Telegram-Bots müssen mit dem Wort enden bot, zum Beispiel: MyCoolBot oder my_cool_bot — das ist für Bots. Aber zuerst geben wir dem Bot einen Namen (name) — und das ist für die Menschen. Der Name kann in jeder Sprache sein, Leerzeichen enthalten und muss nicht mit einem Wort enden bot, und er muss nicht einmal einzigartig sein. In diesem Beispiel habe ich diesen Bot genannt Demo Habr.

Jetzt wählen wir einen Namen für den Bot (username, 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 — username (oder hat, aber genau gegenteilig). Nach erfolgreicher Erstellung eines einzigartigen Namens für den Bot müssen wir das Token, das mit dem roten Pfeil im Screenshot angezeigt wird, kopieren und geheim halten! Damit werden wir später den ausgehenden TelegramWebhook auf unsere Yandex-Funktion.

Jetzt geben wir dem Vater aller Bots den Befehl: /mybots, und er wird uns eine Liste aller Bots zeigen, die wir erstellt haben. Lassen wir vorerst den frisch gebackenen Bot Demo Habr (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 Kluge Gedanken (@SmartThoughtsBot). Klicken Sie in der Liste der Bots auf die Schaltfläche mit seinem Namen.

Hier können wir unseren Bot anpassen. Wenn wir auf die Schaltfläche Bearbeiten… klicken, gelangen wir zur Bearbeitung jener oder anderer Optionen. Zum Beispiel können wir, wenn wir auf die Schaltfläche Name bearbeiten klicken, den Namen des Bots ändern, sagen wir, anstelle von Kluge Gedanken, schreiben wir Verrückte Ideen. Botbild — ist das Avatar des Bots und muss 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 dem Link zum Bot (https://t.me/SmartThoughtsBot) oder beim Betrachten der Informationen über ihn übermittelt wird.

Jetzt müssen wir nur noch die Befehle einrichten. Dazu klicken wir auf die Schaltfläche Befehle bearbeiten. Um die Benutzerpraxis zu standardisieren, Telegram wird empfohlen, immer zwei Befehle zu verwenden: /start und /help, und wenn der Bot Einstellungen benötigt — einen zusätzlichen Befehl /settings. Unser Bot ist einfach wie ein Ball, daher sind derzeit keine Einstellungen erforderlich. Wir geben die beiden ersten Befehle ein, die wir später im Code verarbeiten werden. Jetzt, wenn der Benutzer im Eingabefeld einen Schrägstrich (/) eingibt, wird eine Liste von Befehlen zum schnellen Auswählen angezeigt. Alles wie auf dem Bild: links — wir richten die Befehle über den Vater-Bot ein; rechts sind diese Befehle bereits für die Benutzer in unserem Bot verfügbar.

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

Nach dem Drücken der Taste Erstellen 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 Überblick unserer Funktion. Hier müssen wir den Schalter (Ein) für die Öffentliche Funktion, damit sie für die externe (für Yandex.Cloud) Welt zugänglich wird, und die Werte der Felder URL zum Aufrufen und Identifier – sollten vor allen außer Ihnen selbst und Telegram geheim gehalten werden, damit Ihre Funktion nicht von verschiedenen Betrügern aufgerufen werden kann.

Jetzt wechseln wir mithilfe des linken Menüs zum Editor der Funktion. Lassen Sie unsere Kluge Gedanken, vorerst beiseite und erstellen Sie eine minimale Template-Funktion zur Überprüfung der Funktionsfähigkeit unseres Bots... Im Grunde genommen ist diese Funktion in diesem Kontext unser Bot... Kurz gesagt, jetzt und direkt hier erstellen wir einen einfachsten Bot, der Anfragen von Benutzern „spiegeln“ (d.h. zurücksenden) wird. Diese Vorlage kann immer verwendet werden, wenn neue Telegram-Bots erstellt werden, um sicherzustellen, dass die Verbindung zu Telegramnormal funktioniert. Klicken Sie auf Datei erstellen, nennen Sie es index.js, und im Online- Code-Editor fügen Sie in diese Datei den folgenden Code 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 Konsole von Yandex.Cloud sollte das ungefähr so aussehen:

Dann geben wir etwas weiter unten an Eingangspunkt — index.bot

Objektspeicher
Jetzt, da wir eine erstellt haben Yandex-Funktion, lassen Sie uns, während wir in der Konsole sind, Yandex.Cloud, wir erstellen einen sogenannten Bucket (Bucket, d.h. einen Eimer auf Russisch, keineswegs ein Blumenstrauß) zur Speicherung von Bilddateien, die in unserem Bot verwendet werden sollen. Kluge Gedanken. Im linken Navigationsmenü wählen wir den Punkt Object Storage, klicken auf die Schaltfläche Einen Bucket erstellen, geben ihm einen Namen, zum Beispiel, img-bucket, und ganz wichtig, Leserechte für Objekte machen wir öffentlich — sonst sieht Telegram unsere Bilder nicht. Alle anderen Felder lassen wir unverändert. Wir klicken auf die Schaltfläche Einen Bucket erstellen.

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

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

Jetzt können wir auf den Ordnernamen klicken, um ihn zu öffnen und Dateien hochzuladen:

Und wenn wir auf den Dateinamen klicken, erhalten wir ihn URL zur Verwendung in unserem Bot und überhaupt — wo immer (aber veröffentlichen Sie dies nicht URL ohne Notwendigkeit, da der Traffic von Dem Objektspeicher kostenpflichtig ist).

Das ist also alles zum Objektspeicher. Jetzt wissen Sie, was zu tun ist, wenn Sie die Aufforderung sehen, Dateien dorthin hochzuladen.
Webhook
Jetzt werden wir den Webhook einrichten — d.h. wenn der Bot ein Update erhält (zum Beispiel eine Nachricht von einem Benutzer), wird vom Server Telegram an unsere Yandex-Funktion eine Anfrage (request) mit Daten gesendet. Hier ist der String, den Sie einfach in das Adressfeld des Browsers einfügen und dann die Seite aktualisieren können (dies müssen Sie nur einmal tun): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Ersetzen wir einfach {bot_token} mit dem Token, das wir von dem Bot-Vater bei der Erstellung unseres Bots erhalten haben, und {webhook_url} — mit URL unserem Yandex-Funktionen. Einen Moment! Aber RossKomZenzur verhindert, dass Anbieter in RF die Adresse bedienen. https://api.telegram.org. Ja, das stimmt. Aber Sie können sich etwas einfallen lassen. Sie können beispielsweise Ihre Großmutter in der Ukraine, Israel oder Kanada um Hilfe bitten — dort gibt es keine „Russischen Zensoren“, und nur Gott weiß, wie die Menschen ohne diese leben. Am Ende sollte die Anfrage-Antwort bei der Einrichtung des Webhooks so aussehen:

Wir testen es. Es sollte „spiegeln“.

So ist es. Unsere Glückwünsche — jetzt sind Sie Yandex-Funktion zoned storage Telegram-Bot!
Kluge Gedanken
Und jetzt erstellen wir Smarte Gedanken. Der Code ist offen und liegt auf . Er ist ziemlich gut kommentiert und enthält nur hundert Zeilen. Lesen Sie ihn wie eine Operndiva das Libretto!

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 alles so lassen, wie es ist). Erstellen Sie zip-Archiv mit der Datei index.js und dem Ordner node_modules darinnen, zum Beispiel unter dem Namen smart.zip.

Jetzt wechseln Sie in der Konsole zu unserer Yandex-Funktionen, wählen Sie den Tab ZIP-Archiv, klicken Sie auf die Schaltfläche Datei auswählen, und laden Sie unser Archiv hoch smart.zip. Schließlich klicken Sie in der oberen rechten Ecke 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 wider, sondern liefert kluge Gedanken!

Das ist alles für heute. Weitere Artikel folgen. Wer an solchen Themen interessiert ist, kann hier Benachrichtigungen über neue Artikel abonnieren oder auf Telegram-Kanal , oder Twitter .
Links
Spenden
Quelle: habr.com
