Telegram - bot | Menú completo

imagen

Tarde o temprano, en la vida de un desarrollador de bot de telegramas, hay un claro entendimiento de que todo es mortalmente necesario para crear menús más o menos completos para los bots.

Desde:

A) es conveniente
B) Conveniente para la personalización *

Nadie, por supuesto, canceló el "/ equipo", pero aún así

Esencia de la tarea.


A primera vista, la tarea es simple, pero no importa cómo. Todo el problema está en la API en, es decir, en el objeto Actualizar .
Un poco más de detalle: con el método getUpdate, obtienes un objeto Update, ¡es lógico! Entonces, este objeto contiene muchas cosas útiles, incluida información sobre el mensaje, pero solo sobre el último. Esta es la trampa
Con base en lo anterior, se sigue la conclusión no tan agradable: procesar solicitudes por webhook, sin almacenar datos adicionales, no brilla para nosotros ...

Bueno, nos lavamos y nos ponemos a trabajar.

Escribir código de aprendizaje


En su práctica, especialmente para esta tarea, se desarrolló una pequeña clase.

NUEVO! Ahora en github )

Si no puede esperar, puede ir inmediatamente al repositorio, hay una excursión allí.

Continuar


La clase crea una solicitud de solicitud.
Un poco sobre la estructura: se navega por el menú creando una solicitud de solicitud . Lo crea en el lugar correcto, y en la siguiente llamada de usuario , bam, y él está en el "menú".
Estoy de acuerdo, el concepto, después de eso, no se volvió comprensible ... Trataré de aclararlo. Para comprenderlo, debe ir a un cierto nivel de abstracción, es decir, imaginar que toda la estructura del bot consta de diferentes menús, entre los cuales el usuario cambia (puede hacer una analogía con la actividad de Android). Cuando se activa el bot, el usuario se encuentra en el "menú inicial", desde el cual puede ir, por ejemplo, en el menú "Configuración", "Información", etc.

imagen

Y así, la estructura del bot cambia un poco, en resumen:

Primero, verifique si la solicitud existe:

SÍ) Ejecute el controlador de solicitud
NO) Permanecemos en el "menú inicial", verificamos la respuesta del usuario con los comandos disponibles.

* Esta es una versión muy simplificada, por eso golpea la barra. Con ejemplos será más fácil.

Sigamos ..?


Comencemos con la instalación. Usaremos compser para instalarlo (cree "composer.json", luego copie las líneas a continuación, lea más en off.docs)

{ "require" : { "s0d3s/tg-long-req": ">=1" } } 

y conectar

 include_once('path/to/autoload.php'); use TgLongReq\TgLongReq; 

O conéctese manualmente (descargue a la carpeta del proyecto)

 include_once('TgLongReq.php'); use TgLongReq\TgLongReq; 

CREANDO UN OBJETO

 function SOMTH($tg_res, $long_req_obj, $tab_key){ echo "EveryForEveryone"; return; } $BOT_FUNC_ASSO_TAB = arrray("ECHO_SOMETHING" => "SOMTH"); // -      ,  -  -\  $tgreq = new TgLongReq ( $usr_id, //(STR) -id  $BOT_FUNC_ASSO_TAB, //(ARRAY) $BOT_req_dir , //[OPT](STR) $tapi, //[OPT](ANY*) $result //[OPT](ANY**) ); // *  ,    $this->tg_api // **  ,      

HAGA UNA SOLICITUD, COMPRUEBE SU DISPONIBILIDAD Y COMIENCE EL PROCESAMIENTO

 $tgreq -> ReqCreate('SOMTH');//  if($tgreq -> ReqCheck()){ // ,   ,       $tgreq -> ReqHand();// ,   } 

DATOS OCULTOS Y OBTENIDOS

guardar:

 $tgreq -> SaveToTemp('HiHabr');//  ,    json- 

restaurar:

 $tgreq -> GetFromTemp(false);//  -    ,    // ,    SaveToTemp() 

RESULTADO DE LA FUNCIÓN

Cabe señalar que cada [con la excepción de GetFromTemp (), GetError (), ReqCheck () y la función constructor], devuelve una matriz:

 /*$function_result = array( 'func_res' =>   'error' =>true,    'err_discript' => ,     ); */ 

ERRORES

Cada función [con la excepción de GetFromTemp (), GetError (), ReqCheck () y el constructor] establece un error en caso de falla, que se puede verificar con:

 $error_arr = $tgreq -> GetError(); /*$error_arr = array( 'error' =>true,    'err_discript' => ,     ); */ 

¡Todos reunidos, vete!


Asumiremos que está mínimamente familiarizado con la escritura de bots de telegramas; de lo contrario,% article %, lea el elemento " Escribir el código de bot ": el primer enlace en Google sobre un tema, puede buscarlo usted mismo, lo principal es descubrir cómo crear un bot en tg y configurarlo él a su servidor. Si es interesante, escribiré un artículo sobre cómo configurar un webhook para que funcione con un servidor local (¡NUEVO! Solución para evitar el "problema" con https).

Nos daremos cuenta de este ejemplo. Dividimos el espacio en dos archivos "botmain.php" (menú principal y procesamiento) y "varfunc.php" (funciones de procesamiento de solicitudes). Por ejemplo, usaremos telegram-bot-sdk (un proyecto bien hecho y diseñado, conveniente para proyectos pequeños, gracias al creador;).

En general, listado :

composer.json
 { "require" : { "irazasyed/telegram-bot-sdk": ">=3", "s0d3s/tg-long-req": ">=1", "php":">=7.1" } } 


A continuación, en la carpeta del proyecto, abra la consola y ...

 >composer install ... 

UPD : en el marco de Habr, el código fuente se vuelve ilegible, sin edición global. Debido a esto, si está interesado en ejemplos, le sugiero que cambie a github.

Original | Versión simplificada

Conclusión


Al final, solo puedo decir que esta no es la única solución posible a este problema, pero desde el punto de vista de la optimización para mí es un favorito.

Source: https://habr.com/ru/post/459604/


All Articles