docs: async def get_messages(self, *args, **kwargs):
          """
          Same as `iter_messages`, but returns a
          `TotalList <telethon.helpers.TotalList>` instead.
  
          If the `limit` is not set, it will be 1 by default unless both
          `min_id` **and** `max_id` are set (as *named* arguments), in
          which case the entire range will be returned.
  
          This is so because any integer limit would be rather arbitrary and
          it's common to only want to fetch one message, but if a range is
          specified it makes sense that it should return the entirety of it.
  
          If `ids` is present in the *named* arguments and is not a list,
          a single `Message <telethon.tl.custom.message.Message>` will be
          returned for convenience instead of a list.
          """
          if len(args) == 1 and 'limit' not in kwargs:
              if 'min_id' in kwargs and 'max_id' in kwargs:
                  kwargs['limit'] = None
              else:
                  kwargs['limit'] = 1
  
          it = self.iter_messages(*args, **kwargs)
  
          ids = kwargs.get('ids')
          if ids and not utils.is_list_like(ids):
              async for message in it:
                  return message
              else:
                  # Iterator exhausted = empty, to handle InputMessageReplyTo
                  return None
  
          return await it.collect()