Redditor
- class praw.models.Redditor(reddit: praw.Reddit, name: Optional[str] = None, fullname: Optional[str] = None, _data: Optional[Dict[str, Any]] = None)
A class representing the users of Reddit.
Typical Attributes
Note
This table describes attributes that typically belong to objects of this class. PRAW dynamically provides the attributes that Reddit returns via the API. Since those attributes are subject to change on Reddit’s end, PRAW makes no effort to document any new/removed/changed attributes, other than to instruct you on how to discover what is available. As a result, this table of attributes may not be complete. See Determine Available Attributes of an Object for detailed information.
If you would like to add an attribute to this table, feel free to open a pull request.
Note
Shadowbanned accounts are treated the same as non-existent accounts, meaning that they will not have any attributes.
Note
Suspended/banned accounts will only return the
name
andis_suspended
attributes.Attribute
Description
comment_karma
The comment karma for the
Redditor
.comments
Provide an instance of
SubListing
for comment access.submissions
Provide an instance of
SubListing
for submission access.created_utc
Time the account was created, represented in Unix Time.
has_verified_email
Whether or not the
Redditor
has verified their email.icon_img
The url of the Redditors’ avatar.
id
The ID of the
Redditor
.is_employee
Whether or not the
Redditor
is a Reddit employee.is_friend
Whether or not the
Redditor
is friends with the authenticated user.is_mod
Whether or not the
Redditor
mods any subreddits.is_gold
Whether or not the
Redditor
has active Reddit Premium status.is_suspended
Whether or not the
Redditor
is currently suspended.link_karma
The link karma for the
Redditor
.name
The Redditor’s username.
subreddit
If the
Redditor
has created a user-subreddit, provides a dictionary of additional attributes. See below.subreddit["banner_img"]
The URL of the user-subreddit banner.
subreddit["name"]
The fullname of the user-subreddit.
subreddit["over_18"]
Whether or not the user-subreddit is NSFW.
subreddit["public_description"]
The public description of the user-subreddit.
subreddit["subscribers"]
The number of users subscribed to the user-subreddit.
subreddit["title"]
The title of the user-subreddit.
- __init__(reddit: praw.Reddit, name: Optional[str] = None, fullname: Optional[str] = None, _data: Optional[Dict[str, Any]] = None)
Initialize a
Redditor
instance.- Parameters
reddit – An instance of
Reddit
.name – The name of the redditor.
fullname – The fullname of the redditor, starting with
t2_
.
Exactly one of
name
,fullname
or_data
must be provided.
- block()
Block the
Redditor
.For example, to block
Redditor
u/spez:reddit.redditor("spez").block()
Note
Blocking a trusted user will remove that user from your trusted list.
See also
- comments() praw.models.listing.mixins.redditor.SubListing
Provide an instance of
SubListing
for comment access.For example, to output the first line of all new comments by u/spez try:
for comment in reddit.redditor("spez").comments.new(limit=None): print(comment.body.split("\\n", 1)[0][:79])
- controversial(*, time_filter: str = 'all', **generator_kwargs: Union[str, int, Dict[str, str]]) Iterator[Any]
Return a
ListingGenerator
for controversial items.- Parameters
time_filter – Can be one of:
"all"
,"day"
,"hour"
,"month"
,"week"
, or"year"
(default:"all"
).- Raises
ValueError
iftime_filter
is invalid.
Additional keyword arguments are passed in the initialization of
ListingGenerator
.This method can be used like:
reddit.domain("imgur.com").controversial(time_filter="week") reddit.multireddit(redditor="samuraisam", name="programming").controversial( time_filter="day" ) reddit.redditor("spez").controversial(time_filter="month") reddit.redditor("spez").comments.controversial(time_filter="year") reddit.redditor("spez").submissions.controversial(time_filter="all") reddit.subreddit("all").controversial(time_filter="hour")
- distrust()
Remove the
Redditor
from your whitelist of trusted users.For example, to remove
Redditor
u/spez from your whitelist:reddit.redditor("spez").distrust()
See also
- downvoted(**generator_kwargs: Union[str, int, Dict[str, str]]) Iterator[Any]
Return a
ListingGenerator
for items the user has downvoted.- Raises
prawcore.Forbidden
if the user is not authorized to access the list.Note
Since this function returns a
ListingGenerator
the exception may not occur until sometime after this function has returned.
Additional keyword arguments are passed in the initialization of
ListingGenerator
.For example, to get all downvoted items of the authenticated user:
for item in reddit.user.me().downvoted(): print(item.id)
- friend(*, note: str = None)
Friend the
Redditor
.- Parameters
note – A note to save along with the relationship. Requires Reddit Premium (default:
None
).
Calling this method subsequent times will update the note.
For example, to friend u/spez:
reddit.redditor("spez").friend()
To add a note to the friendship (requires Reddit Premium):
reddit.redditor("spez").friend(note="My favorite admin")
- friend_info() praw.models.Redditor
Return a
Redditor
instance with specific friend-related attributes.- Returns
A
Redditor
instance with fieldsdate
,id
, and possiblynote
if the authenticated user has Reddit Premium.
For example, to get the friendship information of
Redditor
u/spez:info = reddit.redditor("spez").friend_info friend_data = info.date
- property fullname: str
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(*, months: int = 1)
Gild the
Redditor
.- Parameters
months – Specifies the number of months to gild up to 36 (default:
1
).
For example, to gild
Redditor
u/spez for 1 month:reddit.redditor("spez").gild(months=1)
- gilded(**generator_kwargs: Union[str, int, Dict[str, str]]) Iterator[Any]
Return a
ListingGenerator
for gilded items.Additional keyword arguments are passed in the initialization of
ListingGenerator
.For example, to get gilded items in r/test:
for item in reddit.subreddit("test").gilded(): print(item.id)
- gildings(**generator_kwargs: Union[str, int, Dict[str, str]]) Iterator[Any]
Return a
ListingGenerator
for items the user has gilded.- Raises
prawcore.Forbidden
if the user is not authorized to access the list.Note
Since this function returns a
ListingGenerator
the exception may not occur until sometime after this function has returned.
Additional keyword arguments are passed in the initialization of
ListingGenerator
.For example, to get all gilded items of the authenticated user:
for item in reddit.user.me().gildings(): print(item.id)
Return a
ListingGenerator
for items the user has hidden.- Raises
prawcore.Forbidden
if the user is not authorized to access the list.Note
Since this function returns a
ListingGenerator
the exception may not occur until sometime after this function has returned.
Additional keyword arguments are passed in the initialization of
ListingGenerator
.For example, to get all hidden items of the authenticated user:
for item in reddit.user.me().hidden(): print(item.id)
- hot(**generator_kwargs: Union[str, int, Dict[str, str]]) Iterator[Any]
Return a
ListingGenerator
for hot items.Additional keyword arguments are passed in the initialization of
ListingGenerator
.This method can be used like:
reddit.domain("imgur.com").hot() reddit.multireddit(redditor="samuraisam", name="programming").hot() reddit.redditor("spez").hot() reddit.redditor("spez").comments.hot() reddit.redditor("spez").submissions.hot() reddit.subreddit("all").hot()
- message(*, from_subreddit: Optional[Union[praw.models.Subreddit, str]] = None, message: str, subject: str)
Send a message to a
Redditor
or aSubreddit
’s moderators (modmail).- Parameters
from_subreddit –
A
Subreddit
instance or string to send the message from. When provided, messages are sent from the subreddit rather than from the authenticated user.Note
The authenticated user must be a moderator of the subreddit and have the
mail
moderator permission.message – The message content.
subject – The subject of the message.
For example, to send a private message to u/spez, try:
reddit.redditor("spez").message(subject="TEST", message="test message from PRAW")
To send a message to u/spez from the moderators of r/test try:
reddit.redditor("spez").message( subject="TEST", message="test message from r/test", from_subreddit="test" )
To send a message to the moderators of r/test, try:
reddit.subreddit("test").message(subject="TEST", message="test PM from PRAW")
- moderated() List[praw.models.Subreddit]
Return a list of the redditor’s moderated subreddits.
- Returns
A list of
Subreddit
objects. Return[]
if the redditor has no moderated subreddits.- Raises
prawcore.ServerError
in certain circumstances. See the note below.
Note
The redditor’s own user profile subreddit will not be returned, but other user profile subreddits they moderate will be returned.
Usage:
for subreddit in reddit.redditor("spez").moderated(): print(subreddit.display_name) print(subreddit.title)
Note
A
prawcore.ServerError
exception may be raised if the redditor moderates a large number of subreddits. If that happens, try switching to read-only mode. For example,reddit.read_only = True for subreddit in reddit.redditor("reddit").moderated(): print(str(subreddit))
It is possible that requests made in read-only mode will also raise a
prawcore.ServerError
exception.When used in read-only mode, this method does not retrieve information about subreddits that require certain special permissions to access, e.g., private subreddits and premium-only subreddits.
See also
- multireddits() List[praw.models.Multireddit]
Return a list of the redditor’s public multireddits.
For example, to to get
Redditor
u/spez’s multireddits:multireddits = reddit.redditor("spez").multireddits()
- new(**generator_kwargs: Union[str, int, Dict[str, str]]) Iterator[Any]
Return a
ListingGenerator
for new items.Additional keyword arguments are passed in the initialization of
ListingGenerator
.This method can be used like:
reddit.domain("imgur.com").new() reddit.multireddit(redditor="samuraisam", name="programming").new() reddit.redditor("spez").new() reddit.redditor("spez").comments.new() reddit.redditor("spez").submissions.new() reddit.subreddit("all").new()
- notes() praw.models.RedditorModNotes
Provide an instance of
RedditorModNotes
.This provides an interface for managing moderator notes for a redditor.
Note
The authenticated user must be a moderator of the provided subreddit(s).
For example, all the notes for u/spez in r/test can be iterated through like so:
redditor = reddit.redditor("spez") for note in redditor.notes.subreddits("test"): print(f"{note.label}: {note.note}")
- classmethod parse(data: Dict[str, Any], reddit: praw.Reddit) Any
Return an instance of
cls
fromdata
.- Parameters
data – The structured data.
reddit – An instance of
Reddit
.
- saved(**generator_kwargs: Union[str, int, Dict[str, str]]) Iterator[Any]
Return a
ListingGenerator
for items the user has saved.- Raises
prawcore.Forbidden
if the user is not authorized to access the list.Note
Since this function returns a
ListingGenerator
the exception may not occur until sometime after this function has returned.
Additional keyword arguments are passed in the initialization of
ListingGenerator
.For example, to get all saved items of the authenticated user:
for item in reddit.user.me().saved(limit=None): print(item.id)
- stream() praw.models.reddit.redditor.RedditorStream
Provide an instance of
RedditorStream
.Streams can be used to indefinitely retrieve new comments made by a redditor, like:
for comment in reddit.redditor("spez").stream.comments(): print(comment)
Additionally, new submissions can be retrieved via the stream. In the following example all submissions are fetched via the redditor u/spez:
for submission in reddit.redditor("spez").stream.submissions(): print(submission)
- submissions() praw.models.listing.mixins.redditor.SubListing
Provide an instance of
SubListing
for submission access.For example, to output the title’s of top 100 of all time submissions for u/spez try:
for submission in reddit.redditor("spez").submissions.top(time_filter="all"): print(submission.title)
- top(*, time_filter: str = 'all', **generator_kwargs: Union[str, int, Dict[str, str]]) Iterator[Any]
Return a
ListingGenerator
for top items.- Parameters
time_filter – Can be one of:
"all"
,"day"
,"hour"
,"month"
,"week"
, or"year"
(default:"all"
).- Raises
ValueError
iftime_filter
is invalid.
Additional keyword arguments are passed in the initialization of
ListingGenerator
.This method can be used like:
reddit.domain("imgur.com").top(time_filter="week") reddit.multireddit(redditor="samuraisam", name="programming").top(time_filter="day") reddit.redditor("spez").top(time_filter="month") reddit.redditor("spez").comments.top(time_filter="year") reddit.redditor("spez").submissions.top(time_filter="all") reddit.subreddit("all").top(time_filter="hour")
- trophies() List[praw.models.Trophy]
Return a list of the redditor’s trophies.
- Returns
A list of
Trophy
objects. Return[]
if the redditor has no trophies.- Raises
RedditAPIException
if the redditor doesn’t exist.
Usage:
for trophy in reddit.redditor("spez").trophies(): print(trophy.name) print(trophy.description)
- trust()
Add the
Redditor
to your whitelist of trusted users.Trusted users will always be able to send you PMs.
Example usage:
reddit.redditor("AaronSw").trust()
Use the
accept_pms
parameter ofPreferences.update()
to toggle youraccept_pms
setting between"everyone"
and"whitelisted"
. For example:# Accept private messages from everyone: reddit.user.preferences.update(accept_pms="everyone") # Only accept private messages from trusted users: reddit.user.preferences.update(accept_pms="whitelisted")
You may trust a user even if your
accept_pms
setting is switched to"everyone"
.Note
You are allowed to have a user on your blocked list and your friends list at the same time. However, you cannot trust a user who is on your blocked list.
See also
- unblock()
Unblock the
Redditor
.For example, to unblock
Redditor
u/spez:reddit.redditor("spez").unblock()
- unfriend()
Unfriend the
Redditor
.For example, to unfriend
Redditor
u/spez:reddit.redditor("spez").unfriend()
- upvoted(**generator_kwargs: Union[str, int, Dict[str, str]]) Iterator[Any]
Return a
ListingGenerator
for items the user has upvoted.- Raises
prawcore.Forbidden
if the user is not authorized to access the list.Note
Since this function returns a
ListingGenerator
the exception may not occur until sometime after this function has returned.
Additional keyword arguments are passed in the initialization of
ListingGenerator
.For example, to get all upvoted items of the authenticated user:
for item in reddit.user.me().upvoted(): print(item.id)