电报-机器人| 全菜单

图片

早在电信机器人开发人员的生活中,就有一个清晰的认识,那就是为机器人创建更多或更少的完整菜单至关重要。

由于:

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 = 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 // **  ,      

提出要求,检查其可用性并开始处理

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

隐藏和获取时间数据

保存:

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

恢复:

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

功能结果

应该注意的是,每个函数[GetFromTemp(),GetError(),ReqCheck()和构造函数除外)都返回一个数组:

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

错误

每个函数[GetFromTemp(),GetError(),ReqCheck()和构造函数除外)都会在发生错误的情况下设置错误,可以使用以下方法进行检查:

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

聚集了,走!


我们假设您最不熟悉编写电报机器人,如果不是-% 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的最佳角度来看,它是最受欢迎的。

Source: https://habr.com/ru/post/zh-CN459604/


All Articles