22 lines
738 B
TypeScript
22 lines
738 B
TypeScript
export interface ModerationResult {
|
|
allowed: boolean
|
|
categories: string[]
|
|
}
|
|
|
|
const explicitPatterns = [
|
|
/\b(?:explicit sex|porn(?:ography)?|rape|sexual assault)\b/i,
|
|
/\b(?:nude|naked)\s+(?:child|minor|teen)\b/i,
|
|
/\b(?:child|minor|underage)\s+(?:sex|sexual|erotic)\b/i,
|
|
]
|
|
|
|
const extremeGorePatterns = [
|
|
/\b(?:graphic dismemberment|torture porn|extreme gore)\b/i,
|
|
]
|
|
|
|
export function moderate13Plus(text: string): ModerationResult {
|
|
const categories: string[] = []
|
|
if (explicitPatterns.some(pattern => pattern.test(text))) categories.push('sexual_explicit')
|
|
if (extremeGorePatterns.some(pattern => pattern.test(text))) categories.push('extreme_graphic_violence')
|
|
return { allowed: categories.length === 0, categories }
|
|
}
|