reddit.user

class asyncpraw.models.User(reddit: asyncpraw.Reddit)

The User class provides methods for the currently authenticated user.

__init__(reddit: asyncpraw.Reddit)

Initialize an User instance.

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

await blocked() List[asyncpraw.models.Redditor]

Return a RedditorList of blocked Redditors.

contributor_subreddits(**generator_kwargs: Union[str, int, Dict[str, str]]) AsyncIterator[asyncpraw.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:

async for subreddit in reddit.user.contributor_subreddits(limit=None):
    print(str(subreddit))
await friends(user: Optional[Union[asyncpraw.models.Redditor, str]] = None) Union[List[asyncpraw.models.Redditor], asyncpraw.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 Redditor if you are friends with the given Redditor. The Redditor also has friend attributes.

Raises

An instance of asyncprawcore.exceptions.BadRequest if you are not friends with the specified Redditor.

await karma() Dict[asyncpraw.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().

await me(use_cache: bool = True) Optional[asyncpraw.models.Redditor]

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 Async PRAW 8 this method will raise ReadOnlyException when called in read_only mode. To operate in Async PRAW 8 mode, set the config variable praw8_raise_exception_on_me to True.

moderator_subreddits(**generator_kwargs: Union[str, int, Dict[str, str]]) AsyncIterator[asyncpraw.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:

async for subreddit in reddit.user.moderator_subreddits(limit=None):
    print(str(subreddit))
await multireddits() List[asyncpraw.models.Multireddit]

Return a list of Multireddits belonging to the user.

classmethod parse(data: Dict[str, Any], reddit: asyncpraw.Reddit) Any

Return an instance of cls from data.

Parameters
  • data – The structured data.

  • reddit – An instance of Reddit.

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

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).

Raises

asyncprawcore.BadRequest when pinning a removed or deleted submission.

Raises

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

me = await reddit.user.me()
async for submission in me.submissions.new():
    await reddit.user.pin(submission)
    break
preferences() asyncpraw.models.Preferences

Get an instance of Preferences.

The preferences can be accessed as a dict like so:

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

Preferences can be updated via:

await 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 = await reddit.user.preferences()
new_prefs = await original_preferences.update(invalid_param=123)
print(original_preferences == new_prefs)  # True, no change
subreddits(**generator_kwargs: Union[str, int, Dict[str, str]]) AsyncIterator[asyncpraw.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:

async for subreddit in reddit.user.subreddits(limit=None):
    print(str(subreddit))
await trusted() List[asyncpraw.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 = await reddit.user.trusted()
for user in trusted_users:
    print(f"User: {user.name}, time: {user.date}")