Comment¶
-
class
praw.models.
Comment
(reddit, id=None, url=None, _data=None)¶ A class that represents a reddit comments.
-
__init__
(reddit, id=None, url=None, _data=None)¶ Construct an instance of the Comment object.
-
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)¶ 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 edited comment text by appending to 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()
-
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
()¶ Gild the author of the item.
Note
Requires the authenticated user to own reddit gold creddits. Calling this method will consume one reddit gold creddit.
Example usage:
comment = reddit.comment('dkk4qjd') comment.gild() submission = reddit.submission('8dmv8z') submission.gild()
-
static
id_from_url
(url)¶ Get the ID of a comment from the full URL.
-
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
.
-
parent
()¶ Return the parent of the comment.
The returned parent will be an instance of either
Comment
, orSubmission
.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')
, orreddit.inbox.comment_replies
, then the returned parent may be a lazy instance of eitherComment
, orSubmission
.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 aSubmission
. 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 toparent()
with calls torefresh()
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('Top-most Ancestor: {}'.format(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, reddit)¶ Return an instance of
cls
fromdata
.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()
-
replies
¶ Provide an instance of
CommentForest
.This property may return an empty list if the comment has not been refreshed with
refresh()
-
reply
(body)¶ Reply to the object.
Parameters: body – The markdown formatted content for a comment. Returns: A Comment
object for the newly created comment.Example usage:
submission = reddit.submission(id='5or86n') submission.reply('reply') comment = reddit.comment(id='dxolpyc') comment.reply('reply')
-
report
(reason)¶ Report this object to the moderators of its subreddit.
Parameters: reason – The reason for reporting. Example usage:
submission = reddit.submission(id='5or86n') submission.report('report reason') comment = reddit.comment(id='dxolpyc') comment.report('report reason')
-
save
(category=None)¶ Save the object.
Parameters: category – (Gold) The category to save to. If your user does not have gold 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()
-
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()
-