Мне нужно получить доступ к 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?