@atproto/api
Version:
Client library for atproto and Bluesky
833 lines (606 loc) ⢠8.32 kB
Markdown
<!-- this doc is generated by ./scripts/docs/profile-moderation-behaviors.mjs -->
# Profile moderation behaviors
This document is a reference for the expected behaviors for a profile in the application based on some given scenarios. The <code>moderateProfile()</code> command condense down to the following yes or no decisions:
- <code>res.account.filter</code> Do not show the account in feeds.
- <code>res.account.blur</code> Put the account (in listings, when viewing) behind a warning cover.
- <code>res.account.noOverride</code> Do not allow the account's blur cover to be lifted.
- <code>res.account.alert</code> Add a warning to the account but do not cover it.
- <code>res.profile.blur</code> Put the profile details (handle, display name, bio) behind a warning cover.
- <code>res.profile.noOverride</code> Do not allow the profile's blur cover to be lifted.
- <code>res.profile.alert</code> Add a warning to the profile but do not cover it.
- <code>res.avatar.blur</code> Put the avatar behind a cover.
- <code>res.avatar.noOverride</code> Do not allow the avatars's blur cover to be lifted.
- <code>res.avatar.alert</code> Put a warning icon on the avatar.
Key:
- ā = Filter Content
- š« = Blur (no-override)
- ā = Blur
- šŖ§ = Alert
## Scenarios
<table>
<tr><th>Scenario</th><th>Filter</th><th>Account</th><th>Profile</td><th>Avatar</th></tr>
<tr>
<td><strong>Imperative label ('!hide') on account</strong></td>
<td>
ā
</td>
<td>
š«
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Imperative label ('!hide') on profile</strong></td>
<td>
</td>
<td>
</td>
<td>
š«
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Imperative label ('!no-promote') on account</strong></td>
<td>
ā
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td><strong>Imperative label ('!no-promote') on profile</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td><strong>Imperative label ('!warn') on account</strong></td>
<td>
</td>
<td>
ā
</td>
<td>
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Imperative label ('!warn') on profile</strong></td>
<td>
</td>
<td>
</td>
<td>
ā
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Imperative label ('!no-unauthenticated') on account when logged out</strong></td>
<td>
ā
</td>
<td>
š«
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Imperative label ('!no-unauthenticated') on profile when logged out</strong></td>
<td>
</td>
<td>
</td>
<td>
š«
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Imperative label ('!no-unauthenticated') on account when logged in</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td><strong>Imperative label ('!no-unauthenticated') on profile when logged in</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr><th>Scenario</th><th>Filter</th><th>Account</th><th>Profile</td><th>Avatar</th></tr>
<tr>
<td><strong>Blur label ('intolerant') on account (hide)</strong></td>
<td>
ā
</td>
<td>
ā
</td>
<td>
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Blur label ('intolerant') on profile (hide)</strong></td>
<td>
</td>
<td>
</td>
<td>
ā
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Blur label ('intolerant') on account (warn)</strong></td>
<td>
</td>
<td>
ā
</td>
<td>
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Blur label ('intolerant') on profile (warn)</strong></td>
<td>
</td>
<td>
</td>
<td>
ā
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Blur label ('intolerant') on account (ignore)</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td><strong>Blur label ('intolerant') on profile (ignore)</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr><th>Scenario</th><th>Filter</th><th>Account</th><th>Profile</td><th>Avatar</th></tr>
<tr>
<td><strong>Blur-media label ('porn') on account (hide)</strong></td>
<td>
ā
</td>
<td>
ā
</td>
<td>
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Blur-media label ('porn') on profile (hide)</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Blur-media label ('porn') on account (warn)</strong></td>
<td>
</td>
<td>
ā
</td>
<td>
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Blur-media label ('porn') on profile (warn)</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Blur-media label ('porn') on account (ignore)</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td><strong>Blur-media label ('porn') on profile (ignore)</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr><th>Scenario</th><th>Filter</th><th>Account</th><th>Profile</td><th>Avatar</th></tr>
<tr>
<td><strong>Notice label ('scam') on account (hide)</strong></td>
<td>
ā
</td>
<td>
šŖ§
</td>
<td>
</td>
<td>
šŖ§
</td>
</tr>
<tr>
<td><strong>Notice label ('scam') on profile (hide)</strong></td>
<td>
</td>
<td>
</td>
<td>
šŖ§
</td>
<td>
šŖ§
</td>
</tr>
<tr>
<td><strong>Notice label ('scam') on account (warn)</strong></td>
<td>
</td>
<td>
šŖ§
</td>
<td>
</td>
<td>
šŖ§
</td>
</tr>
<tr>
<td><strong>Notice label ('scam') on profile (warn)</strong></td>
<td>
</td>
<td>
</td>
<td>
šŖ§
</td>
<td>
šŖ§
</td>
</tr>
<tr>
<td><strong>Notice label ('scam') on account (ignore)</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td><strong>Notice label ('scam') on profile (ignore)</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr><th>Scenario</th><th>Filter</th><th>Account</th><th>Profile</td><th>Avatar</th></tr>
<tr>
<td><strong>Adult-only label on account when adult content is disabled</strong></td>
<td>
ā
</td>
<td>
š«
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Adult-only label on profile when adult content is disabled</strong></td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr><th>Scenario</th><th>Filter</th><th>Account</th><th>Profile</td><th>Avatar</th></tr>
<tr>
<td><strong>Self-profile: !hide on account</strong></td>
<td>
</td>
<td>
šŖ§
</td>
<td>
</td>
<td>
šŖ§
</td>
</tr>
<tr>
<td><strong>Self-profile: !hide on profile</strong></td>
<td>
</td>
<td>
</td>
<td>
šŖ§
</td>
<td>
šŖ§
</td>
</tr>
<tr><th>Scenario</th><th>Filter</th><th>Account</th><th>Profile</td><th>Avatar</th></tr>
<tr>
<td><strong>Mute/block: Blocking user</strong></td>
<td>
ā
</td>
<td>
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Mute/block: Blocking-by-list user</strong></td>
<td>
ā
</td>
<td>
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Mute/block: Blocked by user</strong></td>
<td>
ā
</td>
<td>
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Mute/block: Muted user</strong></td>
<td>
ā
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td><strong>Mute/block: Muted-by-list user</strong></td>
<td>
ā
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr><th>Scenario</th><th>Filter</th><th>Account</th><th>Profile</td><th>Avatar</th></tr>
<tr>
<td><strong>Prioritization: blocking & blocked-by user</strong></td>
<td>
ā
</td>
<td>
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Prioritization: '!hide' label on account of blocked user</strong></td>
<td>
ā
</td>
<td>
š«
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Prioritization: '!hide' and 'intolerant' labels on account (hide)</strong></td>
<td>
ā
</td>
<td>
š«
</td>
<td>
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Prioritization: '!warn' and 'intolerant' labels on account (hide)</strong></td>
<td>
ā
</td>
<td>
ā
</td>
<td>
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Prioritization: '!warn' and 'porn' labels on account (hide)</strong></td>
<td>
ā
</td>
<td>
ā
</td>
<td>
</td>
<td>
ā
</td>
</tr>
<tr>
<td><strong>Prioritization: intolerant label on account (hide) and scam label on profile (warn)</strong></td>
<td>
ā
</td>
<td>
ā
</td>
<td>
šŖ§
</td>
<td>
ā
šŖ§
</td>
</tr>
<tr>
<td><strong>Prioritization: !hide on account, !warn on profile</strong></td>
<td>
ā
</td>
<td>
š«
</td>
<td>
ā
</td>
<td>
š«
</td>
</tr>
<tr>
<td><strong>Prioritization: !warn on account, !hide on profile</strong></td>
<td>
</td>
<td>
ā
</td>
<td>
š«
</td>
<td>
š«
</td>
</tr>
</table>