编程语言
首页 > 编程语言> > python – 在某些消息电报机器人之后保存用户输入

python – 在某些消息电报机器人之后保存用户输入

作者:互联网

我正在python上构建一些电报机器人(使用这个框架pyTelegramBotAPI).我用用户输入遇到了问题.在某些bot消息之后我需要保存用户输入(可以是任何文本).例如:

Bot: – Please describe your problem.

User: – Our computer doesn’t work.

然后我需要将此文本“我们的计算机无法正常工作”保存到某个变量并转到下一步.
这是我的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import telebot
import constants
from telebot import types

bot = telebot.TeleBot(constants.token)

@bot.message_handler(commands=['start'])
def handle_start(message):
    keyboard = types.InlineKeyboardMarkup()
    callback_button = types.InlineKeyboardButton(text="Help me!", callback_data="start")
    keyboard.add(callback_button)
    bot.send_message(message.chat.id, "Welcome I am helper bot!", reply_markup=keyboard)



@bot.inline_handler(lambda query: len(query.query) > 0)
def query_text(query):
    kb = types.InlineKeyboardMarkup()
    kb.add(types.InlineKeyboardButton(text="Help me!", callback_data="start"))
    results = []
    single_msg = types.InlineQueryResultArticle(
        id="1", title="Press me",
        input_message_content=types.InputTextMessageContent(message_text="Welcome I am helper bot!"),
        reply_markup=kb
    )
    results.append(single_msg)
    bot.answer_inline_query(query.id, results)

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    if call.message:
        if call.data == "start":
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Please describe your problem.")
            #here I need wait for user text response, save it and go to the next step

我有在语句中使用message_id的想法,但仍然无法实现它.我怎么能解决这个问题?有任何想法吗?谢谢.

解决方法:

它不是python甚至编程相关的问题.它更像是设计问题.但无论如何.
解决方案是为用户保留会话.例如用户发送给你:

Our computer doesn’t work.

首先,您为该用户创建一个会话(该标识应该是用户ID)然后向他/她发送正确的消息.当用户首先发送下一条消息时,您会查看用户状态并查看他/她是否有会话.如果他/她有会话,你继续第二步.我开发这样的机器人并使用字典来存储用户会话.但它使一切都变得复杂.

标签:python,telegram-bot,user-interaction,python-telegram-bot
来源: https://codeday.me/bug/20190627/1307307.html