tangled
alpha
login
or
join now
hailey.at
/
atproto-ruleset
3
fork
atom
A collection of Osprey rules for ATProto
3
fork
atom
overview
issues
pulls
pipelines
add bsky store rule
hailey.at
2 months ago
709d8e6f
fd8772a1
+83
4 changed files
expand all
collapse all
unified
split
rules
record
post
bsky_store.sml
index.sml
profile
bsky_store.sml
index.sml
+51
rules/record/post/bsky_store.sml
···
1
1
+
Import(
2
2
+
rules=[
3
3
+
'models/base.sml',
4
4
+
'models/record/base.sml',
5
5
+
'models/record/post.sml',
6
6
+
],
7
7
+
)
8
8
+
9
9
+
_AgeGate = AccountAgeSecondsUnwrapped <= Day or PostsCount <= 5
10
10
+
11
11
+
_BskyStoreDisplayName = RegexMatch(target=DisplayName, pattern=r'(?i)^bl?sky ? sto?re$')
12
12
+
13
13
+
_DisplayNameGate = _BskyStoreDisplayName == True and _AgeGate
14
14
+
15
15
+
_HasDomain = SimpleListContains(
16
16
+
cache_name='bsky_store_post_domains',
17
17
+
list=['tinyurl.com'],
18
18
+
phrases=PostAllDomains,
19
19
+
) != None
20
20
+
21
21
+
_HasWord = SimpleListContains(
22
22
+
cache_name='bsky_store_post_phrases',
23
23
+
list=[
24
24
+
'sold',
25
25
+
'order',
26
26
+
't-shirt',
27
27
+
'tshirt',
28
28
+
'store',
29
29
+
'sell',
30
30
+
],
31
31
+
phrases=PostTextTokens,
32
32
+
) != None
33
33
+
34
34
+
_PostGate = _HasDomain and _HasWord and _AgeGate
35
35
+
36
36
+
BskyStorePostRule = Rule(
37
37
+
when_all=[_DisplayNameGate or _PostGate],
38
38
+
description='Likely Bsky store account',
39
39
+
)
40
40
+
41
41
+
WhenRules(
42
42
+
rules_any=[BskyStorePostRule],
43
43
+
then=[
44
44
+
AtprotoLabel(
45
45
+
entity=UserId,
46
46
+
label='shopping-spam',
47
47
+
comment='Bluesky store shopping spam',
48
48
+
expiration_in_hours=None,
49
49
+
),
50
50
+
],
51
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
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
1
+
Import(
2
2
+
rules=[
3
3
+
'models/base.sml',
4
4
+
'models/record/base.sml',
5
5
+
'models/record/profile.sml',
6
6
+
],
7
7
+
)
8
8
+
9
9
+
_BskyStoreDisplayName = RegexMatch(target=ProfileDisplayName, pattern=r'(?i)^bl?sky ? sto?re$')
10
10
+
11
11
+
_Gate = _BskyStoreDisplayName == True and (AccountAgeSecondsUnwrapped <= Day or PostsCount <= 5)
12
12
+
13
13
+
BskyStoreProfileRule = Rule(
14
14
+
when_all=[_Gate],
15
15
+
description='Likely Bsky store account',
16
16
+
)
17
17
+
18
18
+
WhenRules(
19
19
+
rules_any=[BskyStoreProfileRule],
20
20
+
then=[
21
21
+
AtprotoLabel(
22
22
+
entity=UserId,
23
23
+
label='shopping-spam',
24
24
+
comment='Bluesky store shopping spam',
25
25
+
expiration_in_hours=None,
26
26
+
),
27
27
+
],
28
28
+
)
+3
rules/record/profile/index.sml
···
9
9
Require(
10
10
rule='rules/record/profile/hailey_profile.sml',
11
11
)
12
12
+
Require(
13
13
+
rule='rules/record/profile/bsky_store.sml',
14
14
+
)