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()

```

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

{"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"}]}