62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
"""Provide the ModNoteMixin class."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, Any, Generator
|
|
|
|
if TYPE_CHECKING: # pragma: no cover
|
|
import praw.models
|
|
|
|
|
|
class ModNoteMixin:
|
|
"""Interface for classes that can have a moderator note set on them."""
|
|
|
|
def author_notes(
|
|
self, **generator_kwargs: Any
|
|
) -> Generator[praw.models.ModNote, None, None]:
|
|
"""Get the moderator notes for the author of this object in the subreddit it's posted in.
|
|
|
|
:param generator_kwargs: Additional keyword arguments are passed in the
|
|
initialization of the moderator note generator.
|
|
|
|
:returns: A generator of :class:`.ModNote`.
|
|
|
|
For example, to list all notes the author of a submission, try:
|
|
|
|
.. code-block:: python
|
|
|
|
for note in reddit.submission("92dd8").mod.author_notes():
|
|
print(f"{note.label}: {note.note}")
|
|
|
|
"""
|
|
return self.thing.subreddit.mod.notes.redditors(
|
|
self.thing.author, **generator_kwargs
|
|
)
|
|
|
|
def create_note(
|
|
self, *, label: str | None = None, note: str, **other_settings: Any
|
|
) -> praw.models.ModNote:
|
|
"""Create a moderator note on the author of this object in the subreddit it's posted in.
|
|
|
|
:param label: The label for the note. As of this writing, this can be one of the
|
|
following: ``"ABUSE_WARNING"``, ``"BAN"``, ``"BOT_BAN"``,
|
|
``"HELPFUL_USER"``, ``"PERMA_BAN"``, ``"SOLID_CONTRIBUTOR"``,
|
|
``"SPAM_WARNING"``, ``"SPAM_WATCH"``, or ``None`` (default: ``None``).
|
|
:param note: The content of the note. As of this writing, this is limited to 250
|
|
characters.
|
|
:param other_settings: Additional keyword arguments are passed to
|
|
:meth:`~.BaseModNotes.create`.
|
|
|
|
:returns: The new :class:`.ModNote` object.
|
|
|
|
For example, to create a note on a :class:`.Submission`, try:
|
|
|
|
.. code-block:: python
|
|
|
|
reddit.submission("92dd8").mod.create_note(label="HELPFUL_USER", note="Test note")
|
|
|
|
"""
|
|
return self.thing.subreddit.mod.notes.create(
|
|
label=label, note=note, thing=self.thing, **other_settings
|
|
)
|