accessing user_data from arbitrary user












0















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?










share|improve this question



























    0















    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?










    share|improve this question

























      0












      0








      0








      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?










      share|improve this question














      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Dec 28 '18 at 12:54









      LumpiLumpi

      13




      13
























          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
          });


          }
          });














          draft saved

          draft discarded


















          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
















          draft saved

          draft discarded




















































          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          Angular Downloading a file using contenturl with Basic Authentication

          Olmecas

          Can't read property showImagePicker of undefined in react native iOS