Source code for redditwarp.models.subreddit_user


from __future__ import annotations
from typing import Any, Mapping, Optional

from functools import cached_property
from datetime import datetime, timezone

[docs]class SubredditUser: @cached_property def added_at(self) -> datetime: return datetime.fromtimestamp(self.added_ut, timezone.utc) def __init__(self, d: Mapping[str, Any]) -> None: self.d: Mapping[str, Any] = d ("") full_id36: str = d['id'] _, _, id36 = full_id36.partition('_') self.id36: str = id36 (""" User ID as a base 36 number. """) self.idn: int = int(id36, 36) (""" User ID. """) self.id: int = self.idn (""" Same as :attr:`idn`. """) self.name: str = d['username'] (""" Username. """) self.account_icon: str = d['accountIcon'] (""" URL of the user account's icon. """) self.icon_size: tuple[int, int] = d['iconSize'] (""" Usually `(256, 256)`. """) self.added_ut: int = 0 ("")
[docs]class Moderator(SubredditUser): def __init__(self, d: Mapping[str, Any]) -> None: super().__init__(d) self.added_ut: int = d['moddedAtUTC'] (""" UNIX timestamp of when the user added as a moderator. """) self.flair_text: str = d['authorFlairText'] (""" The flair text of the moderator. """) self.permissions: set[str] = {k for k, v in d['modPermissions'].items() if v} (""" Values: `all`, `wiki`, `chat_operator`, `chat_config`, `posts`, `access`, `mail`, `config`, `flair`. """) self.post_karma: int = d['postKarma'] ("")
[docs]class ApprovedUser(SubredditUser): def __init__(self, d: Mapping[str, Any]) -> None: super().__init__(d) self.added_ut: int = d['approvedAtUTC'] (""" UNIX timestamp of when the user added as an approved user. """)
[docs]class BannedUser(SubredditUser): def __init__(self, d: Mapping[str, Any]) -> None: super().__init__(d) self.added_ut: int = d['bannedAtUTC'] (""" UNIX timestamp of when the user was banned. """) self.agent_name: str = d['bannedBy'] (""" Name of the moderator who banned the user. Unknown what happens if the user is deleted. Is the value `[deleted]`, an empty string, or does the field in the underlying object not exist? If you have any information about this, please open an issue report at `<https://github.com/Pyprohly/redditwarp/issues>`_. """) self.reason: str = d['reason'] or '' (""" Ban reason. """) self.note: str = d['modNote'] or '' (""" A moderator note. """) self.message: str = d['banMessage'] (""" The message that was sent to the user when they were banned. """) self.days_remaining: Optional[int] = d['duration'] (""" Number of days until the ban is lifted. Value `None` if the ban is permanent. """)
[docs]class MutedUser(SubredditUser): def __init__(self, d: Mapping[str, Any]) -> None: super().__init__(d) self.added_ut: int = d['mutedAtUTC'] (""" UNIX timestamp of when the user was muted. """) self.agent_name: str = d['mutedBy'] (""" Name of the moderator who muted the user. Unknown what happens if the user is deleted. Is the value `[deleted]`, an empty string, or does the field in the underlying object not exist? If you have any information about this, please open an issue report at `<https://github.com/Pyprohly/redditwarp/issues>`_. """) self.reason: str = d['reason'] (""" A moderator note. """)