Comment
*******

class praw.models.Comment(reddit: Reddit, id: Optional[str] = None, url: Optional[str] = None, _data: Optional[Dict[str, Any]] = None)

   A class that represents a reddit comments.

   **Typical Attributes**

   This table describes attributes that typically belong to objects of
   this class. Since attributes are dynamically provided (see
   Determine Available Attributes of an Object), there is not a
   guarantee that these attributes will always be present, nor is this
   list necessarily complete.

   +-------------------------+--------------------------------------------------------------+
   | Attribute               | Description                                                  |
   |=========================|==============================================================|
   | "author"                | Provides an instance of "Redditor".                          |
   +-------------------------+--------------------------------------------------------------+
   | "body"                  | The body of the comment, as Markdown.                        |
   +-------------------------+--------------------------------------------------------------+
   | "body_html"             | The body of the comment, as HTML.                            |
   +-------------------------+--------------------------------------------------------------+
   | "created_utc"           | Time the comment was created, represented in Unix Time.      |
   +-------------------------+--------------------------------------------------------------+
   | "distinguished"         | Whether or not the comment is distinguished.                 |
   +-------------------------+--------------------------------------------------------------+
   | "edited"                | Whether or not the comment has been edited.                  |
   +-------------------------+--------------------------------------------------------------+
   | "id"                    | The ID of the comment.                                       |
   +-------------------------+--------------------------------------------------------------+
   | "is_submitter"          | Whether or not the comment author is also the author of the  |
   |                         | submission.                                                  |
   +-------------------------+--------------------------------------------------------------+
   | "link_id"               | The submission ID that the comment belongs to.               |
   +-------------------------+--------------------------------------------------------------+
   | "parent_id"             | The ID of the parent comment (prefixed with "t1_"). If it is |
   |                         | a top- level comment, this returns the submission ID instead |
   |                         | (prefixed with "t3_").                                       |
   +-------------------------+--------------------------------------------------------------+
   | "permalink"             | A permalink for the comment. Comment objects from the inbox  |
   |                         | have a "context" attribute instead.                          |
   +-------------------------+--------------------------------------------------------------+
   | "replies"               | Provides an instance of "CommentForest".                     |
   +-------------------------+--------------------------------------------------------------+
   | "saved"                 | Whether or not the comment is saved.                         |
   +-------------------------+--------------------------------------------------------------+
   | "score"                 | The number of upvotes for the comment.                       |
   +-------------------------+--------------------------------------------------------------+
   | "stickied"              | Whether or not the comment is stickied.                      |
   +-------------------------+--------------------------------------------------------------+
   | "submission"            | Provides an instance of "Submission". The submission that    |
   |                         | the comment belongs to.                                      |
   +-------------------------+--------------------------------------------------------------+
   | "subreddit"             | Provides an instance of "Subreddit". The subreddit that the  |
   |                         | comment belongs to.                                          |
   +-------------------------+--------------------------------------------------------------+
   | "subreddit_id"          | The subreddit ID that the comment belongs to.                |
   +-------------------------+--------------------------------------------------------------+

   __init__(reddit: Reddit, id: Optional[str] = None, url: Optional[str] = None, _data: Optional[Dict[str, Any]] = None)

      Construct an instance of the Comment object.

   award(gild_type: str = 'gid_2', is_anonymous: bool = True, message: Optional[str] = None) -> dict

      Award the author of the item.

      Parameters:
         * **gild_type** -- Type of award to give. See table below for
           currently know global award types.

         * **is_anonymous** -- If True, the authenticated user's
           username will not be revealed to the recipient.

         * **message** -- Message to include with the award.

      Returns:
         A dict containing info similar to what is shown below:

            {
                "subreddit_balance": 85260,
                "treatment_tags": [],
                "coins": 8760,
                "gildings": {"gid_1": 0, "gid_2": 1, "gid_3": 0},
                "awarder_karma_received": 4,
                "all_awardings": [
                    {
                        "giver_coin_reward": 0,
                        "subreddit_id": None,
                        "is_new": False,
                        "days_of_drip_extension": 0,
                        "coin_price": 75,
                        "id": "award_9663243a-e77f-44cf-abc6-850ead2cd18d",
                        "penny_donate": 0,
                        "coin_reward": 0,
                        "icon_url": "https://www.redditstatic.com/gold/awards/icon/SnooClappingPremium_512.png",
                        "days_of_premium": 0,
                        "icon_height": 512,
                        "tiers_by_required_awardings": None,
                        "icon_width": 512,
                        "static_icon_width": 512,
                        "start_date": None,
                        "is_enabled": True,
                        "awardings_required_to_grant_benefits": None,
                        "description": "For an especially amazing showing.",
                        "end_date": None,
                        "subreddit_coin_reward": 0,
                        "count": 1,
                        "static_icon_height": 512,
                        "name": "Bravo Grande!",
                        "icon_format": "APNG",
                        "award_sub_type": "PREMIUM",
                        "penny_price": 0,
                        "award_type": "global",
                        "static_icon_url": "https://i.redd.it/award_images/t5_q0gj4/59e02tmkl4451_BravoGrande-Static.png",
                    }
                ],
            }

      Requires the authenticated user to own Reddit Coins. Calling
      this method will consume Reddit Coins.

      To award the gold award anonymously do:

         comment = reddit.comment("dkk4qjd")
         comment.award()

         submission = reddit.submission("8dmv8z")
         submission.award()

      To award the platinum award with the message 'Nice!' and reveal
      your username to the recipient do:

         comment = reddit.comment("dkk4qjd")
         comment.award(gild_type="gild_3", message="Nice!", is_anonymous=False)

         submission = reddit.submission("8dmv8z")
         submission.award(gild_type="gild_3", message="Nice!", is_anonymous=False)

   block()

      Block the user who sent the item.

      Note:

        This method pertains only to objects which were retrieved via
        the inbox.

      Example usage:

         comment = reddit.comment("dkk4qjd")
         comment.block()

         # or, identically:

         comment.author.block()

   clear_vote()

      Clear the authenticated user's vote on the object.

      Note:

        Votes must be cast by humans. That is, API clients proxying a
        human's action one-for-one are OK, but bots deciding how to
        vote on content or amplifying a human's vote are not. See the
        reddit rules for more details on what constitutes vote
        cheating. [Ref]

      Example usage:

         submission = reddit.submission(id="5or86n")
         submission.clear_vote()

         comment = reddit.comment(id="dxolpyc")
         comment.clear_vote()

   collapse()

      Mark the item as collapsed.

      Note:

        This method pertains only to objects which were retrieved via
        the inbox.

      Example usage:

         inbox = reddit.inbox()

         # select first inbox item and collapse it message = next(inbox)
         message.collapse()

      See also: "uncollapse()"

   delete()

      Delete the object.

      Example usage:

         comment = reddit.comment("dkk4qjd")
         comment.delete()

         submission = reddit.submission("8dmv8z")
         submission.delete()

   disable_inbox_replies()

      Disable inbox replies for the item.

      Example usage:

         comment = reddit.comment("dkk4qjd")
         comment.disable_inbox_replies()

         submission = reddit.submission("8dmv8z")
         submission.disable_inbox_replies()

      See also: "enable_inbox_replies()"

   downvote()

      Downvote the object.

      Note:

        Votes must be cast by humans. That is, API clients proxying a
        human's action one-for-one are OK, but bots deciding how to
        vote on content or amplifying a human's vote are not. See the
        reddit rules for more details on what constitutes vote
        cheating. [Ref]

      Example usage:

         submission = reddit.submission(id="5or86n")
         submission.downvote()

         comment = reddit.comment(id="dxolpyc")
         comment.downvote()

      See also: "upvote()"

   edit(body: str)

      Replace the body of the object with "body".

      Parameters:
         **body** -- The Markdown formatted content for the updated
         object.

      Returns:
         The current instance after updating its attributes.

      Example usage:

         comment = reddit.comment("dkk4qjd")

         # construct the text of an edited comment
         # by appending to the old body:
         edited_body = comment.body + "Edit: thanks for the gold!"
         comment.edit(edited_body)

   enable_inbox_replies()

      Enable inbox replies for the item.

      Example usage:

         comment = reddit.comment("dkk4qjd")
         comment.enable_inbox_replies()

         submission = reddit.submission("8dmv8z")
         submission.enable_inbox_replies()

      See also: "disable_inbox_replies()"

   property fullname

      Return the object's fullname.

      A fullname is an object's kind mapping like "t3" followed by an
      underscore and the object's base36 ID, e.g., "t1_c5s96e0".

   gild()

      Alias for "award()" to maintain backwards compatibility.

   static id_from_url(url: str) -> str

      Get the ID of a comment from the full URL.

   property is_root

      Return True when the comment is a top level comment.

   mark_read()

      Mark a single inbox item as read.

      Note:

        This method pertains only to objects which were retrieved via
        the inbox.

      Example usage:

         inbox = reddit.inbox.unread()

         for message in inbox:
             # process unread messages
             ...

      See also: "mark_unread()"

      To mark the whole inbox as read with a single network request,
      use "praw.models.Inbox.mark_read()"

   mark_unread()

      Mark the item as unread.

      Note:

        This method pertains only to objects which were retrieved via
        the inbox.

      Example usage:

         inbox = reddit.inbox(limit=10)

         for message in inbox:
             # process messages
             ...

      See also: "mark_read()"

   mod()

      Provide an instance of "CommentModeration".

      Example usage:

         comment = reddit.comment("dkk4qjd")
         comment.mod.approve()

   parent() -> Union[Comment, Submission]

      Return the parent of the comment.

      The returned parent will be an instance of either "Comment", or
      "Submission".

      If this comment was obtained through a "Submission", then its
      entire ancestry should be immediately available, requiring no
      extra network requests. However, if this comment was obtained
      through other means, e.g., "reddit.comment("COMMENT_ID")", or
      "reddit.inbox.comment_replies", then the returned parent may be
      a lazy instance of either "Comment", or "Submission".

      Lazy comment example:

         comment = reddit.comment("cklhv0f")
         parent = comment.parent()
         # `replies` is empty until the comment is refreshed
         print(parent.replies)  # Output: []
         parent.refresh()
         print(parent.replies)  # Output is at least: [Comment(id="cklhv0f")]

      Warning:

        Successive calls to "parent()" may result in a network request
        per call when the comment is not obtained through a
        "Submission". See below for an example of how to minimize
        requests.

      If you have a deeply nested comment and wish to most efficiently
      discover its top-most "Comment" ancestor you can chain
      successive calls to "parent()" with calls to "refresh()" at
      every 9 levels. For example:

         comment = reddit.comment("dkk4qjd")
         ancestor = comment
         refresh_counter = 0
         while not ancestor.is_root:
             ancestor = ancestor.parent()
             if refresh_counter % 9 == 0:
                 ancestor.refresh()
             refresh_counter += 1
         print(f"Top-most Ancestor: {ancestor}")

      The above code should result in 5 network requests to Reddit.
      Without the calls to "refresh()" it would make at least 31
      network requests.

   classmethod parse(data: Dict[str, Any], reddit: Reddit) -> Any

      Return an instance of "cls" from "data".

      Parameters:
         * **data** -- The structured data.

         * **reddit** -- An instance of "Reddit".

   refresh()

      Refresh the comment's attributes.

      If using "Reddit.comment()" this method must be called in order
      to obtain the comment's replies.

      Example usage:

         comment = reddit.comment("dkk4qjd")
         comment.refresh()

   property replies

      Provide an instance of "CommentForest".

      This property may return an empty list if the comment has not
      been refreshed with "refresh()"

      Sort order and reply limit can be set with the "reply_sort" and
      "reply_limit" attributes before replies are fetched, including
      any call to "refresh()":

         comment.reply_sort = "new"
         comment.refresh()
         replies = comment.replies

      Note:

        The appropriate values for "reply_sort" include "confidence",
        "controversial", "new", "old", "q&a", and "top".

   reply(body: str)

      Reply to the object.

      Parameters:
         **body** -- The Markdown formatted content for a comment.

      Returns:
         A "Comment" object for the newly created comment or "None" if
         Reddit doesn't provide one.

      A "None" value can be returned if the target is a comment or
      submission in a quarantined subreddit and the authenticated user
      has not opt-ed into viewing the content. When this happens the
      comment will be successfully created on Reddit and can be
      retried by drawing the comment from the user's comment history.

      Note:

        Some items, such as locked submissions/comments or non-
        replyable messages will throw "prawcore.exceptions.Forbidden"
        when attempting to reply to them.

      Example usage:

         submission = reddit.submission(id="5or86n")
         submission.reply("reply")

         comment = reddit.comment(id="dxolpyc")
         comment.reply("reply")

   report(reason: str)

      Report this object to the moderators of its subreddit.

      Parameters:
         **reason** -- The reason for reporting.

      Raises:
         "RedditAPIException" if "reason" is longer than 100
         characters.

      Example usage:

         submission = reddit.submission(id="5or86n")
         submission.report("report reason")

         comment = reddit.comment(id="dxolpyc")
         comment.report("report reason")

   save(category: Optional[str] = None)

      Save the object.

      Parameters:
         **category** -- (Premium) The category to save to. If your
         user does not have Reddit Premium this value is ignored by
         Reddit (default: "None").

      Example usage:

         submission = reddit.submission(id="5or86n")
         submission.save(category="view later")

         comment = reddit.comment(id="dxolpyc")
         comment.save()

      See also: "unsave()"

   property submission

      Return the Submission object this comment belongs to.

   uncollapse()

      Mark the item as uncollapsed.

      Note:

        This method pertains only to objects which were retrieved via
        the inbox.

      Example usage:

         inbox = reddit.inbox()

         # select first inbox item and uncollapse it
         message = next(inbox)
         message.uncollapse()

      See also: "collapse()"

   unsave()

      Unsave the object.

      Example usage:

         submission = reddit.submission(id="5or86n")
         submission.unsave()

      comment = reddit.comment(id="dxolpyc") comment.unsave()

      See also: "save()"

   upvote()

      Upvote the object.

      Note:

        Votes must be cast by humans. That is, API clients proxying a
        human's action one-for-one are OK, but bots deciding how to
        vote on content or amplifying a human's vote are not. See the
        reddit rules for more details on what constitutes vote
        cheating. [Ref]

      Example usage:

         submission = reddit.submission(id="5or86n")
         submission.upvote()

         comment = reddit.comment(id="dxolpyc")
         comment.upvote()

      See also: "downvote()"
