prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  `reddit.user.moderator_subreddits()` has a limit of 100 subreddits that is not documented.
  ## Issue Description
  
  `reddit.user.moderator_subreddits()` is a method for `reddit.user` that [returns a ListingGenerator of the subreddits that the currently authenticated user is a moderator of](https://praw.readthedocs.io/en/latest/code_overview/reddit/user.html). It works fine, but there is actually a **hard limit of 100 subreddits returned** through this method, and that limit is currently not documented for the method. I tested this with my bot u/AssistantBOT, which is currently moderating 600+ public and private subreddits, and the method only returns the top 100 subreddits it's a mod of, sorted by most subscribers to least subscribers. 
  
  I believe this limit should be documented in the method. It's true that the vast majority of users are unlikely to encounter this issue, but it is something that could dramatically affect what a user is expecting in their results.
  
  I would make a pull request, but I already have one PR #1137  that's awaiting review for a feature addition and I don't want to add something unrelated to that PR directly. The new method I proposed, `.moderated()`, can actually overcome the limitations of `moderator_subreddits()`, however, so if it's a good idea to add this documentation to that PR, then I'll do so. 
  
  
  **Edit:** I'll make a new Documentation PR once ##1137 gets merged.
  
  ## System Information
  
  - PRAW Version: 6.4.0
  - Python Version: 3.5.1
  - Operating System: Windows 10 Pro
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `praw/models/user.py`
  Content:
  ```
  1 """Provides the User class."""
  2 from ..const import API_PATH
  3 from ..models import Preferences
  4 from ..util.cache import cachedproperty
  5 from .base import PRAWBase
  6 from .listing.generator import ListingGenerator
  7 from .reddit.redditor import Redditor
  8 from .reddit.subreddit import Subreddit
  9 
  10 
  11 class User(PRAWBase):
  12     """The user class provides methods for the currently authenticated user."""
  13 
  14     @cachedproperty
  15     def preferences(self):
  16         """Get an instance of :class:`.Preferences`.
  17 
  18         The preferences can be accessed as a ``dict`` like so:
  19 
  20         .. code-block:: python
  21 
  22            preferences = reddit.user.preferences()
  23            print(preferences['show_link_flair'])
  24 
  25         Preferences can be updated via:
  26 
  27         .. code-block:: python
  28 
  29            reddit.user.preferences.update(show_link_flair=True)
  30 
  31         The :meth:`.Preferences.update` method returns the new state of the
  32         preferences as a ``dict``, which can be used to check whether a
  33         change went through. Changes with invalid types or parameter names
  34         fail silently.
  35 
  36         .. code-block:: python
  37 
  38            original_preferences = reddit.user.preferences()
  39            new_preferences = reddit.user.preferences.update(invalid_param=123)
  40            print(original_preferences == new_preferences)  # True, no change
  41 
  42 
  43         """
  44         return Preferences(self._reddit)
  45 
  46     def __init__(self, reddit):
  47         """Initialize a User instance.
  48 
  49         This class is intended to be interfaced with through ``reddit.user``.
  50 
  51         """
  52         super(User, self).__init__(reddit, _data=None)
  53 
  54     def blocked(self):
  55         """Return a RedditorList of blocked Redditors."""
  56         return self._reddit.get(API_PATH["blocked"])
  57 
  58     def contributor_subreddits(self, **generator_kwargs):
  59         """Return a ListingGenerator of subreddits user is a contributor of.
  60 
  61         Additional keyword arguments are passed in the initialization of
  62         :class:`.ListingGenerator`.
  63 
  64         """
  65         return ListingGenerator(
  66             self._reddit, API_PATH["my_contributor"], **generator_kwargs
  67         )
  68 
  69     def friends(self):
  70         """Return a RedditorList of friends."""
  71         return self._reddit.get(API_PATH["friends"])
  72 
  73     def karma(self):
  74         """Return a dictionary mapping subreddits to their karma."""
  75         karma_map = {}
  76         for row in self._reddit.get(API_PATH["karma"])["data"]:
  77             subreddit = Subreddit(self._reddit, row["sr"])
  78             del row["sr"]
  79             karma_map[subreddit] = row
  80         return karma_map
  81 
  82     def me(self, use_cache=True):  # pylint: disable=invalid-name
  83         """Return a :class:`.Redditor` instance for the authenticated user.
  84 
  85         In :attr:`~praw.Reddit.read_only` mode, this method returns ``None``.
  86 
  87         :param use_cache: When true, and if this function has been previously
  88             called, returned the cached version (default: True).
  89 
  90         .. note:: If you change the Reddit instance's authorization, you might
  91            want to refresh the cached value. Prefer using separate Reddit
  92            instances, however, for distinct authorizations.
  93 
  94         """
  95         if self._reddit.read_only:
  96             return None
  97         if "_me" not in self.__dict__ or not use_cache:
  98             user_data = self._reddit.get(API_PATH["me"])
  99             self._me = Redditor(self._reddit, _data=user_data)
  100         return self._me
  101 
  102     def moderator_subreddits(self, **generator_kwargs):
  103         """Return a ListingGenerator of subreddits the user is a moderator of.
  104 
  105         Additional keyword arguments are passed in the initialization of
  106         :class:`.ListingGenerator`.
  107 
  108         """
  109         return ListingGenerator(
  110             self._reddit, API_PATH["my_moderator"], **generator_kwargs
  111         )
  112 
  113     def multireddits(self):
  114         """Return a list of multireddits belonging to the user."""
  115         return self._reddit.get(API_PATH["my_multireddits"])
  116 
  117     def subreddits(self, **generator_kwargs):
  118         """Return a ListingGenerator of subreddits the user is subscribed to.
  119 
  120         Additional keyword arguments are passed in the initialization of
  121         :class:`.ListingGenerator`.
  122 
  123         """
  124         return ListingGenerator(
  125             self._reddit, API_PATH["my_subreddits"], **generator_kwargs
  126         )
  127
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/praw/models/user.py b/praw/models/user.py
  --- a/praw/models/user.py
  +++ b/praw/models/user.py
  @@ -105,6 +105,18 @@
           Additional keyword arguments are passed in the initialization of
           :class:`.ListingGenerator`.
   
  +        .. note:: This method will return a maximum of 100 moderated
  +           subreddits, ordered by subscriber count. To retrieve more than
  +           100 moderated subreddits, please see :meth:`.Redditor.moderated`.
  +
  +        Usage:
  +
  +        .. code-block:: python
  +
  +           for subreddit in reddit.user.moderator_subreddits():
  +               print(subreddit.display_name)
  +
  +
           """
           return ListingGenerator(
               self._reddit, API_PATH["my_moderator"], **generator_kwargs
  
verification_info: {"golden_diff": "diff --git a/praw/models/user.py b/praw/models/user.py\n--- a/praw/models/user.py\n+++ b/praw/models/user.py\n@@ -105,6 +105,18 @@\n         Additional keyword arguments are passed in the initialization of\n         :class:`.ListingGenerator`.\n \n+        .. note:: This method will return a maximum of 100 moderated\n+           subreddits, ordered by subscriber count. To retrieve more than\n+           100 moderated subreddits, please see :meth:`.Redditor.moderated`.\n+\n+        Usage:\n+\n+        .. code-block:: python\n+\n+           for subreddit in reddit.user.moderator_subreddits():\n+               print(subreddit.display_name)\n+\n+\n         \"\"\"\n         return ListingGenerator(\n             self._reddit, API_PATH[\"my_moderator\"], **generator_kwargs\n", "issue": "`reddit.user.moderator_subreddits()` has a limit of 100 subreddits that is not documented.\n## Issue Description\r\n\r\n`reddit.user.moderator_subreddits()` is a method for `reddit.user` that [returns a ListingGenerator of the subreddits that the currently authenticated user is a moderator of](https://praw.readthedocs.io/en/latest/code_overview/reddit/user.html). It works fine, but there is actually a **hard limit of 100 subreddits returned** through this method, and that limit is currently not documented for the method. I tested this with my bot u/AssistantBOT, which is currently moderating 600+ public and private subreddits, and the method only returns the top 100 subreddits it's a mod of, sorted by most subscribers to least subscribers. \r\n\r\nI believe this limit should be documented in the method. It's true that the vast majority of users are unlikely to encounter this issue, but it is something that could dramatically affect what a user is expecting in their results.\r\n\r\nI would make a pull request, but I already have one PR #1137  that's awaiting review for a feature addition and I don't want to add something unrelated to that PR directly. The new method I proposed, `.moderated()`, can actually overcome the limitations of `moderator_subreddits()`, however, so if it's a good idea to add this documentation to that PR, then I'll do so. \r\n\r\n\r\n**Edit:** I'll make a new Documentation PR once ##1137 gets merged.\r\n\r\n## System Information\r\n\r\n- PRAW Version: 6.4.0\r\n- Python Version: 3.5.1\r\n- Operating System: Windows 10 Pro\r\n\n", "before_files": [{"content": "\"\"\"Provides the User class.\"\"\"\nfrom ..const import API_PATH\nfrom ..models import Preferences\nfrom ..util.cache import cachedproperty\nfrom .base import PRAWBase\nfrom .listing.generator import ListingGenerator\nfrom .reddit.redditor import Redditor\nfrom .reddit.subreddit import Subreddit\n\n\nclass User(PRAWBase):\n    \"\"\"The user class provides methods for the currently authenticated user.\"\"\"\n\n    @cachedproperty\n    def preferences(self):\n        \"\"\"Get an instance of :class:`.Preferences`.\n\n        The preferences can be accessed as a ``dict`` like so:\n\n        .. code-block:: python\n\n           preferences = reddit.user.preferences()\n           print(preferences['show_link_flair'])\n\n        Preferences can be updated via:\n\n        .. code-block:: python\n\n           reddit.user.preferences.update(show_link_flair=True)\n\n        The :meth:`.Preferences.update` method returns the new state of the\n        preferences as a ``dict``, which can be used to check whether a\n        change went through. Changes with invalid types or parameter names\n        fail silently.\n\n        .. code-block:: python\n\n           original_preferences = reddit.user.preferences()\n           new_preferences = reddit.user.preferences.update(invalid_param=123)\n           print(original_preferences == new_preferences)  # True, no change\n\n\n        \"\"\"\n        return Preferences(self._reddit)\n\n    def __init__(self, reddit):\n        \"\"\"Initialize a User instance.\n\n        This class is intended to be interfaced with through ``reddit.user``.\n\n        \"\"\"\n        super(User, self).__init__(reddit, _data=None)\n\n    def blocked(self):\n        \"\"\"Return a RedditorList of blocked Redditors.\"\"\"\n        return self._reddit.get(API_PATH[\"blocked\"])\n\n    def contributor_subreddits(self, **generator_kwargs):\n        \"\"\"Return a ListingGenerator of subreddits user is a contributor of.\n\n        Additional keyword arguments are passed in the initialization of\n        :class:`.ListingGenerator`.\n\n        \"\"\"\n        return ListingGenerator(\n            self._reddit, API_PATH[\"my_contributor\"], **generator_kwargs\n        )\n\n    def friends(self):\n        \"\"\"Return a RedditorList of friends.\"\"\"\n        return self._reddit.get(API_PATH[\"friends\"])\n\n    def karma(self):\n        \"\"\"Return a dictionary mapping subreddits to their karma.\"\"\"\n        karma_map = {}\n        for row in self._reddit.get(API_PATH[\"karma\"])[\"data\"]:\n            subreddit = Subreddit(self._reddit, row[\"sr\"])\n            del row[\"sr\"]\n            karma_map[subreddit] = row\n        return karma_map\n\n    def me(self, use_cache=True):  # pylint: disable=invalid-name\n        \"\"\"Return a :class:`.Redditor` instance for the authenticated user.\n\n        In :attr:`~praw.Reddit.read_only` mode, this method returns ``None``.\n\n        :param use_cache: When true, and if this function has been previously\n            called, returned the cached version (default: True).\n\n        .. note:: If you change the Reddit instance's authorization, you might\n           want to refresh the cached value. Prefer using separate Reddit\n           instances, however, for distinct authorizations.\n\n        \"\"\"\n        if self._reddit.read_only:\n            return None\n        if \"_me\" not in self.__dict__ or not use_cache:\n            user_data = self._reddit.get(API_PATH[\"me\"])\n            self._me = Redditor(self._reddit, _data=user_data)\n        return self._me\n\n    def moderator_subreddits(self, **generator_kwargs):\n        \"\"\"Return a ListingGenerator of subreddits the user is a moderator of.\n\n        Additional keyword arguments are passed in the initialization of\n        :class:`.ListingGenerator`.\n\n        \"\"\"\n        return ListingGenerator(\n            self._reddit, API_PATH[\"my_moderator\"], **generator_kwargs\n        )\n\n    def multireddits(self):\n        \"\"\"Return a list of multireddits belonging to the user.\"\"\"\n        return self._reddit.get(API_PATH[\"my_multireddits\"])\n\n    def subreddits(self, **generator_kwargs):\n        \"\"\"Return a ListingGenerator of subreddits the user is subscribed to.\n\n        Additional keyword arguments are passed in the initialization of\n        :class:`.ListingGenerator`.\n\n        \"\"\"\n        return ListingGenerator(\n            self._reddit, API_PATH[\"my_subreddits\"], **generator_kwargs\n        )\n", "path": "praw/models/user.py"}], "after_files": [{"content": "\"\"\"Provides the User class.\"\"\"\nfrom ..const import API_PATH\nfrom ..models import Preferences\nfrom ..util.cache import cachedproperty\nfrom .base import PRAWBase\nfrom .listing.generator import ListingGenerator\nfrom .reddit.redditor import Redditor\nfrom .reddit.subreddit import Subreddit\n\n\nclass User(PRAWBase):\n    \"\"\"The user class provides methods for the currently authenticated user.\"\"\"\n\n    @cachedproperty\n    def preferences(self):\n        \"\"\"Get an instance of :class:`.Preferences`.\n\n        The preferences can be accessed as a ``dict`` like so:\n\n        .. code-block:: python\n\n           preferences = reddit.user.preferences()\n           print(preferences['show_link_flair'])\n\n        Preferences can be updated via:\n\n        .. code-block:: python\n\n           reddit.user.preferences.update(show_link_flair=True)\n\n        The :meth:`.Preferences.update` method returns the new state of the\n        preferences as a ``dict``, which can be used to check whether a\n        change went through. Changes with invalid types or parameter names\n        fail silently.\n\n        .. code-block:: python\n\n           original_preferences = reddit.user.preferences()\n           new_preferences = reddit.user.preferences.update(invalid_param=123)\n           print(original_preferences == new_preferences)  # True, no change\n\n\n        \"\"\"\n        return Preferences(self._reddit)\n\n    def __init__(self, reddit):\n        \"\"\"Initialize a User instance.\n\n        This class is intended to be interfaced with through ``reddit.user``.\n\n        \"\"\"\n        super(User, self).__init__(reddit, _data=None)\n\n    def blocked(self):\n        \"\"\"Return a RedditorList of blocked Redditors.\"\"\"\n        return self._reddit.get(API_PATH[\"blocked\"])\n\n    def contributor_subreddits(self, **generator_kwargs):\n        \"\"\"Return a ListingGenerator of subreddits user is a contributor of.\n\n        Additional keyword arguments are passed in the initialization of\n        :class:`.ListingGenerator`.\n\n        \"\"\"\n        return ListingGenerator(\n            self._reddit, API_PATH[\"my_contributor\"], **generator_kwargs\n        )\n\n    def friends(self):\n        \"\"\"Return a RedditorList of friends.\"\"\"\n        return self._reddit.get(API_PATH[\"friends\"])\n\n    def karma(self):\n        \"\"\"Return a dictionary mapping subreddits to their karma.\"\"\"\n        karma_map = {}\n        for row in self._reddit.get(API_PATH[\"karma\"])[\"data\"]:\n            subreddit = Subreddit(self._reddit, row[\"sr\"])\n            del row[\"sr\"]\n            karma_map[subreddit] = row\n        return karma_map\n\n    def me(self, use_cache=True):  # pylint: disable=invalid-name\n        \"\"\"Return a :class:`.Redditor` instance for the authenticated user.\n\n        In :attr:`~praw.Reddit.read_only` mode, this method returns ``None``.\n\n        :param use_cache: When true, and if this function has been previously\n            called, returned the cached version (default: True).\n\n        .. note:: If you change the Reddit instance's authorization, you might\n           want to refresh the cached value. Prefer using separate Reddit\n           instances, however, for distinct authorizations.\n\n        \"\"\"\n        if self._reddit.read_only:\n            return None\n        if \"_me\" not in self.__dict__ or not use_cache:\n            user_data = self._reddit.get(API_PATH[\"me\"])\n            self._me = Redditor(self._reddit, _data=user_data)\n        return self._me\n\n    def moderator_subreddits(self, **generator_kwargs):\n        \"\"\"Return a ListingGenerator of subreddits the user is a moderator of.\n\n        Additional keyword arguments are passed in the initialization of\n        :class:`.ListingGenerator`.\n\n        .. note:: This method will return a maximum of 100 moderated\n           subreddits, ordered by subscriber count. To retrieve more than\n           100 moderated subreddits, please see :meth:`.Redditor.moderated`.\n\n        Usage:\n\n        .. code-block:: python\n\n           for subreddit in reddit.user.moderator_subreddits():\n               print(subreddit.display_name)\n\n\n        \"\"\"\n        return ListingGenerator(\n            self._reddit, API_PATH[\"my_moderator\"], **generator_kwargs\n        )\n\n    def multireddits(self):\n        \"\"\"Return a list of multireddits belonging to the user.\"\"\"\n        return self._reddit.get(API_PATH[\"my_multireddits\"])\n\n    def subreddits(self, **generator_kwargs):\n        \"\"\"Return a ListingGenerator of subreddits the user is subscribed to.\n\n        Additional keyword arguments are passed in the initialization of\n        :class:`.ListingGenerator`.\n\n        \"\"\"\n        return ListingGenerator(\n            self._reddit, API_PATH[\"my_subreddits\"], **generator_kwargs\n        )\n", "path": "praw/models/user.py"}]}