Serverloser Telegrammbot mit Yandex Cloud

Hallo! Mein Name ist Viktor Pawlow und ich bin Praktikant für Informatik an einem der Colleges in Russland. Daher versuchen wir für Studenten, die neuesten Technologien in den Bildungsprozess einzuführen, und "Serverless" -Bots sind einer dieser Bereiche.



Dieser Artikel ist inspiriert von der Beliebtheit der Ressource bei studentischen Programmierern, aber ich werde versuchen, alles für sehr unerfahrene Programmierer so einfach wie möglich zu erzählen. Als Ergebnis erstellen wir einen einfachen Echo-Bot als Vorlage für verschiedene Änderungen.



PS Außerdem ist der Artikel vom Fehlen eines Tutorials in Python inspiriert. Es gibt ein gutes Tutorial zu Nodejs .



Link zur

Dokumentation zu Yandex Cloud-Funktionen Link zur Dokumentation zur Telegramm-API .






Schritt 1 : Registrierung und Anmeldung bei der Yandex Cloud- Plattform



Hinweis
. , Serverless VPS. «» .



Schritt 2 : Funktionen eingeben. Hier müssen Sie im linken Bereich der "Management Console" "Cloud-Funktionen" auswählen.



Bild



Schritt 3 : Drücken Sie die Taste Bild. Dann setzen wir einen aussagekräftigen Funktionsnamen und eine Beschreibung.



Rat
< >-<>-<>.



telegram-study-bot, weather-get-api ..



. language=python3.7, lib=telebot



Schritt 4 : Wählen Sie die Registerkarte "Editor".



Bild



Danach öffnen wir ein Fenster zur Verwaltung des Codes unserer Funktion. Hier können wir wählen:



1) "Runtime", in unserem Fall ist es Python3.7



Über Abhängigkeiten
preview , ( 02.10.2020 )



2) "Wege" sind dafür verantwortlich, wie der Code an die Funktion übergeben wird. In diesem Artikel verwenden wir den einfachen Code-Editor als einfachstes Beispiel.



3) "Einstiegspunkt" ist dafür verantwortlich, welche Funktion die Anfrage erhält und der Beginn der Aktion unserer Funktion ist. Wir werden dies etwas später angeben.



4) Als nächstes kommen die "Parameter", ich schlage vor, sie so zu lassen, wie sie sind.



Wenn Sie Berechtigungen verwenden möchten
, , .



Schritt 5 : Stellen Sie sicher, dass wir die richtige Einstellung für "Laufzeit" und "Methode" haben.



Bild



Klicken Sie dann auf "Datei erstellen" und nennen Sie sie main.py.



Schritt 6 : Dies öffnet den Code-Editor, in dem wir eine Request-Handler-Funktion erstellen können. Nennen wir es Handler und fügen diesen Code ein:



import json

def handler(event, context):
    body = json.loads(event['body'])
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'application/json'
        },
        'body': json.dumps({
            'method': 'sendMessage',
            'chat_id': body['message']['chat']['id'],
            'text':  body['message']['text']
        }),
        'isBase64Encoded': False
    }


Analysieren Sie den Code
«json», body json- python dict.



handler , , . .



body Python json.loads body .



, webhook telegram , body, json.dumps, .



BEACHTUNG!!!



Im "Einstiegspunkt" müssen Sie diese Funktion als Anfang des Skripts angeben. Wir schreiben main.handler . Es sollte so aussehen:



Bild



Dann klicken wir auf "Version erstellen" und warten, bis wir zur Registerkarte "Übersicht" weitergeleitet werden.



Schritt 7 : Hier interessieren uns der "Link to call" und der Schalter "Public function". Wir drücken den Schalter und merken uns, wo sich der Link für den Anruf befindet.



Bild



Schritt 8 : Erstellen Sie einen Telegramm-Bot und kopieren Sie dessen Token. Sie müssen eine Abfrage erstellen wie:



https://api.telegram.org/bot<bot_token>/setWebHook?url=<webhook_url>


Wobei bot_token Ihr Telegramm-Bot-Token ist und webhook_url der "Anruflink" von Funktionen (Schritt 7). Diese Anfrage sollte gesammelt und in die Browserzeile eingefügt werden.



Beispiel anfordern
https://api.telegram.org/bot1234567:AAAAAAAAAAAAAAA/setWebHook?url=https://functions.yandexcloud.net/asdjaskjdasdjasd




Schritt 9 : Senden Sie "Hallo" an den Bot und sehen Sie, was wir am Ende bekommen haben.



Bild



Vielen Dank für Ihre Aufmerksamkeit! Wenn Sie diesen Artikel gelesen haben, freue ich mich über verschiedene Vorschläge zur Verbesserung / Hinzufügung / Kommentierung dieses Artikels.



All Articles