accessing user_data from arbitrary user
I need to access the user_data from a tgUser who is not the message author. So I think I cannot use the pass_user_data method.
It follows some example code (which I haven't tested, it's just for claryfication). Imagine the bot is in some chat group and the one who /ask is not the one who presses a button:
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()
This will lead to an exception as user_data in 'button' is not the user_data in 'ask'. In 'button' it is intended to change the user_data from 'ask', not the one from the button presser. So how can I reach the right user_data?
python-telegram-bot
add a comment |
I need to access the user_data from a tgUser who is not the message author. So I think I cannot use the pass_user_data method.
It follows some example code (which I haven't tested, it's just for claryfication). Imagine the bot is in some chat group and the one who /ask is not the one who presses a button:
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()
This will lead to an exception as user_data in 'button' is not the user_data in 'ask'. In 'button' it is intended to change the user_data from 'ask', not the one from the button presser. So how can I reach the right user_data?
python-telegram-bot
add a comment |
I need to access the user_data from a tgUser who is not the message author. So I think I cannot use the pass_user_data method.
It follows some example code (which I haven't tested, it's just for claryfication). Imagine the bot is in some chat group and the one who /ask is not the one who presses a button:
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()
This will lead to an exception as user_data in 'button' is not the user_data in 'ask'. In 'button' it is intended to change the user_data from 'ask', not the one from the button presser. So how can I reach the right user_data?
python-telegram-bot
I need to access the user_data from a tgUser who is not the message author. So I think I cannot use the pass_user_data method.
It follows some example code (which I haven't tested, it's just for claryfication). Imagine the bot is in some chat group and the one who /ask is not the one who presses a button:
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()
This will lead to an exception as user_data in 'button' is not the user_data in 'ask'. In 'button' it is intended to change the user_data from 'ask', not the one from the button presser. So how can I reach the right user_data?
python-telegram-bot
python-telegram-bot
asked Dec 28 '18 at 12:54
LumpiLumpi
13
13
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53958932%2faccessing-user-data-from-arbitrary-user%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53958932%2faccessing-user-data-from-arbitrary-user%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown