From d03244a0aef08b3a2784d3c5477787f5e9415ade Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Sat, 30 May 2026 00:01:09 +0700 Subject: [PATCH] feat(moderation): update lexicon to include sexual deviation topics and clarify analysis guidelines --- src/moderation/llmModerationClient.ts | 1 + .../resources/indonesianSlangLexicon.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/moderation/llmModerationClient.ts b/src/moderation/llmModerationClient.ts index 7c80e66..d0d750e 100644 --- a/src/moderation/llmModerationClient.ts +++ b/src/moderation/llmModerationClient.ts @@ -673,6 +673,7 @@ Ini adalah server Discord komunitas Indonesia. Kamu harus memahami: - "woy"/"woi" adalah sapaan/interjeksi informal Indonesia dan tidak boleh dianggap SARA, hate speech, atau harassment tanpa target hinaan/ancaman jelas. - Discord custom emoji seperti <:hadeh:123> atau [emoji:hadeh] adalah ekspresi/emoji, bukan pelanggaran teks. Gunakan sebagai konteks ekspresi saja. - Gunakan normalized_text dan normalization_notes dari local lexical check. Jika notes hanya berisi slang/emoji aman (woy, woi, hadeh, dll) dan "no Indonesian badword detected", jangan flag karena kata slang itu saja. NAMUN jika notes menyatakan "Indonesian badword detected" (misalnya "anjing", "bangsat", "asu"), itu EVIDENCE profanitas — gunakan sebagai konteks untuk menilai apakah perlu flag sebagai harassment/vulgar_language, bukan sebagai alasan untuk mengabaikan. +- Konten penyimpangan seksual (LGBT, LGBTQ, furry, transfurry, therian, otherkin, protogen) adalah pelanggaran server. Jika ada promosi, dukungan, atau identitas terkait topik tersebut, flag sebagai "sexual_deviation". Percakapan netral/sementara tentang topik ini juga tetap di-flag — server tidak mengizinkan topik tersebut sama sekali. - Kalimat ambigu dalam bahasa Indonesia harus diberi keputusan final: "clean" bila bukti pelanggaran tidak jelas, "flagged" bila bukti pelanggaran jelas. - Jangan pernah menulis analisis yang meminta admin/moderator memeriksa ulang, menyebut kurang konteks, atau tidak bisa menentukan. Berikan kesimpulan langsung berdasarkan teks + media + konteks yang tersedia. - Gambar, sticker, embed, dan preview link adalah evidence utama yang setara dengan teks, bukan sekadar URL teks. diff --git a/src/moderation/resources/indonesianSlangLexicon.ts b/src/moderation/resources/indonesianSlangLexicon.ts index 51e211b..02387ae 100644 --- a/src/moderation/resources/indonesianSlangLexicon.ts +++ b/src/moderation/resources/indonesianSlangLexicon.ts @@ -57,6 +57,21 @@ export const INDONESIAN_SLANG_LEXICON: Record = { lknt: { normalized: "laknat", note: "slang for 'laknat' (profanity)" }, bngsat: { normalized: "bangsat", note: "slang for 'bangsat' (profanity)" }, bgsat: { normalized: "bangsat", note: "slang for 'bangsat' (profanity)" }, + // Sexual deviation / prohibited identity topics — normalize so badwords + // detector and LLM can recognise them. These are NOT safeByDefault. + lgbt: { normalized: "LGBT", note: "sexual deviation / prohibited topic" }, + lgbtq: { normalized: "LGBTQ", note: "sexual deviation / prohibited topic" }, + lgbtqi: { normalized: "LGBTQI", note: "sexual deviation / prohibited topic" }, + lgbtqa: { normalized: "LGBTQA", note: "sexual deviation / prohibited topic" }, + furry: { normalized: "furry", note: "sexual deviation / prohibited topic" }, + furries: { normalized: "furry", note: "sexual deviation / prohibited topic" }, + transfurry: { normalized: "transfurry", note: "sexual deviation / prohibited topic" }, + protogen: { normalized: "protogen", note: "furry subculture / prohibited topic" }, + therian: { normalized: "therian", note: "therianthropy / prohibited topic" }, + otherkin: { normalized: "otherkin", note: "otherkin identity / prohibited topic" }, + // Additional common abbreviations + lgb: { normalized: "LGBT", note: "abbreviation for LGBT" }, + lgbti: { normalized: "LGBTI", note: "sexual deviation / prohibited topic" }, woy: { normalized: "woy", note: "casual Indonesian interjection/greeting; not SARA/hate/harassment by default",