我希望我的电报机器人等到用户用电报机器人和回调处理程序回答

fiendfire2807

我正在用电报机器人编写电报机器人。我有以下代码:

@bot.message_handler(commands=["play"])
def game(message):
    bot.send_message(message.chat.id, 'Start')
    process(message)
    process2(message)

def process(message):
    arr = ['Ans1', 'Ans2', 'Ans3', 'Ans4']
    ans = ['1', '2', '3', '4']
    keyboard = keyboard_gen(arr, ans)
    bot.send_message(message.chat.id, text = 'Question1', reply_markup=keyboard)

def process2(message):
    pass

@bot.callback_query_handler(func=lambda call: True) 
def callback_worker(call):
    if call.data == 1:
        bot.send_message(call.message.chat.id, 'True')
    if call.data in [2, 3, 4]:
        bot.send_message(call.message.chat.id, 'False')

keyboard_gen生成键盘。我需要process1让用户在启动process2之前在过程中选择正确的选项。有什么办法吗?我的代码立即启动process2,但是我必须确保用户选择正确的选项。

阿里·帕迪达(Ali Padida)

不建议使用这种处理电报机器人的方法。因为每个更新都是一个单独的请求。

您需要使用数据库来存储用户状态并基于该状态进行回复。

但是在这里,您可以进入process2内部callback_worker并在if条件之后调用它。

@bot.callback_query_handler(func=lambda call: True) 
def callback_worker(call):
    if call.data == 1:
        bot.send_message(call.message.chat.id, 'True')
    if call.data in [2, 3, 4]:
        bot.send_message(call.message.chat.id, 'False')
    process2()

另外message,如果您提到要使用process2()的解决方案可能有所不同,则应该从中删除参数

在此处查看有关将用户存储state在数据库中的答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章