Repository: praw-dev/praw

Issue:
Unable to update subreddit sidebar (description)
**Describe the bug**

**To Reproduce**
Steps to reproduce the behavior:
1. invoke ` reddit.subreddit(subreddit).mod.update(description=text)`

**Expected behavior**
The sidebar of the subreddit should be updated in the old design.

**System Info**
 - OS: any 
 - Python: 3.7/3.8
 - PRAW Version: 7.1.0

I think the issue was introduced in 18d0c04f8385108620d6f8434a334db0591e9c70 because of #1452

The new (undocumented) API updates  `welcome_message_enabled` and `welcome_message_text` but does not handle `description`, probably because this field is not present in the new redesign (mod settings and UI).

I'm sorry, but I do not have a proposal solution, probably on Reddit side one API for all fields is not present.


Discussion:
As a workaround for description, you can edit r/subreddit/wiki/config/sidebar
This is an error with the latest version? Am I correct? What if you downgrade to the old version and try the same thing. 
It may work
It works with praw<7 and it does not works with 7.1 and above. I have not tried with 7.0 (it should work, the change is in 7.1)


Resolving patch:
diff --git a/praw/models/reddit/subreddit.py b/praw/models/reddit/subreddit.py
--- a/praw/models/reddit/subreddit.py
+++ b/praw/models/reddit/subreddit.py
@@ -2381,39 +2381,37 @@ def update(
         :param allow_polls: Allow users to post polls to the subreddit.
         :param allow_post_crossposts: Allow users to crosspost submissions from other
             subreddits.
-        :param allow_top: Allow the subreddit to appear on ``r/all`` as well as the
-            default and trending lists.
         :param allow_videos: Allow users to upload videos using the native image
             hosting.
         :param collapse_deleted_comments: Collapse deleted and removed comments on
             comments pages by default.
+        :param comment_score_hide_mins: The number of minutes to hide comment scores.
+        :param content_options: The types of submissions users can make. One of ``any``,
+            ``link``, ``self``.
         :param crowd_control_chat_level: Controls the crowd control level for chat
             rooms. Goes from 0-3.
         :param crowd_control_level: Controls the crowd control level for submissions.
             Goes from 0-3.
         :param crowd_control_mode: Enables/disables crowd control.
-        :param comment_score_hide_mins: The number of minutes to hide comment scores.
-        :param description: Shown in the sidebar of your subreddit.
+        :param default_set: Allow the subreddit to appear on ``r/all`` as well as the
+            default and trending lists.
         :param disable_contributor_requests: Specifies whether redditors may send
             automated modmail messages requesting approval as a submitter.
         :param exclude_banned_modqueue: Exclude posts by site-wide banned users from
             modqueue/unmoderated.
         :param free_form_reports: Allow users to specify custom reasons in the report
             menu.
-        :param header-title: The text seen when hovering over the snoo.
+        :param header_hover_text: The text seen when hovering over the snoo.
         :param hide_ads: Don't show ads within this subreddit. Only applies to
             Premium-user only subreddits.
         :param key_color: A 6-digit rgb hex color (e.g. ``"#AABBCC"``), used as a
             thematic color for your subreddit on mobile.
-        :param lang: A valid IETF language tag (underscore separated).
-        :param link_type: The types of submissions users can make. One of ``any``,
-            ``link``, ``self``.
+        :param language: A valid IETF language tag (underscore separated).
         :param original_content_tag_enabled: Enables the use of the ``original content``
             label for submissions.
         :param over_18: Viewers must be over 18 years old (i.e. NSFW).
         :param public_description: Public description blurb. Appears in search results
             and on the landing page for private subreddits.
-        :param public_traffic: Make the traffic stats page public.
         :param restrict_commenting: Specifies whether approved users have the ability to
             comment.
         :param restrict_posting: Specifies whether approved users have the ability to
@@ -2432,20 +2430,32 @@ def update(
         :param submit_text: Text to show on submission page.
         :param submit_text_label: Custom label for submit text post button (None for
             default).
+        :param subreddit_type: One of ``archived``, ``employees_only``, ``gold_only``,
+            ``gold_restricted``, ``private``, ``public``, ``restricted``.
         :param suggested_comment_sort: All comment threads will use this sorting method
             by default. Leave None, or choose one of ``confidence``, ``controversial``,
             ``live``, ``new``, ``old``, ``qa``, ``random``, ``top``.
         :param title: The title of the subreddit.
-        :param type: One of ``archived``, ``employees_only``, ``gold_only``,
-            ``gold_restricted``, ``private``, ``public``, ``restricted``.
         :param welcome_message_enabled: Enables the subreddit welcome message.
         :param welcome_message_text: The text to be used as a welcome message. A welcome
             message is sent to all new subscribers by a Reddit bot.
         :param wiki_edit_age: Account age, in days, required to edit and create wiki
             pages.
-        :param wiki_edit_karma: "praw.models.Subreddit" karma required to edit and create wiki pages.
+        :param wiki_edit_karma: "praw.models.Subreddit" karma required to edit and
+            create wiki pages.
         :param wikimode: One of ``anyone``, ``disabled``, ``modonly``.
 
+        .. note::
+
+            Updating the subreddit sidebar on old reddit (``description``) is no longer
+            supported using this method. You can update the sidebar by editing the
+            ``"config/sidebar"`` wiki page. For example:
+
+            .. code-block:: python
+
+                sidebar = reddit.subreddit("test").wiki["config/sidebar"]
+                sidebar.edit(content="new sidebar content")
+
         Additional keyword arguments can be provided to handle new settings as Reddit
         introduces them.
 
@@ -2454,6 +2464,15 @@ def update(
         do not, please file a bug.
 
         """
+        # These attributes come out using different names than they go in.
+        remap = {
+            "content_options": "link_type",
+            "default_set": "allow_top",
+            "header_hover_text": "header_title",
+            "language": "lang",
+            "subreddit_type": "type",
+        }
+        settings = {remap.get(key, key): value for key, value in settings.items()}
         settings["sr"] = self.subreddit.fullname
         return self.subreddit._reddit.patch(API_PATH["update_settings"], json=settings)
 


Test patch: