当前位置: 首页 > 知识库问答 >
问题:

使用ForceReply选项从用户那里获取输入,但电报中没有回复界面

司寇经亘
2023-03-14

我们知道,在电报api中有ForceReply选项来获取用户的输入。

电报说:

收到带有此对象的消息后,Telegram客户端将向用户显示一个回复界面(就好像用户已经选择了机器人的消息并点击了“回复”一样)。如果您想创建用户友好的分步界面而不必牺牲隐私模式,这将非常有用。

现在,我使用irazasyed/telegram-bot sdk来制作我的电报机器人。在该包中,要创建一个force_reply界面,我们应该这样做:

$forceReply = Keyboard::forceReply(['force_reply' => true]);

$this->replyWithMessage([
    'text'         => 'Please enter your name ?',
    'reply_markup' => $forceReply
]);

结果如下:

但在其他bot(例如使用此选项的PollBot)中的用法中,当显示问题并希望获得答案时,不会显示回复界面。

我想做同样的事情。我知道如果我将force_reply的值设置为false,它就完成了,但我不知道之后如何检测用户输入的文本与我的问题有关。

我到底在做什么?

共有1个答案

柳项明
2023-03-14

我为上一个机器人所做的是:

我为用户历史创建了一个表,其中保存了一些关于用户的信息,如用户名和chat\u id,我还在last\u state列中跟踪用户的最后状态

所以当向用户提问时,我用当前状态更新数据库中的状态字段,接下来的答案是针对用户最后一个状态的问题,让我用一个简单的例子。

A: 具有chat\u id n的用户的Prompt问题x

B:更新DB中chat_idn等于x的用户状态

C: 得到答案

D: 获取chat\u id,然后从数据库中获取她的最后一个状态,该状态表示问题

现在你知道她在回答哪个问题了

检查我开发的这个机器人:@TunnelCSBot

 类似资料:
  • 问题内容: 我想编写一个程序,获取多个行输入并逐行处理它。为什么没有像Python 3那样的函数? 不允许用户使用换行符()分隔行,它仅打印回第一行。 可以将其存储在变量中,甚至可以将其读取到列表中吗? 问题答案: 在Python 3.x中,Python 2.x的功能已被替换。但是,在两种情况下,您都无法输入多行字符串,为此,您需要从用户行中逐行获取输入,然后使用来进行输入,或者您也可以采用多种行

  • 我有这个项目和一些关于如何做的问题。下一步()。nextInt()。hasNext()和。hasNextInt()是Scanner类工作的一部分。提前感谢您的任何帮助:) 1/什么时候!安慰hasNextInt()是第一次执行,为什么它会要求输入? 我一开始以为控制台是空的,所以!console.hasNextInt()是True(空不是int),然后它应该直接从“请输入您的年龄:”转到“请重新输

  • 如果我在Instagram上有粉丝关注我的内容,并且在网上也有注册用户,有没有办法将两者联系起来? 有没有办法发现Instagram上的一个用户是否喜欢一张照片,并看看那个用户是否在我的网站上注册了?

  • 我试图编写java代码,从用户输入中获取十个整数。然后我必须找到重复的数字。 “为什么我仍然会出错?

  • 更新:我尝试硬编码密码并让用户输入,它只是跳过了输入部分,如下所示: 因此,服务器似乎自动获得对密码的响应,并像这样进行,执行也像这样: 如有任何帮助,不胜感激。

  • 如何使用注册为频道管理员的机器人访问电报频道消息? 我试图从电报频道获取所有信息,并在ASP.NET网页上显示出来(c#) 当新消息直接发送到机器人时,我能够获得更新: 但它不适用于该频道。