docs: async def get_buttons(self):
          """
          Returns `buttons`, but will make an API call to find the
          input chat (needed for the buttons) unless it's already cached.
          """
          if not self.buttons and self.reply_markup:
              chat = await self.get_input_chat()
              if not chat:
                  return
              try:
                  bot = self._needed_markup_bot()
              except ValueError:
                  await self._reload_message()
                  bot = self._needed_markup_bot()  # TODO use via_input_bot
  
              self._set_buttons(chat, bot)
  
          return self._buttons