Python telegram-bot:提示再次输入

时间:2018-10-15 22:43:38

标签: python telegram telegram-bot python-telegram-bot

我有一个使用Python的机器人,它提示用户从要更改的ID列表中进行选择,其想法是用户将选择ID,然后提供他们想要更改的ID。

这是我的代码:

def build_menu(buttons, n_cols):
    menu = [buttons[i:i + n_cols] for i in range(0, len(buttons), n_cols)]
    return menu

def change_process(bot, update):
    global action
    query = update.callback_query
    NAME = query.data
    if action == 'Change':
        # Prompt user for new value
        # run sql query to update 

def change(bot, update, args):
    global action
    action = 'Change'
    sql = sqlite3.connect('SQL_FILE.db',detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
    cur = sql.cursor()
    button_list = [InlineKeyboardButton(s[0], callback_data=s[0]) for s in cur.execute('SELECT Name FROM ID ORDER BY Name ASC')]
    reply_markup = InlineKeyboardMarkup(build_menu(button_list, n_cols=3))
    update.message.reply_text('ID to change:', reply_markup=reply_markup)

action = None
updater = Updater(token='XXXX:XXXX')
dispatcher = updater.dispatcher

dispatcher.add_handler(CallbackQueryHandler(change_process))

arg_handler = CommandHandler('change', change, pass_args=True)
dispatcher.add_handler(arg_handler)

这是我希望程序运行的方式:

用户运行/change

Bot返回可以更改的ID列表(使用InlineKeyboardMarkup()build_menu()

用户选择一个ID

启动提示用户输入新值

用户发送给机器人的下一条消息将是要使用的值

Bot将使用用户选择的ID以及新值并运行查询以在数据库中更新

批注说它用新值“ USER VALUE”更新了ID

我遇到的问题是我可以提示用户选择ID,并且可以提示用户输入,但是我不知道如何同时使用这两个值,并且在单个函数中使用这两个值。

1 个答案:

答案 0 :(得分:1)

我相信您需要查看python-telegram-bot库提供的conversation examples

也有一些图表说明了向用户询问数据的流程。