summary refs log tree commit diff
path: root/src/util
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-10-01 20:17:14 +0200
committerRory& <root@rory.gay>2025-10-01 20:17:14 +0200
commitc232d5c82ea2bd0bc4e2f86a053e77cf01a9092f (patch)
tree26f256f54ab8a7cc6e259200be59255b02a87348 /src/util
parentSend user settings proto in gateway ready, if one exists (diff)
downloadserver-ts-c232d5c82ea2bd0bc4e2f86a053e77cf01a9092f.tar.xz
Safety hub work
Diffstat (limited to 'src/util')
-rw-r--r--src/util/schemas/responses/AccountStandingResponse.ts146
1 files changed, 134 insertions, 12 deletions
diff --git a/src/util/schemas/responses/AccountStandingResponse.ts b/src/util/schemas/responses/AccountStandingResponse.ts

index cee00741..c64986bd 100644 --- a/src/util/schemas/responses/AccountStandingResponse.ts +++ b/src/util/schemas/responses/AccountStandingResponse.ts
@@ -16,23 +16,145 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ +import { MemberNameType } from "@typescript-eslint/eslint-plugin/dist/util"; +import { Attachment } from "../../entities"; + +export enum AccountStandingState { + ALL_GOOD = 100, + LIMITED = 200, + VERY_LIMITED = 300, + AT_RISK = 400, + SUSPENDED = 500, +} + +export enum AppealEligibility { + DSA_ELIGIBLE = 1, + IN_APP_ELIGIBLE = 2, + AGE_VERIFY_ELIGIBLE = 3, +} + +export enum ClassificationType { + UNKNOWN = 1, + UNSOLICITED_PORNOGRAPHY = 100, + NONCONSENSUAL_PORNOGRAPHY = 200, + GLORIFYING_VIOLENCE = 210, + HATE_SPEECH = 220, + CRACKED_ACCOUNTS = 230, + ILLICIT_GOODS = 240, + SOCIAL_ENGINEERING = 250, + CHILD_SAFETY = 280, + HARRASMENT_AND_BULLYING = 290, + HARRASMENT_AND_BULLYING_2 = 310, + HATEFUL_CONDUCT = 320, + HARRASMENT_AND_BULLYING_3 = 390, + CHILD_SAFETY_2 = 600, + CHILD_SAFETY_3 = 650, + IMPERSONATION = 711, + BAN_EVASION = 720, + MALICIOUS_CONDUCT = 3010, + SPAM = 3030, + NONCONSENSUAL_ADULT_CONTENT = 4000, + FRAUD = 4010, + DOXXING_GUILD_OWNER = 4130, + COPYRIGHT_INFRINGEMENT_GUILD_OWNER = 4140, + CHILD_SAFETY_4 = 5010, + CHILD_SELF_ENDANGERMENT = 5090, + DOXXING_GUILD_MEMBER = 5305, + UNDERAGE = 5411, + COPYRIGHT_INFRINGEMENT_GUILD_MEMBER = 5440, + COPYRIGHT_INFRINGEMENT_3 = 5485, +} + +export enum AppealIngestionType { + WEBFORM = 0, + AGE_VERIFY = 1, + IN_APP = 2, +} + +export enum ClassificationActionType { + BAN = 0, + TEMP_BAN = 1, + GLOBAL_QUARANTINE = 2, + REQUIRE_VERIFICATION = 3, + USER_WARNING = 4, + USER_SPAMMER = 5, + CHANNEL_SPAM = 6, + MESSAGE_SPAM = 7, + DISABLE_SUSPICIOUS_ACTIVITY = 8, + LIMITED_ACCESS = 9, + CHANNEL_SCHEDULE_DELETE = 10, + MESSAGE_CONTENT_REMOVAL = 11, + GUILD_DISABLE_INVITE = 12, + USER_CONTENT_REMOVAL = 13, + USER_USERNAME_MANGLED = 14, + GUILD_LIMITED_ACCESS = 15, + USER_MESSAGE_REMOVAL = 16, + GUILD_DELETE = 20, + USER_PROFILE_MANGLED = 22, +} + +export interface ClassificationAction { + id: string; + action_type: ClassificationActionType; + descriptions: string[]; +} + +export enum AppealStatusValue { + REVIEW_PENDING = 1, + CLASSIFICATION_UPHELD = 2, + CLASSIFICATION_INVALIDATED = 3, +} + +export interface AppealStatus { + status: AppealStatusValue; +} + +// why is this just a reduced message? +export interface FlaggedContent { + type: "message"; + id: string; + content: string; + attachments: Attachment[]; +} + +export interface Classification { + id: string; + classification_type: ClassificationType; + description: string; + explainer_link: string; + actions: ClassificationAction[]; + max_expiration_time: string; // ISO 8601 timestamp + flagged_content: unknown[]; // TODO + appeal_status: AppealStatus; + is_coppa: boolean; + is_spam: boolean; + appeal_ingestion_type: AppealIngestionType; +} + +export enum GuildMemberType { + OWNER = 1, + MEMBER = 2 +} + +export interface GuildMetadata { + name: string; + icon?: string; + member_type: GuildMemberType; +} + +export interface GuildClassification extends Classification { + guild_metadata: GuildMetadata; +} + export interface AccountStandingResponse { - classifications: unknown[]; // TODO: We don't know what this is yet - guild_classifications: unknown[]; // TODO: We don't know what this is yet + classifications: Classification[]; + guild_classifications: GuildClassification[]; account_standing: { - /** - * @defaultValue 100 - * @minimum 0 - * @maximum 100 - */ - state: number; + state: AccountStandingState; }; is_dsa_eligible: boolean; username: string; discriminator: string; // Not sure if this is even valid, we don't have any examples of pre-pomelo users is_appeal_eligible: boolean; - /** - * @description We don't yet know what these mean, but Discord appears to return "1" and "2". - */ - appeal_eligibility: number[]; + appeal_eligibility: AppealEligibility[]; }