Mastodon.py/mastodon/reports.py

62 wiersze
2.6 KiB
Python

# reports.py - report endpoints
from mastodon.versions import _DICT_VERSION_REPORT
from mastodon.errors import MastodonVersionError, MastodonIllegalArgumentError
from mastodon.utility import api_version
from mastodon.internals import Mastodon as Internals
from mastodon.types import NonPaginatableList, Report, Account, IdType, Status, Rule
from typing import Union, Optional, List
class Mastodon(Internals):
###
# Reading data: Reports
###
@api_version("1.1.0", "1.1.0", _DICT_VERSION_REPORT)
def reports(self) -> NonPaginatableList[Report]:
"""
Fetch a list of reports made by the logged-in user.
Warning: This method has now finally been removed, and will not
work on Mastodon versions 2.5.0 and above.
"""
if self.verify_minimum_version("2.5.0", cached = True):
raise MastodonVersionError("API removed in Mastodon 2.5.0")
return self.__api_request('GET', '/api/v1/reports')
###
# Writing data: Reports
###
@api_version("1.1.0", "3.5.0", _DICT_VERSION_REPORT)
def report(self, account_id: Union[Account, IdType], status_ids: Optional[Union[Status, IdType]] = None, comment: Optional[str] = None,
forward: bool = False, category: Optional[str] = None, rule_ids: Optional[List[Union[Rule, IdType]]] = None) -> Report:
"""
Report statuses to the instances administrators.
Accepts a list of toot IDs associated with the report, and a comment.
Starting with Mastodon 3.5.0, you can also pass a `category` (one out of
"spam", "violation" or "other") and `rule_ids` (a list of rule IDs corresponding
to the rules returned by the :ref:`instance() <instance()>` API).
Set `forward` to True to forward a report of a remote user to that users
instance as well as sending it to the instance local administrators.
"""
if category is not None and not category in ["spam", "violation", "other"]:
raise MastodonIllegalArgumentError("Invalid report category (must be spam, violation or other)")
account_id = self.__unpack_id(account_id)
if status_ids is not None:
if not isinstance(status_ids, list):
status_ids = [status_ids]
status_ids = [self.__unpack_id(x) for x in status_ids]
params_initial = locals()
if not forward:
del params_initial['forward']
params = self.__generate_params(params_initial)
return self.__api_request('POST', '/api/v1/reports/', params)