reddit.user#

class praw.models.User(reddit: praw.Reddit)#

The User class provides methods for the currently authenticated user.

__init__(reddit: praw.Reddit)#

Initialize an User instance.

This class is intended to be interfaced with through reddit.user.

blocked() list[praw.models.Redditor]#

Return a RedditorList of blocked Redditors.

contributor_subreddits(**generator_kwargs: str | int | dict[str, str]) Iterator[praw.models.Subreddit]#

Return a ListingGenerator of contributor Subreddits.

These are subreddits in which the user is an approved user.

Additional keyword arguments are passed in the initialization of ListingGenerator.

To print a list of the subreddits that you are an approved user in, try:

for subreddit in reddit.user.contributor_subreddits(limit=None):
    print(str(subreddit))
friends(*, user: str | praw.models.Redditor | None = None) list[praw.models.Redditor] | praw.models.Redditor#

Return a RedditorList of friends or a Redditor in the friends list.

Parameters:

user – Checks to see if you are friends with the redditor. Either an instance of Redditor or a string can be given.

Returns:

A list of Redditors, or a single Redditor if user is specified. The Redditor instance(s) returned also has friend attributes.

Raises:

An instance of RedditAPIException if you are not friends with the specified Redditor.

karma() dict[praw.models.Subreddit, dict[str, int]]#

Return a dictionary mapping Subreddits to their karma.

The returned dict contains subreddits as keys. Each subreddit key contains a sub-dict that have keys for comment_karma and link_karma. The dict is sorted in descending karma order.

Note

Each key of the main dict is an instance of Subreddit. It is recommended to iterate over the dict in order to retrieve the values, preferably through dict.items().

me(*, use_cache: bool = True) praw.models.Redditor | None#

Return a Redditor instance for the authenticated user.

Parameters:

use_cache – When True, and if this function has been previously called, returned the cached version (default: True).

Note

If you change the Reddit instance’s authorization, you might want to refresh the cached value. Prefer using separate Reddit instances, however, for distinct authorizations.

Deprecated since version 7.2: In read_only mode this method returns None. In PRAW 8 this method will raise ReadOnlyException when called in read_only mode. To operate in PRAW 8 mode, set the config variable praw8_raise_exception_on_me to True.

moderator_subreddits(**generator_kwargs: str | int | dict[str, str]) Iterator[praw.models.Subreddit]#

Return a ListingGenerator subreddits that the user moderates.

Additional keyword arguments are passed in the initialization of ListingGenerator.

To print a list of the names of the subreddits you moderate, try:

for subreddit in reddit.user.moderator_subreddits(limit=None):
    print(str(subreddit))
multireddits() list[praw.models.Multireddit]#

Return a list of Multireddits belonging to the user.

classmethod parse(data: dict[str, Any], reddit: praw.Reddit) Any#

Return an instance of cls from data.

Parameters:
  • data – The structured data.

  • reddit – An instance of Reddit.

pin(submission: praw.models.Submission, *, num: int = None, state: bool = True) praw.models.Submission#

Set the pin state of a submission on the authenticated user’s profile.

Parameters:
  • submission – An instance of Submission that will be pinned/unpinned.

  • num

    If specified, the slot in which the submission will be pinned into. If there is a submission already in the specified slot, it will be replaced. If None or there is not a submission in the specified slot, the first available slot will be used (default: None). If all slots are used the following will occur:

    • Old Reddit:

      1. The submission in the last slot will be unpinned.

      2. The remaining pinned submissions will be shifted down a slot.

      3. The new submission will be pinned in the first slot.

    • New Reddit:

      1. The submission in the first slot will be unpinned.

      2. The remaining pinned submissions will be shifted up a slot.

      3. The new submission will be pinned in the last slot.

    Note

    At the time of writing (10/22/2021), there are 4 pin slots available and pins are in reverse order on old Reddit. If num is an invalid value, Reddit will ignore it and the same behavior will occur as if num is None.

  • stateTrue pins the submission, False unpins (default: True).

Returns:

The pinned submission.

Raises:

prawcore.BadRequest when pinning a removed or deleted submission.

Raises:

prawcore.Forbidden when pinning a submission the authenticated user is not the author of.

submission = next(reddit.user.me().submissions.new())
reddit.user.pin(submission)
preferences() praw.models.Preferences#

Get an instance of Preferences.

The preferences can be accessed as a dict like so:

preferences = reddit.user.preferences()
print(preferences["show_link_flair"])

Preferences can be updated via:

reddit.user.preferences.update(show_link_flair=True)

The Preferences.update() method returns the new state of the preferences as a dict, which can be used to check whether a change went through. Changes with invalid types or parameter names fail silently.

original_preferences = reddit.user.preferences()
new_preferences = reddit.user.preferences.update(invalid_param=123)
print(original_preferences == new_preferences)  # True, no change
subreddits(**generator_kwargs: str | int | dict[str, str]) Iterator[praw.models.Subreddit]#

Return a ListingGenerator of Subreddits the user is subscribed to.

Additional keyword arguments are passed in the initialization of ListingGenerator.

To print a list of the subreddits that you are subscribed to, try:

for subreddit in reddit.user.subreddits(limit=None):
    print(str(subreddit))
trusted() list[praw.models.Redditor]#

Return a RedditorList of trusted Redditors.

To display the usernames of your trusted users and the times at which you decided to trust them, try:

trusted_users = reddit.user.trusted()
for user in trusted_users:
    print(f"User: {user.name}, time: {user.date}")