# ModeratorRelationship

class `praw.models.reddit.subreddit.``ModeratorRelationship`(subreddit, relationship)

  Provides methods to interact with a Subreddit’s moderators.

  Moderators of a subreddit can be iterated through like so:

      for moderator in reddit.subreddit("redditdev").moderator():
          print(moderator)

  `__call__`(redditor=None)

    Return a list of Redditors who are moderators.

    Parameters

      redditor – When provided, return a list containing at most one `Redditor` instance. This is useful to confirm if a relationship exists, or to fetch the metadata associated with a particular relationship (default: None).

    Note

    Unlike other relationship callables, this relationship is not paginated. Thus it simply returns the full list, rather than an iterator for the results.

    To be used like:

        moderators = reddit.subreddit("nameofsub").moderator()

    For example, to list the moderators along with their permissions try:

        for moderator in reddit.subreddit("SUBREDDIT").moderator():
            print(f'{moderator}: {moderator.mod_permissions}')

  `__init__`(subreddit, relationship)

    Create a SubredditRelationship instance.

    Parameters

      - subreddit – The subreddit for the relationship.

      - relationship – The name of the relationship.

  `add`(redditor, permissions=None, **other_settings)

    Add or invite `redditor` to be a moderator of the subreddit.

    Parameters

      - redditor – A redditor name (e.g., `"spez"`) or `Redditor` instance.

      - permissions – When provided (not `None`), permissions should be a list of strings specifying which subset of permissions to grant. An empty list `[]` indicates no permissions, and when not provided `None`, indicates full permissions.

    An invite will be sent unless the user making this call is an admin user.

    For example, to invite `"spez"` with `"posts"` and `"mail"` permissions to `r/test`, try:

        reddit.subreddit("test").moderator.add("spez", ["posts", "mail"])

  `invite`(redditor, permissions=None, **other_settings)

    Invite `redditor` to be a moderator of the subreddit.

    Parameters

      - redditor – A redditor name (e.g., `"spez"`) or `Redditor` instance.

      - permissions – When provided (not `None`), permissions should be a list of strings specifying which subset of permissions to grant. An empty list `[]` indicates no permissions, and when not provided `None`, indicates full permissions.

    For example, to invite `"spez"` with `posts` and `mail` permissions to `r/test`, try:

        reddit.subreddit("test").moderator.invite("spez", ["posts", "mail"])

  `invited`(redditor=None, **generator_kwargs)

    Return a `ListingGenerator` for Redditors invited to be moderators.

    Parameters

      redditor – When provided, return a list containing at most one `Redditor` instance. This is useful to confirm if a relationship exists, or to fetch the metadata associated with a particular relationship (default: None).

    Additional keyword arguments are passed in the initialization of `ListingGenerator`.

    Note

    Unlike other usages of `ListingGenerator`, `limit` has no effect in the quantity returned. This endpoint always returns moderators in batches of 25 at a time regardless of what `limit` is set to.

    Usage:

        for invited_mod in reddit.subreddit("NAME").moderator.invited():
            print(invited_mod)

  `leave`()

    Abdicate the moderator position (use with care).

    For example:

        reddit.subreddit("subredditname").moderator.leave()

  `remove`(redditor)

    Remove `redditor` from this relationship.

    Parameters

      redditor – A redditor name (e.g., `"spez"`) or `Redditor` instance.

  `remove_invite`(redditor)

    Remove the moderator invite for `redditor`.

    Parameters

      redditor – A redditor name (e.g., `"spez"`) or `Redditor` instance.

    For example:

        reddit.subreddit("subredditname").moderator.remove_invite("spez")

  `update`(redditor, permissions=None)

    Update the moderator permissions for `redditor`.

    Parameters

      - redditor – A redditor name (e.g., `"spez"`) or `Redditor` instance.

      - permissions – When provided (not `None`), permissions should be a list of strings specifying which subset of permissions to grant. An empty list `[]` indicates no permissions, and when not provided, `None`, indicates full permissions.

    For example, to add all permissions to the moderator, try:

        subreddit.moderator.update("spez")

    To remove all permissions from the moderator, try:

        subreddit.moderator.update("spez", [])

  `update_invite`(redditor, permissions=None)

    Update the moderator invite permissions for `redditor`.

    Parameters

      - redditor – A redditor name (e.g., `"spez"`) or `Redditor` instance.

      - permissions – When provided (not `None`), permissions should be a list of strings specifying which subset of permissions to grant. An empty list `[]` indicates no permissions, and when not provided, `None`, indicates full permissions.

    For example, to grant the `flair`` and `mail`` permissions to the moderator invite, try:

        subreddit.moderator.update_invite("spez", ["flair", "mail"])