Live video on the AT Protocol
at natb/command-errors 142 lines 4.0 kB view raw
1package atproto 2 3import ( 4 "strings" 5 6 comatproto "github.com/bluesky-social/indigo/api/atproto" 7) 8 9const ( 10 // from com.atproto.label.defs 11 LabelHide = "!hide" 12 LabelNoPromote = "!no-promote" 13 LabelWarn = "!warn" 14 LabelNoUnauthenticated = "!no-unauthenticated" 15 LabelDMCAViolation = "dmca-violation" 16 LabelDoxxing = "doxxing" 17 LabelPorn = "porn" 18 LabelSexual = "sexual" 19 LabelNudity = "nudity" 20 LabelNSFL = "nsfl" 21 LabelGore = "gore" 22 23 // referenced in https://atproto.com/specs/label 24 LabelTakedown = "!takedown" 25 LabelSuspend = "!suspend" 26 27 // borrowed from moderation.bsky.app 28 LabelSexualFigurative = "sexual-figurative" 29 LabelGraphicMedia = "graphic-media" 30 LabelSelfHarm = "self-harm" 31 LabelSensitive = "sensitive" 32 LabelExtremist = "extremist" 33 LabelIntolerant = "intolerant" 34 LabelThreat = "threat" 35 LabelRude = "rude" 36 LabelIllicit = "illicit" 37 LabelSecurity = "security" 38 LabelUnsafeLink = "unsafe-link" 39 LabelImpersonation = "impersonation" 40 LabelMisinformation = "misinformation" 41 LabelScam = "scam" 42 LabelEngagementFarming = "engagement-farming" 43 LabelSpam = "spam" 44 LabelRumor = "rumor" 45 LabelMisleading = "misleading" 46 LabelInauthentic = "inauthentic" 47) 48 49var bannedLabels = map[string]bool{ 50 LabelDMCAViolation: true, 51 LabelDoxxing: true, 52 LabelPorn: true, 53 LabelSexual: true, 54 LabelNudity: true, 55 LabelNSFL: true, 56 LabelGore: true, 57 LabelTakedown: true, 58 LabelSuspend: true, 59 LabelSexualFigurative: true, 60 LabelGraphicMedia: true, 61 LabelSelfHarm: true, 62 LabelSensitive: true, 63 LabelExtremist: true, 64 LabelIntolerant: true, 65 LabelThreat: true, 66 LabelRude: true, 67 LabelIllicit: true, 68 LabelSecurity: true, 69 LabelUnsafeLink: true, 70 LabelImpersonation: true, 71 LabelMisinformation: true, 72 LabelScam: true, 73 LabelEngagementFarming: true, 74 LabelSpam: true, 75 LabelRumor: true, 76 LabelMisleading: true, 77 LabelInauthentic: true, 78} 79 80// Given a users' labels, determine if they are banned 81func IsBanned(labels ...*comatproto.LabelDefs_Label) bool { 82 for _, l := range labels { 83 if !strings.HasPrefix(l.Uri, "did:") { 84 // this is a label on a record, not a user 85 continue 86 } 87 if bannedLabels[l.Val] { 88 return true 89 } 90 } 91 return false 92} 93 94var chatHiddenLabels = map[string]bool{ 95 // from com.atproto.label.defs 96 LabelHide: true, 97 LabelNoPromote: true, 98 LabelWarn: true, 99 LabelNoUnauthenticated: true, 100 LabelDMCAViolation: true, 101 LabelDoxxing: true, 102 LabelPorn: true, 103 LabelSexual: true, 104 LabelNudity: true, 105 LabelNSFL: true, 106 LabelGore: true, 107 LabelTakedown: true, 108 LabelSuspend: true, 109 LabelSexualFigurative: true, 110 LabelGraphicMedia: true, 111 LabelSelfHarm: true, 112 LabelSensitive: true, 113 LabelExtremist: true, 114 LabelIntolerant: true, 115 LabelThreat: true, 116 LabelRude: true, 117 LabelIllicit: true, 118 LabelSecurity: true, 119 LabelUnsafeLink: true, 120 LabelImpersonation: true, 121 LabelMisinformation: true, 122 LabelScam: true, 123 LabelEngagementFarming: true, 124 LabelSpam: true, 125 LabelRumor: true, 126 LabelMisleading: true, 127 LabelInauthentic: true, 128} 129 130// Given a users' labels, determine if they are banned 131func IsChatHidden(labels ...*comatproto.LabelDefs_Label) bool { 132 for _, l := range labels { 133 if !strings.HasPrefix(l.Uri, "did:") { 134 // this is a label on a record, not a user 135 continue 136 } 137 if bannedLabels[l.Val] { 138 return true 139 } 140 } 141 return false 142}