mirror of
https://github.com/wassname/talk.git
synced 2026-07-07 12:18:52 +08:00
57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
const { DISABLE_AUTOFLAG_SUSPECT_WORDS } = require('../../../config');
|
|
|
|
// This phase checks the comment against the wordlist.
|
|
module.exports = async (ctx, comment, { settings }) => {
|
|
const { connectors: { services: { Wordlist } } } = ctx;
|
|
|
|
// Create a new instance of the Wordlist.
|
|
const wl = new Wordlist();
|
|
|
|
// Load the wordlist.
|
|
wl.upsert(settings.wordlist);
|
|
|
|
// Scan the comment body for wordlist violations.
|
|
const { banned = null, suspect = null } = wl.scan('body', comment.body);
|
|
|
|
// Decide the status based on whether or not the current asset/settings
|
|
// has pre-mod enabled or not. If the comment was rejected based on the
|
|
// wordlist, then reject it, otherwise if the moderation setting is
|
|
// premod, set it to `premod`.
|
|
if (banned) {
|
|
// Add the flag related to Trust to the comment.
|
|
return {
|
|
status: 'REJECTED',
|
|
actions: [
|
|
{
|
|
action_type: 'FLAG',
|
|
user_id: null,
|
|
group_id: 'BANNED_WORD',
|
|
metadata: {},
|
|
},
|
|
],
|
|
};
|
|
}
|
|
|
|
// If the comment has a suspect word or a link, we need to add a
|
|
// flag to it to indicate that it needs to be looked at.
|
|
// Otherwise just return the new comment.
|
|
|
|
// If the wordlist has matched the suspect word filter and we haven't disabled
|
|
// auto-flagging suspect words, then we should flag the comment!
|
|
if (suspect && !DISABLE_AUTOFLAG_SUSPECT_WORDS) {
|
|
// TODO: this is kind of fragile, we should refactor this to resolve
|
|
// all these const's that we're using like 'COMMENTS', 'FLAG' to be
|
|
// defined in a checkable schema.
|
|
return {
|
|
actions: [
|
|
{
|
|
action_type: 'FLAG',
|
|
user_id: null,
|
|
group_id: 'SUSPECT_WORD',
|
|
metadata: {},
|
|
},
|
|
],
|
|
};
|
|
}
|
|
};
|