我有一个使用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,并且可以提示用户输入,但是我不知道如何同时使用这两个值,并且在单个函数中使用这两个值。