【问题标题】:Python telegram-bot: Prompt for another inputPython电报机器人:提示另一个输入
【发布时间】: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


    【解决方案1】:

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

    还有一些图表解释了向用户询问数据的流程。

    【讨论】:

      猜你喜欢
      • 2021-09-09
      • 2020-10-28
      • 1970-01-01
      • 2017-08-18
      • 2022-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      相关资源
      最近更新 更多