Телеграмма-бот Python: запросить другой ввод - PullRequest
0 голосов
/ 16 октября 2018

У меня есть бот в Python, который предлагает пользователю выбрать из списка идентификаторов для изменения, и идея состоит в том, что пользователь выберет идентификатор и затем предоставит идентификатор, на который он хочет изменить.

Вот мой код:

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

Бот возвращает список идентификаторов, которые могутизменить (используя InlineKeyboardMarkup() и build_menu()

Пользователь выбирает один из идентификаторов

Бот запрашивает у пользователя новое значение

Следующее сообщение, которое пользователь отправляет наBot будет использовать значение

Bot будет использовать идентификатор, выбранный пользователем, а также новое значение и выполнить запрос для обновления в базе данных

Bot сообщит, что он обновил идентификатор с новым значением 'USER VALUE '

Проблема, с которой я сталкиваюсь, заключается в том, что я могу предложить пользователю выбрать идентификатор и предложить пользователю ввести данные, но я не знаю, как сделать оба и использовать оба значения в одномфункция.

...