【发布时间】:2018-10-15 22:43:38
【问题描述】:
我有一个 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 以及新值并运行查询以在数据库中更新
Bot cmets 用 'USER VALUE' 的新值更新了 ID
我遇到的问题是我可以提示用户选择 ID,我可以提示用户输入,但我不知道如何在一个函数中同时使用这两个值。
【问题讨论】:
标签: python telegram telegram-bot python-telegram-bot