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çãoUm 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.

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");
FAÇA UM PEDIDO, VERIFIQUE A DISPONIBILIDADE E INICIE O PROCESSAMENTO $tgreq -> ReqCreate('SOMTH');
DADOS ESCONDIDOS E DE CHEGADAsalvar:
$tgreq -> SaveToTemp('HiHabr');
restaurar:
$tgreq -> GetFromTemp(false);
RESULTADO DA FUNÇÃODeve-se observar que cada função [com exceção das GetFromTemp (), GetError (), ReqCheck () e do construtor]] retorna uma matriz:
ERROSCada 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();
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.