早在电信机器人开发人员的生活中,就有一个清晰的认识,那
就是为机器人创建更多或更少的完整菜单至关重要。
由于:
A)很方便
B)方便定制*
当然没有人取消“ / team”,但仍然
任务的实质
乍一看-任务很简单,但是无论如何。 整个
问题在于 API本身
,即Update对象 。
更详细一点:使用getUpdate方法-您将获得一个Update对象,这很合逻辑! 因此,此对象包含许多有用的内容,包括有关消息的信息,但仅涉及最后一个信息。 这是要抓的
基于上述内容,得出的结论不太令人满意-通过webhook处理请求,而不存储其他数据,对我们来说并不乐观...
好吧,我们自己洗手,然后开始工作。
编写学习代码
在他们的实践中,特别是为此任务,开发了一个小班。
新! 现在在
github上 )
如果您迫不及待,可以立即前往存储库,那里有个游览。
继续
该类创建一个
请求请求关于结构的一些知识:通过为request创建一个请求来浏览菜单。 您在正确的位置创建它,然后在下一个用户调用bam处创建它,他位于“菜单”中。
我同意,在那之后,这个概念就变得无法理解了……我将尽力澄清。 要理解,您需要进行一定程度的抽象,即,假设机器人的整个结构由不同的菜单组成,用户可以在菜单之间进行切换(可以用android活动来类推)。 激活机器人后,用户将进入“初始菜单”,例如,可以进入菜单“设置”,“信息”等。

简而言之,机器人的结构有所变化:
首先,检查请求是否存在:
是)运行请求处理程序
否)我们保留在“初始菜单”中,我们使用可用命令检查用户的响应。
*这是一个非常简化的版本,因为它会破坏标准。 有了示例,它将变得更加容易。
让我们继续..?
让我们从安装开始。 我们将使用
compser进行安装(创建“ composer.json”,然后将下面的行复制到其中,在off.docs中阅读更多内容)
{ "require" : { "s0d3s/tg-long-req": ">=1" } }
并连接
include_once('path/to/autoload.php'); use TgLongReq\TgLongReq;
或手动连接(下载到项目文件夹)
include_once('TgLongReq.php'); use TgLongReq\TgLongReq;
创建对象 function SOMTH($tg_res, $long_req_obj, $tab_key){ echo "EveryForEveryone"; return; } $BOT_FUNC_ASSO_TAB = arrray("ECHO_SOMETHING" => "SOMTH");
提出要求,检查其可用性并开始处理 $tgreq -> ReqCreate('SOMTH');
隐藏和获取时间数据保存:
$tgreq -> SaveToTemp('HiHabr');
恢复:
$tgreq -> GetFromTemp(false);
功能结果应该注意的是,每个函数[GetFromTemp(),GetError(),ReqCheck()和构造函数除外)都返回一个数组:
错误每个函数[GetFromTemp(),GetError(),ReqCheck()和构造函数除外)都会在发生错误的情况下设置错误,可以使用以下方法进行检查:
$error_arr = $tgreq -> GetError();
聚集了,走!
我们假设您最不熟悉编写电报机器人,如果不是-%
article %,请阅读“
编写机器人代码 ”一文-Google在该主题上的第一个链接,您可以自己搜索,主要是要了解如何在tg本身中创建机器人,并进行配置他到您的服务器。 如果有趣的话,我将写一篇文章,介绍如何配置Webhook以与本地服务器一起使用(〜NEW!绕过https问题的解决方案)。
我们将认识到这个例子。 我们将空间分为两个文件“ botmain.php”(主菜单和处理)和“ varfunc.php”(请求处理功能)。 为了简单起见,我们将使用
telegram-bot-sdk (一个精心设计的项目,感谢创建者,对小型项目很方便;)。
通常,
列出 :
composer.json { "require" : { "irazasyed/telegram-bot-sdk": ">=3", "s0d3s/tg-long-req": ">=1", "php":">=7.1" } }
接下来,在项目文件夹中,打开控制台并...
>composer install ...
UPD :在Habr的框架内,如果不进行全局编辑,则源代码变得不可读。 因此,如果您对示例感兴趣,建议您切换到github。
原创 |
简化版 。
结论
最后,我只能说这不是解决这个问题的唯一可能的方法,但是从ME的最佳角度来看,它是最受欢迎的。