Source code for redditwarp.siteprocs.modmail.ASYNC
from __future__ import annotations
from typing import TYPE_CHECKING, Sequence, Mapping
if TYPE_CHECKING:
from ...client_ASYNC import Client
from ...models.modmail import ModmailSubreddit
from ...model_loaders.modmail import load_modmail_subreddit
from .conversation_ASYNC import ConversationProcedures
from .pull_ASYNC import Pull
[docs]class ModmailProcedures:
def __init__(self, client: Client) -> None:
self._client = client
self.conversation: ConversationProcedures = ConversationProcedures(client)
self.pull: Pull = Pull(client)
[docs] async def get_unread_counts(self) -> Mapping[str, int]:
"""Get unread conversations counts by mailbox.
Returns a dictionary like the following::
{"archived": 0,
"appeals": 0,
"highlighted": 0,
"notifications": 2,
"join_requests": 0,
"filtered": 0,
"new": 1,
"inprogress": 0,
"mod": 0}
.. .RETURNS
:rtype: `Mapping`\\[`str`, `int`]
.. .RAISES
:raises redditwarp.exceptions.RedditError:
+ `USER_REQUIRED`:
There is no user context.
"""
return await self._client.request('GET', '/api/mod/conversations/unread/count')
[docs] async def subreddits(self) -> Sequence[ModmailSubreddit]:
"""Return subreddits the current user is moderating that have modmail enabled.
.. .RETURNS
:rtype: `Sequence`\\[:class:`~.models.modmail.ModmailSubreddit`]
.. .RAISES
:raises redditwarp.http.exceptions.StatusCodeException:
+ `500`:
There is no user context.
"""
root = await self._client.request('GET', '/api/mod/conversations/subreddits')
return [load_modmail_subreddit(d) for d in root['subreddits'].values()]