[core] Add default trigger value
This commit is contained in:
parent
6d3664968d
commit
09810680e8
|
@ -20,6 +20,51 @@
|
|||
if the remaining message is legitimate. For example insults or spam
|
||||
words like "blockchain".
|
||||
</p>
|
||||
<p>
|
||||
<strong>Example: </strong>
|
||||
For example say you want all messages to be distributed except
|
||||
messages with insult/spam words "fuck", "asshat", "blockchain" then
|
||||
you can add these words to the Badwords like so:
|
||||
<img class="image" src="assets/badwords.png" alt="image" />
|
||||
Note the dot in the Triggers section. It means that every message is
|
||||
being relayed except those in badwords. If you would remove it, no
|
||||
message would be relayed at all, so only change the Trigger section if
|
||||
you are sure what you do.
|
||||
</p>
|
||||
<p>
|
||||
Now if a user sends a message including "asshat" the message will
|
||||
<strong>not be distributed</strong>. For example:
|
||||
</p>
|
||||
<div class="example-container">
|
||||
<mat-card>
|
||||
<mat-card-title>xyz is an asshat!</mat-card-title>
|
||||
<mat-card-subtitle
|
||||
>This message will
|
||||
<strong>not be distributed</strong>.</mat-card-subtitle
|
||||
>
|
||||
</mat-card>
|
||||
<mat-card>
|
||||
<mat-card-title>xyz is an verybigAsshat!</mat-card-title>
|
||||
<mat-card-subtitle
|
||||
>This message will
|
||||
<strong>not be distributed</strong>.</mat-card-subtitle
|
||||
>
|
||||
</mat-card>
|
||||
<mat-card>
|
||||
<mat-card-title>xyz is nice!</mat-card-title>
|
||||
<mat-card-subtitle
|
||||
>This message will be distributed.</mat-card-subtitle
|
||||
>
|
||||
</mat-card>
|
||||
</div>
|
||||
<p>
|
||||
<strong>For experts only:</strong> We use python re module with
|
||||
<strong>re.search(pattern, string, flags=re.IGNORECASE)</strong> for
|
||||
both Triggers and Badwords. View
|
||||
<a href="https://docs.python.org/3/library/re.html" target="_blank"
|
||||
>Documentation</a
|
||||
>.
|
||||
</p>
|
||||
</mat-expansion-panel>
|
||||
</mat-accordion>
|
||||
</div>
|
||||
|
|
|
@ -22,3 +22,16 @@
|
|||
margin-top: 2px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.image {
|
||||
width: 80%;
|
||||
margin-left: 10%;
|
||||
margin-right: 10%;
|
||||
}
|
||||
|
||||
.example-container {
|
||||
margin: 5%;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
gap: 10px;
|
||||
}
|
||||
|
|
BIN
kibicara-frontend/src/assets/badwords.png
Normal file
BIN
kibicara-frontend/src/assets/badwords.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
|
@ -9,7 +9,7 @@ from asyncio import create_task, Queue
|
|||
from enum import auto, Enum
|
||||
from kibicara.model import BadWord, Trigger
|
||||
from logging import getLogger
|
||||
from re import match
|
||||
from re import search, IGNORECASE
|
||||
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
@ -147,11 +147,11 @@ class Censor:
|
|||
|
||||
async def __is_appropriate(self, message):
|
||||
for badword in await BadWord.objects.filter(hood=self.hood).all():
|
||||
if match(badword.pattern, message.text):
|
||||
if search(badword.pattern, message.text, IGNORECASE):
|
||||
logger.debug('Matched bad word - dropped message: %s' % message.text)
|
||||
return False
|
||||
for trigger in await Trigger.objects.filter(hood=self.hood).all():
|
||||
if match(trigger.pattern, message.text):
|
||||
if search(trigger.pattern, message.text, IGNORECASE):
|
||||
logger.debug('Matched trigger - passed message: %s' % message.text)
|
||||
return True
|
||||
logger.debug('Did not match any trigger - dropped message: %s' % message.text)
|
||||
|
|
|
@ -72,6 +72,10 @@ async def hood_create(values: BodyHood, response: Response, admin=Depends(get_ad
|
|||
hood = await Hood.objects.create(**values.__dict__)
|
||||
await AdminHoodRelation.objects.create(admin=admin.id, hood=hood.id)
|
||||
spawner.start(hood)
|
||||
|
||||
# Initialize Triggers to match all
|
||||
await Trigger.objects.create(hood=hood, pattern='.')
|
||||
|
||||
response.headers['Location'] = '%d' % hood.id
|
||||
return hood
|
||||
except IntegrityError:
|
||||
|
|
|
@ -22,14 +22,15 @@ def test_email_subscribe_unsubscribe(client, hood_id, receive_email):
|
|||
r'(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+',
|
||||
body,
|
||||
)[0]
|
||||
start = len('token=')
|
||||
response = client.post(
|
||||
'/api/hoods/%d/email/subscribe/confirm/%s'
|
||||
% (hood_id, urlparse(confirm_url).query[len('token=') :])
|
||||
% (hood_id, urlparse(confirm_url).query[start:])
|
||||
)
|
||||
assert response.status_code == status.HTTP_201_CREATED
|
||||
response = client.post(
|
||||
'/api/hoods/%d/email/subscribe/confirm/%s'
|
||||
% (hood_id, urlparse(confirm_url).query[len('token=') :])
|
||||
% (hood_id, urlparse(confirm_url).query[start:])
|
||||
)
|
||||
assert response.status_code == status.HTTP_409_CONFLICT
|
||||
token = to_token(email=mail['to'], hood=hood_id)
|
||||
|
|
Loading…
Reference in a new issue