TÎt ou tard, dans la vie d'un développeur de bots de télégrammes, il est clair que
tout est mortellement nécessaire pour créer des menus plus ou moins complets pour les bots.
Depuis:
A) C'est pratique
B) Pratique pour la personnalisation *
Personne, bien sûr, n'a annulé "/ team", mais
Essence de la tĂąche
Ă premiĂšre vue - la tĂąche est simple, mais peu importe comment. Tout le
problĂšme est dans l'
API elle
- mĂȘme
, Ă savoir dans l'objet Update .
Un peu plus de détails: en utilisant la méthode getUpdate - vous obtenez un objet Update, c'est logique! Donc, cet objet contient beaucoup de choses utiles, y compris des informations sur le message, mais seulement sur la derniÚre. C'est le hic
Sur la base de ce qui précÚde, la conclusion n'est pas si agréable: le traitement des demandes par webhook, sans stocker de données supplémentaires, ne brille pas pour nous ...
Eh bien, on se lave et on se met au travail.
Ăcrire un code d'apprentissage
Dans leur pratique, spécialement pour cette tùche, une petite classe a été développée.
NOUVEAU! Maintenant sur
github )
Si vous ne pouvez pas attendre, vous pouvez immédiatement vous rendre au référentiel, il y a une excursion là -bas.
Continuez
La classe crée une
demande de demandeUn peu sur la structure: Le menu est parcouru en créant une demande de demande . Vous le créez au bon endroit, et au prochain appel de l' utilisateur , bam, et il est dans le «menu».
Je suis d'accord, le concept, aprÚs cela, n'est pas devenu compréhensible ... Je vais essayer de clarifier. Pour comprendre, vous devez aller à un certain niveau d'abstraction, c'est-à -dire imaginer que la structure entiÚre du bot se compose de différents menus entre lesquels l'utilisateur bascule (vous pouvez faire une analogie avec l'activité Android). Lorsque le bot est activé, l'utilisateur se trouve dans le "menu initial", à partir duquel il peut aller, par exemple, dans le menu "ParamÚtres", "Informations", etc.

Et donc, la structure du bot change un peu, en bref:
Vérifiez d'abord si la demande existe:
OUI) ExĂ©cutez le gestionnaire de requĂȘtes
NON) Nous restons dans le "menu initial", nous vérifions la réponse de l'utilisateur avec les commandes disponibles.
* Ceci est une version trÚs simplifiée, à cause de cela, elle frappe la barre. Avec des exemples, cela deviendra plus facile.
Continuons ..?
Commençons par l'installation. Nous allons utiliser un
compser pour l'installer (créer "composer.json", puis copier les lignes ci-dessous, en savoir plus dans off.docs)
{ "require" : { "s0d3s/tg-long-req": ">=1" } }
et connectez
include_once('path/to/autoload.php'); use TgLongReq\TgLongReq;
OU connectez-vous manuellement (téléchargez dans le dossier du projet)
include_once('TgLongReq.php'); use TgLongReq\TgLongReq;
CRĂER UN OBJET function SOMTH($tg_res, $long_req_obj, $tab_key){ echo "EveryForEveryone"; return; } $BOT_FUNC_ASSO_TAB = arrray("ECHO_SOMETHING" => "SOMTH");
FAIRE UNE DEMANDE, VĂRIFIER LA DISPONIBILITĂ ET COMMENCER LE TRAITEMENT $tgreq -> ReqCreate('SOMTH');
CACHĂ ET OBTENIR DES DONNĂES DE TEMPSenregistrer:
$tgreq -> SaveToTemp('HiHabr');
restaurer:
$tgreq -> GetFromTemp(false);
RĂSULTAT DE LA FONCTIONIl convient de noter que chaque fonction [Ă l'exception de GetFromTemp (), GetError (), ReqCheck () et du constructeur], renvoie un tableau:
ERREURSChaque fonction [Ă l'exception de GetFromTemp (), GetError (), ReqCheck () et le constructeur] dĂ©finit une erreur en cas d'Ă©chec, qui peut ĂȘtre vĂ©rifiĂ©e avec:
$error_arr = $tgreq -> GetError();
Tous réunis, partez!
Nous supposerons que vous ĂȘtes peu familiarisĂ© avec l'Ă©criture de robots tĂ©lĂ©grammes, sinon -%
article %, lisez jusqu'Ă l'article "
Ăcriture du code bot " - le premier lien dans Google sur un sujet, vous pouvez rechercher par vous-mĂȘme, l'essentiel est de savoir comment crĂ©er un bot dans tg lui-mĂȘme, et configurer lui Ă votre serveur. Si c'est intĂ©ressant, j'Ă©crirai un article sur la façon de configurer un webhook pour fonctionner avec un serveur local (~ NOUVEAU! Solution pour contourner le "problĂšme" avec https).
Nous rĂ©aliserons cet exemple. Nous divisons l'espace en deux fichiers «botmain.php» (menu principal et traitement) et «varfunc.php» (fonctions de traitement des requĂȘtes). Pour faciliter l'exemple, nous utiliserons
telegram-bot-sdk (un projet bien conçu et bien conçu, pratique pour les petits projets, grùce au créateur;).
En général, la
liste :
composer.json { "require" : { "irazasyed/telegram-bot-sdk": ">=3", "s0d3s/tg-long-req": ">=1", "php":">=7.1" } }
Ensuite, dans le dossier du projet, ouvrez la console et ...
>composer install ...
UPD : Dans le cadre de Habr, le code source devient illisible, sans modification globale. Pour cette raison, si vous ĂȘtes intĂ©ressĂ© par des exemples, je vous suggĂšre de passer Ă github.
Original |
Version simplifiée .
Conclusion
En fin de compte, je peux seulement dire que ce n'est pas la seule solution possible à ce problÚme, mais du point de vue de l'optimalité pour ME, c'est un favori.