Früher oder später, im Leben eines Telegramm-Bot-Entwicklers, besteht ein klares Verständnis dafür, dass
alles tödlich notwendig ist, um mehr oder weniger vollständige Menüs für Bots zu erstellen.
Als:
A) Es ist bequem
B) Praktisch für die Anpassung *
Natürlich hat niemand das "/ team" abgesagt, aber trotzdem
Essenz der Aufgabe
Auf den ersten Blick - die Aufgabe ist einfach, aber egal wie. Das ganze
Problem liegt in der
API selbst
, nämlich im Update-Objekt .
Ein bisschen mehr Details: Mit der getUpdate-Methode erhalten Sie ein Update-Objekt. Das ist logisch! Dieses Objekt enthält also viele nützliche Dinge, einschließlich Informationen über die Nachricht, aber nur über die letzte. Das ist der Haken
Auf der Grundlage des oben Gesagten folgt die nicht so angenehme Schlussfolgerung: Die Bearbeitung von Anfragen per Webhook ohne Speicherung zusätzlicher Daten scheint für uns nicht ...
Nun, wir waschen uns und machen uns an die Arbeit.
Lerncode schreiben
In ihrer Praxis wurde speziell für diese Aufgabe eine kleine Klasse entwickelt.
NEU! Jetzt auf
Github )
Wenn Sie nicht warten können, können Sie sofort zum Repository gehen. Dort gibt es einen Ausflug.
Weiter
Die Klasse erstellt eine
AnforderungsanforderungEin wenig zur Struktur: Das Menü wird durch Erstellen einer Anfrage für eine Anfrage navigiert. Sie erstellen es an der richtigen Stelle und beim nächsten Benutzeranruf bam, und er befindet sich im „Menü“.
Ich stimme zu, das Konzept wurde danach nicht verständlich ... Ich werde versuchen zu klären. Um dies zu verstehen, müssen Sie zu einer bestimmten Abstraktionsebene gehen, dh stellen Sie sich vor, dass die gesamte Struktur des Bots aus verschiedenen Menüs besteht, zwischen denen der Benutzer wechselt (Sie können eine Analogie zur Android-Aktivität ziehen). Wenn der Bot aktiviert ist, befindet sich der Benutzer im "Startmenü", von dem aus er beispielsweise im Menü "Einstellungen", "Informationen" usw. aufrufen kann.

Und so ändert sich die Struktur des Bots ein wenig, kurz gesagt:
Überprüfen Sie zunächst, ob die Anforderung vorhanden ist:
JA) Führen Sie den Anforderungshandler aus
NEIN) Wir bleiben im "Startmenü", wir überprüfen die Antwort des Benutzers mit den verfügbaren Befehlen.
* Dies ist eine sehr vereinfachte Version, aus diesem Grund klopft es an die Latte. Mit Beispielen wird es einfacher.
Lass uns weitermachen ..?
Beginnen wir mit der Installation. Wir werden den
Compser verwenden , um
es zu installieren (erstellen Sie "composer.json", kopieren Sie dann die folgenden Zeilen hinein, lesen Sie mehr in off.docs).
{ "require" : { "s0d3s/tg-long-req": ">=1" } }
und verbinden
include_once('path/to/autoload.php'); use TgLongReq\TgLongReq;
ODER manuell verbinden (in den Projektordner herunterladen)
include_once('TgLongReq.php'); use TgLongReq\TgLongReq;
EIN OBJEKT ERSTELLEN function SOMTH($tg_res, $long_req_obj, $tab_key){ echo "EveryForEveryone"; return; } $BOT_FUNC_ASSO_TAB = arrray("ECHO_SOMETHING" => "SOMTH");
Stellen Sie eine Anfrage, überprüfen Sie die Verfügbarkeit und beginnen Sie mit der Verarbeitung $tgreq -> ReqCreate('SOMTH');
VERSTECKTE UND ZEITDATEN ERHALTENSpeichern:
$tgreq -> SaveToTemp('HiHabr');
wiederherstellen:
$tgreq -> GetFromTemp(false);
FUNKTIONSERGEBNISEs ist zu beachten, dass jede [mit Ausnahme von GetFromTemp (), GetError (), ReqCheck () und dem Konstruktor] -Funktion ein Array zurückgibt:
FEHLERJede Funktion [mit Ausnahme von GetFromTemp (), GetError (), ReqCheck () und dem Konstruktor] setzt im Fehlerfall einen Fehler, der überprüft werden kann mit:
$error_arr = $tgreq -> GetError();
Alles versammelt, geh!
Wir gehen davon aus, dass Sie mit dem Schreiben von Telegramm-Bots nur minimal vertraut sind. Wenn nicht -%
article %, lesen Sie bis zum Punkt "
Schreiben des Bot-Codes " - den ersten Link in Google zu einem Thema, den Sie selbst suchen können. Die Hauptsache ist, herauszufinden, wie Sie einen Bot in tg selbst erstellen und konfigurieren ihn zu Ihrem Server. Wenn es interessant ist, schreibe ich einen Artikel darüber, wie ein Webhook für die Arbeit mit einem lokalen Server konfiguriert wird (~ NEU! Lösung zur Umgehung des "Problems" mit https).
Wir werden dieses Beispiel realisieren. Wir teilen den Raum in zwei Dateien "botmain.php" (Hauptmenü und Verarbeitung) und "varfunc.php" (Anforderungsverarbeitungsfunktionen). Zur Vereinfachung verwenden wir beispielsweise
telegram-bot-sdk (ein gut gemachtes und gestaltetes Projekt, das dank des Erstellers für kleine Projekte geeignet ist;).
Im Allgemeinen
Auflistung :
composer.json { "require" : { "irazasyed/telegram-bot-sdk": ">=3", "s0d3s/tg-long-req": ">=1", "php":">=7.1" } }
Öffnen Sie anschließend im Projektordner die Konsole und ...
>composer install ...
UPD : Innerhalb der Grenzen von Habr wird der Quellcode ohne globale Bearbeitung unlesbar. Wenn Sie an Beispielen interessiert sind, empfehle ich Ihnen daher, zu Github zu wechseln.
Original |
Vereinfachte Version .
Fazit
Am Ende kann ich nur sagen, dass dies nicht die einzig mögliche Lösung für dieses Problem ist, aber unter dem Gesichtspunkt der Optimalität für ME ein Favorit ist.