доступ к user_data от произвольного пользователя - PullRequest
0 голосов
/ 28 декабря 2018

Мне нужно получить доступ к user_data от пользователя tgUser, который не является автором сообщения.Поэтому я думаю, что не могу использовать метод pass_user_data.

Он следует некоторому примеру кода (который я не проверял, он только для уточнения).Представьте, что бот находится в какой-то группе чата, и тот, кто / спрашивает, не тот, кто нажимает кнопку:

def ask(bot, update, user_data):
    keyboard = [[InlineKeyboardButton("Yes", callback_data=str(update.effective_user.id),
                 InlineKeyboardButton("No", callback_data='n')]]
    reply_markup = InlineKeyboardMarkup(keyboard)
    update.message.reply_text('You like him/her?', reply_markup=reply_markup)

    # save some data which I want to retrieve/change
    # when a button was pressed by another user
    user_data['likes'] = 0


def button(bot, update, user_data):
    query = update.callback_query
    query.answer()

    # here I want to change the user_data from the tgUser who did /ask
    # I don't want to change the user_data from the tgUser who pressed the button
    # so this will lead to some exception because it's not the user_data I want to access...
    if query.data != 'n':
        # actually I want to access the user_data from user id int(query.data)
        user_data['likes'] += 1

updater = Updater("TOKEN")
updater.dispatcher.add_handler(CommandHandler('ask', ask, pass_user_data=True))
updater.dispatcher.add_handler(CallbackQueryHandler(button, pass_user_data=True))
updater.start_polling()
updater.idle()

Это приведет к исключению, поскольку user_data в 'button' не является user_data в 'просить'.В «кнопке» она предназначена для того, чтобы изменить user_data с «спросить», а не с нажатия кнопки.Итак, как я могу получить правильные user_data?

...