Telegrama - bot | Menu completo

imagem

Mais cedo ou mais tarde, na vida de um desenvolvedor de bot de telegrama, existe um entendimento claro de que tudo é mortalmente necessário para criar menus mais ou menos completos para bots.

Desde:

A) é conveniente
B) Conveniente para personalização *

É claro que ninguém cancelou o "/ time", mas ainda assim

Essência da tarefa


À primeira vista - a tarefa é simples, mas não importa como. Todo o problema está na própria API, ou seja, no objeto Update .
Um pouco mais detalhadamente: usando o método getUpdate - você obtém um objeto Update, é lógico! Portanto, este objeto contém muitas coisas úteis, incluindo informações sobre a mensagem, mas apenas sobre a última. Essa é a pegadinha
Com base no exposto, segue-se a conclusão não tão agradável: processar solicitações pelo webhook, sem armazenar dados adicionais, não brilha para nós ...

Bem, nos lavamos e começamos a trabalhar.

Escrever código de aprendizagem


Em sua prática, especialmente para esta tarefa, uma pequena turma foi desenvolvida.

NOVO! Agora no github )

Se você não pode esperar, pode ir imediatamente ao repositório, há uma excursão por lá.

Continuar


A classe cria uma solicitação de solicitação
Um pouco sobre a estrutura: o menu é navegado criando uma solicitação de solicitação . Você o cria no lugar certo e, na próxima chamada de usuário , bam, e ele está no "menu".
Eu concordo, o conceito, depois disso, não se tornou compreensível ... Vou tentar esclarecer. Para entender, você precisa ir para um certo nível de abstração, ou seja, imagine que toda a estrutura do bot consiste em diferentes menus entre os quais o usuário alterna (você pode fazer uma analogia com a atividade do Android). Quando o bot é ativado, o usuário está no "menu inicial", do qual pode ir, por exemplo, no menu "Configurações", "Informações" e assim por diante.

imagem

E assim, a estrutura do bot muda um pouco, em resumo:

Primeiro, verifique se a solicitação existe:

SIM) Execute o manipulador de solicitações
NÃO) Permanecemos no "menu inicial", verificamos a resposta do usuário com os comandos disponíveis.

* Esta é uma versão muito simplificada, por isso bate na barra. Com exemplos, ficará mais fácil.

Vamos continuar ..?


Vamos começar com a instalação. Usaremos o compser para instalá- lo (crie "composer.json" e depois copie as linhas abaixo para ele, leia mais em off.docs)

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

e conectar

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

OU conecte-se manualmente (faça o download para a pasta do projeto)

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

CRIANDO UM 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 // **  ,      

FAÇA UM PEDIDO, VERIFIQUE A DISPONIBILIDADE E INICIE O PROCESSAMENTO

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

DADOS ESCONDIDOS E DE CHEGADA

salvar:

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

restaurar:

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

RESULTADO DA FUNÇÃO

Deve-se observar que cada função [com exceção das GetFromTemp (), GetError (), ReqCheck () e do construtor]] retorna uma matriz:

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

ERROS

Cada função [com exceção de GetFromTemp (), GetError (), ReqCheck () e o construtor] define um erro em caso de falha, que pode ser verificado com:

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

Todos reunidos, vão!


Vamos supor que você esteja minimamente familiarizado com a escrita de bots de telegrama, se não -% article %, leia o item " Escrevendo o código do bot " - o primeiro link no Google sobre um assunto, você pode procurar por si mesmo, o principal é descobrir como criar um bot em si e configurar ele para o seu servidor. Se for interessante, escreverei um artigo sobre como configurar um webhook para funcionar com um servidor local (~ NOVO! Solução para contornar o "problema" com https).

Vamos perceber esse exemplo. Dividimos o espaço em dois arquivos "botmain.php" (menu principal e processamento) e "varfunc.php" (funções de processamento de solicitações). Para facilitar o exemplo, usaremos o telegram-bot-sdk (um projeto bem feito e projetado, conveniente para pequenos projetos, graças ao criador;).

Em geral, listando :

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


Em seguida, na pasta do projeto, abra o console e ...

 >composer install ... 

UPD : No âmbito do Habr, o código fonte fica ilegível, sem edição global. Por esse motivo, se você estiver interessado em exemplos, sugiro que mude para o github.

Original Versão simplificada .

Conclusão


No final, só posso dizer que essa não é a única solução possível para esse problema, mas do ponto de vista da otimização para o ME é a favorita.

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


All Articles