A collection of Osprey rules for ATProto

add bsky store rule

+83
+51
rules/record/post/bsky_store.sml
··· 1 + Import( 2 + rules=[ 3 + 'models/base.sml', 4 + 'models/record/base.sml', 5 + 'models/record/post.sml', 6 + ], 7 + ) 8 + 9 + _AgeGate = AccountAgeSecondsUnwrapped <= Day or PostsCount <= 5 10 + 11 + _BskyStoreDisplayName = RegexMatch(target=DisplayName, pattern=r'(?i)^bl?sky ? sto?re$') 12 + 13 + _DisplayNameGate = _BskyStoreDisplayName == True and _AgeGate 14 + 15 + _HasDomain = SimpleListContains( 16 + cache_name='bsky_store_post_domains', 17 + list=['tinyurl.com'], 18 + phrases=PostAllDomains, 19 + ) != None 20 + 21 + _HasWord = SimpleListContains( 22 + cache_name='bsky_store_post_phrases', 23 + list=[ 24 + 'sold', 25 + 'order', 26 + 't-shirt', 27 + 'tshirt', 28 + 'store', 29 + 'sell', 30 + ], 31 + phrases=PostTextTokens, 32 + ) != None 33 + 34 + _PostGate = _HasDomain and _HasWord and _AgeGate 35 + 36 + BskyStorePostRule = Rule( 37 + when_all=[_DisplayNameGate or _PostGate], 38 + description='Likely Bsky store account', 39 + ) 40 + 41 + WhenRules( 42 + rules_any=[BskyStorePostRule], 43 + then=[ 44 + AtprotoLabel( 45 + entity=UserId, 46 + label='shopping-spam', 47 + comment='Bluesky store shopping spam', 48 + expiration_in_hours=None, 49 + ), 50 + ], 51 + )
+1
rules/record/post/index.sml
··· 13 13 Require(rule='rules/record/post/new_account_slurs.sml') 14 14 Require(rule='rules/record/post/negative_posting.sml') 15 15 Require(rule='rules/record/post/toxic_posting.sml') 16 + Require(rule='rules/record/post/bsky_store.sml') 16 17 17 18 # Replies Only 18 19 Require(
+28
rules/record/profile/bsky_store.sml
··· 1 + Import( 2 + rules=[ 3 + 'models/base.sml', 4 + 'models/record/base.sml', 5 + 'models/record/profile.sml', 6 + ], 7 + ) 8 + 9 + _BskyStoreDisplayName = RegexMatch(target=ProfileDisplayName, pattern=r'(?i)^bl?sky ? sto?re$') 10 + 11 + _Gate = _BskyStoreDisplayName == True and (AccountAgeSecondsUnwrapped <= Day or PostsCount <= 5) 12 + 13 + BskyStoreProfileRule = Rule( 14 + when_all=[_Gate], 15 + description='Likely Bsky store account', 16 + ) 17 + 18 + WhenRules( 19 + rules_any=[BskyStoreProfileRule], 20 + then=[ 21 + AtprotoLabel( 22 + entity=UserId, 23 + label='shopping-spam', 24 + comment='Bluesky store shopping spam', 25 + expiration_in_hours=None, 26 + ), 27 + ], 28 + )
+3
rules/record/profile/index.sml
··· 9 9 Require( 10 10 rule='rules/record/profile/hailey_profile.sml', 11 11 ) 12 + Require( 13 + rule='rules/record/profile/bsky_store.sml', 14 + )