From c2682246d62e66ba3b076fe7291d82682f01b57d Mon Sep 17 00:00:00 2001 From: bagasbanuna Date: Sat, 17 Jan 2026 15:59:00 +0800 Subject: [PATCH 1/2] Fix notifikasi forum FixL modified: app/(application)/(user)/_layout.tsx modified: app/(application)/(user)/forum/[id]/index.tsx modified: app/(application)/(user)/forum/create.tsx modified: app/(application)/admin/forum/[id]/list-report-posting.tsx modified: screens/Home/tabsList.ts modified: service/api-admin/api-admin-forum.ts modified: service/api-client/api-forum.ts Add: app/(application)/(user)/forum/[id]/preview-report-posting.tsx types/type-forum.ts ### No Issue --- app/(application)/(user)/_layout.tsx | 9 ++++ app/(application)/(user)/forum/[id]/index.tsx | 21 ++------- .../forum/[id]/preview-report-posting.tsx | 43 +++++++++++++++++++ app/(application)/(user)/forum/create.tsx | 22 ++++++---- .../admin/forum/[id]/list-report-posting.tsx | 7 ++- screens/Home/tabsList.ts | 3 +- service/api-admin/api-admin-forum.ts | 12 +++++- service/api-client/api-forum.ts | 9 ++++ types/type-forum.ts | 15 +++++++ 9 files changed, 111 insertions(+), 30 deletions(-) create mode 100644 app/(application)/(user)/forum/[id]/preview-report-posting.tsx create mode 100644 types/type-forum.ts diff --git a/app/(application)/(user)/_layout.tsx b/app/(application)/(user)/_layout.tsx index 7d75dd1..f6779c5 100644 --- a/app/(application)/(user)/_layout.tsx +++ b/app/(application)/(user)/_layout.tsx @@ -616,6 +616,15 @@ export default function UserLayout() { headerLeft: () => , }} /> + , + }} + /> + + {/* ========== Maps Section ========= */} (null); - const [listComment, setListComment] = useState(null); + const [listComment, setListComment] = useState(null); const [isLoadingComment, setLoadingComment] = useState(false); // Status @@ -122,6 +108,7 @@ export default function ForumDetail() { comment: text, authorId: user?.id, }; + try { setLoadingComment(true); const response = await apiForumCreateComment({ diff --git a/app/(application)/(user)/forum/[id]/preview-report-posting.tsx b/app/(application)/(user)/forum/[id]/preview-report-posting.tsx new file mode 100644 index 0000000..8e1e20a --- /dev/null +++ b/app/(application)/(user)/forum/[id]/preview-report-posting.tsx @@ -0,0 +1,43 @@ +import { NewWrapper, TextCustom } from "@/components"; +import { useAuth } from "@/hooks/use-auth"; +import { + apiForumGetOne, + apiForumGetReportPosting, +} from "@/service/api-client/api-forum"; +import { useFocusEffect, useLocalSearchParams } from "expo-router"; +import { useCallback, useState } from "react"; + +export default function ForumPreviewReportPosting() { + const { id } = useLocalSearchParams(); + const { user } = useAuth(); + const [data, setData] = useState(null); + // Status + + useFocusEffect( + useCallback(() => { + onLoadData(id as string); + }, [id]) + ); + + const onLoadData = async (id: string) => { + try { + const response = await apiForumGetReportPosting({ id }); + setData(response.data); + } catch (error) { + console.log("[ERROR]", error); + } + }; + + return ( + <> + + + Halaman preview repost posting + {JSON.stringify(data, null, 2)} + + untuk report jomentar beda halaman + + + + ); +} diff --git a/app/(application)/(user)/forum/create.tsx b/app/(application)/(user)/forum/create.tsx index 8599bbf..6dd88ba 100644 --- a/app/(application)/(user)/forum/create.tsx +++ b/app/(application)/(user)/forum/create.tsx @@ -2,15 +2,14 @@ import { BoxButtonOnFooter, ButtonCustom, TextAreaCustom, - ViewWrapper + ViewWrapper, } from "@/components"; import AlertWarning from "@/components/Alert/AlertWarning"; import { useAuth } from "@/hooks/use-auth"; import { apiForumCreate } from "@/service/api-client/api-forum"; -import { isBadContent } from "@/utils/badWordsIndonesia"; +import { censorText, isBadContent } from "@/utils/badWordsIndonesia"; import { router } from "expo-router"; import { useState } from "react"; -import { Alert } from "react-native"; import Toast from "react-native-toast-message"; export default function ForumCreate() { @@ -19,16 +18,22 @@ export default function ForumCreate() { const [isLoading, setIsLoading] = useState(false); const handlerSubmit = async () => { - - if (isBadContent(text)) { - AlertWarning({}) + if (text.trim() === "") { + AlertWarning({ + title: "Lengkapi Data", + description: "Postingan tidak boleh kosong", + }); return; } - + + // Bisa di sensor atau return dan tidak bisa di post + const cencorContent = censorText(text) + const newData = { - diskusi: text, + diskusi: cencorContent, authorId: user?.id, }; + try { setIsLoading(true); const response = await apiForumCreate({ data: newData }); @@ -50,6 +55,7 @@ export default function ForumCreate() { const buttonFooter = ( { handlerSubmit(); diff --git a/app/(application)/admin/forum/[id]/list-report-posting.tsx b/app/(application)/admin/forum/[id]/list-report-posting.tsx index faedf07..e26b625 100644 --- a/app/(application)/admin/forum/[id]/list-report-posting.tsx +++ b/app/(application)/admin/forum/[id]/list-report-posting.tsx @@ -16,12 +16,11 @@ import { IconDot, IconView } from "@/components/_Icon/IconComponent"; import { IconTrash } from "@/components/_Icon/IconTrash"; import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle"; import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage"; -import AdminTitleTable from "@/components/_ShareComponent/Admin/TableTitle"; -import AdminTableValue from "@/components/_ShareComponent/Admin/TableValue"; import { GridSpan_4_8 } from "@/components/_ShareComponent/GridSpan_4_8"; import { GridSpan_NewComponent } from "@/components/_ShareComponent/GridSpan_NewComponent"; import { MainColor } from "@/constants/color-palet"; import { ICON_SIZE_BUTTON } from "@/constants/constans-value"; +import { useAuth } from "@/hooks/use-auth"; import { apiAdminForumDeactivatePosting, apiAdminForumListReportPostingById, @@ -35,6 +34,7 @@ import { Divider } from "react-native-paper"; import Toast from "react-native-toast-message"; export default function AdminForumReportPosting() { + const { user } = useAuth(); const { id } = useLocalSearchParams(); const [openDrawerPage, setOpenDrawerPage] = useState(false); const [openDrawerAction, setOpenDrawerAction] = useState(false); @@ -215,6 +215,9 @@ export default function AdminForumReportPosting() { onPressRight: async () => { const response = await apiAdminForumDeactivatePosting({ id: id as string, + data: { + senderId: user?.id as string, + }, }); if (!response.success) { diff --git a/screens/Home/tabsList.ts b/screens/Home/tabsList.ts index a29f31c..0a57395 100644 --- a/screens/Home/tabsList.ts +++ b/screens/Home/tabsList.ts @@ -13,7 +13,8 @@ export const tabsHome: any = ({ icon: "chatbubble-ellipses-outline", activeIcon: "chatbubble-ellipses", label: "Forum", - path: acceptedForumTermsAt ? "/forum" : "/forum/terms", + // path: acceptedForumTermsAt ? "/forum" : "/forum/terms", + path: "/forum", isActive: true, disabled: false, }, diff --git a/service/api-admin/api-admin-forum.ts b/service/api-admin/api-admin-forum.ts index 82b4a10..9306525 100644 --- a/service/api-admin/api-admin-forum.ts +++ b/service/api-admin/api-admin-forum.ts @@ -81,9 +81,17 @@ export async function apiAdminForumListReportPostingById({ } } -export async function apiAdminForumDeactivatePosting({ id }: { id: string }) { +export async function apiAdminForumDeactivatePosting({ + id, + data, +}: { + id: string; + data: { senderId: string }; +}) { try { - const response = await apiConfig.put(`/mobile/admin/forum/${id}`); + const response = await apiConfig.put(`/mobile/admin/forum/${id}`, { + data: data, + }); return response.data; } catch (error) { throw error; diff --git a/service/api-client/api-forum.ts b/service/api-client/api-forum.ts index 9e3c4e3..17c6dc9 100644 --- a/service/api-client/api-forum.ts +++ b/service/api-client/api-forum.ts @@ -119,3 +119,12 @@ export async function apiForumDeleteComment({ id }: { id: string }) { throw error; } } + +export async function apiForumGetReportPosting({id}: {id:string}) { + try { + const response = await apiConfig.get(`/mobile/forum/${id}/preview-report-posting`); + return response.data; + } catch (error) { + throw error; + } +} \ No newline at end of file diff --git a/types/type-forum.ts b/types/type-forum.ts new file mode 100644 index 0000000..c55fd78 --- /dev/null +++ b/types/type-forum.ts @@ -0,0 +1,15 @@ +export interface TypeForum_CommentProps { + id: string; + isActive: boolean; + komentar: string; + createdAt: Date; + authorId: string; + Author: { + id: string; + username: string; + Profile: { + id: string; + imageId: string; + }; + }; +} \ No newline at end of file -- 2.49.1 From 0262423c503a419c86e3fab0335079179d48ea6c Mon Sep 17 00:00:00 2001 From: bagasbanuna Date: Mon, 19 Jan 2026 17:46:54 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Fix=20notification=20to=20report=20comment?= =?UTF-8?q?=20Fix:=20User=20=E2=80=93=20Forum=20(Reporting=20&=20Preview)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit app/(application)/(user)/forum/[id]/other-report-commentar.tsx app/(application)/(user)/forum/[id]/other-report-posting.tsx app/(application)/(user)/forum/[id]/preview-report-posting.tsx app/(application)/(user)/forum/[id]/report-commentar.tsx app/(application)/(user)/forum/[id]/report-posting.tsx Admin – Forum Moderation app/(application)/admin/forum/[id]/list-report-comment.tsx app/(application)/admin/forum/report-posting.tsx Layout app/(application)/(user)/_layout.tsx API Client & Admin service/api-admin/api-admin-forum.ts service/api-client/api-forum.ts service/api-client/api-master.ts Utils utils/badWordsIndonesia.ts ### No Issue --- app/(application)/(user)/_layout.tsx | 13 ++- .../forum/[id]/other-report-commentar.tsx | 2 +- .../forum/[id]/other-report-posting.tsx | 2 +- .../forum/[id]/preview-report-comment.tsx | 91 +++++++++++++++++++ .../forum/[id]/preview-report-posting.tsx | 76 +++++++++++++--- .../(user)/forum/[id]/report-commentar.tsx | 3 +- .../(user)/forum/[id]/report-posting.tsx | 2 +- .../admin/forum/[id]/list-report-comment.tsx | 63 +++++++------ .../admin/forum/report-posting.tsx | 2 +- service/api-admin/api-admin-forum.ts | 14 ++- service/api-client/api-forum.ts | 50 ++++++++++ service/api-client/api-master.ts | 40 -------- utils/badWordsIndonesia.ts | 17 ++-- 13 files changed, 273 insertions(+), 102 deletions(-) create mode 100644 app/(application)/(user)/forum/[id]/preview-report-comment.tsx diff --git a/app/(application)/(user)/_layout.tsx b/app/(application)/(user)/_layout.tsx index f6779c5..c86ae22 100644 --- a/app/(application)/(user)/_layout.tsx +++ b/app/(application)/(user)/_layout.tsx @@ -616,15 +616,20 @@ export default function UserLayout() { headerLeft: () => , }} /> - , + }} + /> + , }} /> - - {/* ========== Maps Section ========= */} (null); + const [listData, setListData] = useState(null); + const [loading, setLoading] = useState(false); + // Status + + useFocusEffect( + useCallback(() => { + onLoadData(id as string); + }, [id]) + ); + + const onLoadData = async (id: string) => { + try { + setLoading(true); + const response = await apiForumGetReportComment({ id }); + setData(response.data); + setListData(response?.data?.Forum_ReportKomentar); + } catch (error) { + console.log("[ERROR]", error); + } finally { + setLoading(false); + } + }; + + return ( + <> + + + + Komentar anda telah melanggar aturan forum ! Admin mengambil + tindakan untuk menghapus komentar anda! + + {loading ? ( + + ) : ( + + "{data?.komentar ? data?.komentar : "-"}" + + )} + + + + Beberapa laporan yang telah diterima + + + {loading ? ( + + ) : _.isEmpty(listData) ? ( + + ) : ( + listData?.map((e: any, index: number) => ( + + {e?.deskripsi ? ( + + Laporan Lainnya + {e?.deskripsi} + + ) : ( + + + {e?.ForumMaster_KategoriReport?.title} + + + {e?.ForumMaster_KategoriReport?.deskripsi} + + + )} + + )) + )} + + + ); +} diff --git a/app/(application)/(user)/forum/[id]/preview-report-posting.tsx b/app/(application)/(user)/forum/[id]/preview-report-posting.tsx index 8e1e20a..c732637 100644 --- a/app/(application)/(user)/forum/[id]/preview-report-posting.tsx +++ b/app/(application)/(user)/forum/[id]/preview-report-posting.tsx @@ -1,16 +1,23 @@ -import { NewWrapper, TextCustom } from "@/components"; -import { useAuth } from "@/hooks/use-auth"; import { - apiForumGetOne, - apiForumGetReportPosting, -} from "@/service/api-client/api-forum"; + BaseBox, + NewWrapper, + Spacing, + StackCustom, + TextCustom, +} from "@/components"; +import ListSkeletonComponent from "@/components/_ShareComponent/ListSkeletonComponent"; +import NoDataText from "@/components/_ShareComponent/NoDataText"; +import CustomSkeleton from "@/components/_ShareComponent/SkeletonCustom"; +import { apiForumGetReportPosting } from "@/service/api-client/api-forum"; import { useFocusEffect, useLocalSearchParams } from "expo-router"; +import _ from "lodash"; import { useCallback, useState } from "react"; export default function ForumPreviewReportPosting() { const { id } = useLocalSearchParams(); - const { user } = useAuth(); const [data, setData] = useState(null); + const [listData, setListData] = useState(null); + const [loading, setLoading] = useState(false); // Status useFocusEffect( @@ -21,23 +28,64 @@ export default function ForumPreviewReportPosting() { const onLoadData = async (id: string) => { try { + setLoading(true); const response = await apiForumGetReportPosting({ id }); setData(response.data); + setListData(response?.data?.Forum_ReportPosting); } catch (error) { console.log("[ERROR]", error); + } finally { + setLoading(false); } }; return ( - <> + <> + + + + Postingan anda telah melanggar aturan forum ! Admin mengambil + tindakan untuk menghapus komentar anda! + + {loading ? ( + + ) : ( + + "{data?.diskusi ? data?.diskusi : "-"}" + + )} + - - Halaman preview repost posting - {JSON.stringify(data, null, 2)} + + Beberapa laporan yang telah diterima + - untuk report jomentar beda halaman - - - + {loading ? ( + + ) : _.isEmpty(listData) ? ( + + ) : ( + listData?.map((e: any) => ( + + {e?.deskripsi ? ( + + Laporan Lainnya + {e?.deskripsi} + + ) : ( + + + {e?.ForumMaster_KategoriReport?.title} + + + {e?.ForumMaster_KategoriReport?.deskripsi} + + + )} + + )) + )} + + ); } diff --git a/app/(application)/(user)/forum/[id]/report-commentar.tsx b/app/(application)/(user)/forum/[id]/report-commentar.tsx index b3fe93e..2b23183 100644 --- a/app/(application)/(user)/forum/[id]/report-commentar.tsx +++ b/app/(application)/(user)/forum/[id]/report-commentar.tsx @@ -8,7 +8,8 @@ import { import { AccentColor, MainColor } from "@/constants/color-palet"; import { useAuth } from "@/hooks/use-auth"; import Forum_ReportListSection from "@/screens/Forum/ReportListSection"; -import { apiForumCreateReportCommentar, apiMasterForumReportList } from "@/service/api-client/api-master"; +import { apiForumCreateReportCommentar } from "@/service/api-client/api-forum"; +import { apiMasterForumReportList } from "@/service/api-client/api-master"; import { router, useLocalSearchParams } from "expo-router"; import { useState, useEffect } from "react"; import Toast from "react-native-toast-message"; diff --git a/app/(application)/(user)/forum/[id]/report-posting.tsx b/app/(application)/(user)/forum/[id]/report-posting.tsx index 5947fb6..209f271 100644 --- a/app/(application)/(user)/forum/[id]/report-posting.tsx +++ b/app/(application)/(user)/forum/[id]/report-posting.tsx @@ -9,8 +9,8 @@ import { import { AccentColor, MainColor } from "@/constants/color-palet"; import { useAuth } from "@/hooks/use-auth"; import Forum_ReportListSection from "@/screens/Forum/ReportListSection"; +import { apiForumCreateReportPosting } from "@/service/api-client/api-forum"; import { - apiForumCreateReportPosting, apiMasterForumReportList, } from "@/service/api-client/api-master"; import { router, useLocalSearchParams } from "expo-router"; diff --git a/app/(application)/admin/forum/[id]/list-report-comment.tsx b/app/(application)/admin/forum/[id]/list-report-comment.tsx index 935c707..a5915fe 100644 --- a/app/(application)/admin/forum/[id]/list-report-comment.tsx +++ b/app/(application)/admin/forum/[id]/list-report-comment.tsx @@ -15,12 +15,11 @@ import { IconDot, IconView } from "@/components/_Icon/IconComponent"; import { IconTrash } from "@/components/_Icon/IconTrash"; import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle"; import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage"; -import AdminTitleTable from "@/components/_ShareComponent/Admin/TableTitle"; -import AdminTableValue from "@/components/_ShareComponent/Admin/TableValue"; import { GridSpan_4_8 } from "@/components/_ShareComponent/GridSpan_4_8"; import { GridSpan_NewComponent } from "@/components/_ShareComponent/GridSpan_NewComponent"; import { MainColor } from "@/constants/color-palet"; import { ICON_SIZE_BUTTON } from "@/constants/constans-value"; +import { useAuth } from "@/hooks/use-auth"; import { apiAdminForumCommentById, apiAdminForumDeactivateComment, @@ -35,6 +34,7 @@ import Toast from "react-native-toast-message"; export default function AdminForumReportComment() { const { id } = useLocalSearchParams(); + const { user } = useAuth(); const [data, setData] = useState(null); const [listReport, setListReport] = useState(null); const [loadList, setLoadList] = useState(false); @@ -111,9 +111,13 @@ export default function AdminForumReportComment() { - + Aksi} + text1={ + + Aksi + + } text2={Pelapor} text3={Kategori Report} /> @@ -129,22 +133,24 @@ export default function AdminForumReportComment() { - } - onPress={() => { - setOpenDrawerAction(true); - setSelectedReport({ - id: item.id, - username: item.User?.username, - kategori: item.ForumMaster_KategoriReport?.title, - keterangan: - item.ForumMaster_KategoriReport?.deskripsi, - deskripsi: item.deskripsi, - }); - }} - /> - + + + } + onPress={() => { + setOpenDrawerAction(true); + setSelectedReport({ + id: item.id, + username: item.User?.username, + kategori: item.ForumMaster_KategoriReport?.title, + keterangan: + item.ForumMaster_KategoriReport?.deskripsi, + deskripsi: item.deskripsi, + }); + }} + /> + } text2={ @@ -188,15 +194,18 @@ export default function AdminForumReportComment() { onPressRight: async () => { const deleteComment = await apiAdminForumDeactivateComment({ id: id as string, + data: { + senderId: user?.id as string, + }, }); - if (!deleteComment.success) { - Toast.show({ - type: "error", - text1: "Komentar gagal dihapus", - }); - return; - } + // if (!deleteComment.success) { + // Toast.show({ + // type: "error", + // text1: "Komentar gagal dihapus", + // }); + // return; + // } setOpenDrawer(false); Toast.show({ diff --git a/app/(application)/admin/forum/report-posting.tsx b/app/(application)/admin/forum/report-posting.tsx index 6d5ff57..a819676 100644 --- a/app/(application)/admin/forum/report-posting.tsx +++ b/app/(application)/admin/forum/report-posting.tsx @@ -73,7 +73,7 @@ export default function AdminForumReportPosting() { - Username + Pelapor } text2={ diff --git a/service/api-admin/api-admin-forum.ts b/service/api-admin/api-admin-forum.ts index 9306525..c48a134 100644 --- a/service/api-admin/api-admin-forum.ts +++ b/service/api-admin/api-admin-forum.ts @@ -57,9 +57,19 @@ export async function apiAdminForumListReportCommentById({ } } -export async function apiAdminForumDeactivateComment({ id }: { id: string }) { +export async function apiAdminForumDeactivateComment({ + id, + data, +}: { + id: string; + data: { senderId: string }; +}) { + + console.log("data", data) try { - const response = await apiConfig.put(`/mobile/admin/forum/${id}/comment`); + const response = await apiConfig.put(`/mobile/admin/forum/${id}/comment`, { + data: data, + }); return response.data; } catch (error) { throw error; diff --git a/service/api-client/api-forum.ts b/service/api-client/api-forum.ts index 17c6dc9..28c60f3 100644 --- a/service/api-client/api-forum.ts +++ b/service/api-client/api-forum.ts @@ -127,4 +127,54 @@ export async function apiForumGetReportPosting({id}: {id:string}) { } catch (error) { throw error; } +} + +export async function apiForumGetReportComment({id}: {id:string}) { + try { + const response = await apiConfig.get(`/mobile/forum/${id}/preview-report-comment`); + return response.data; + } catch (error) { + throw error; + } +} + + +export async function apiForumCreateReportPosting({ + id, + data, +}: { + id: string; + data: any; +}) { + try { + const response = await apiConfig.post( + `/mobile/forum/${id}/report-posting`, + { + data: data, + } + ); + return response.data; + } catch (error) { + throw error; + } +} + +export async function apiForumCreateReportCommentar({ + id, + data, +}: { + id: string; + data: any; +}) { + try { + const response = await apiConfig.post( + `/mobile/forum/${id}/report-commentar`, + { + data: data, + } + ); + return response.data; + } catch (error) { + throw error; + } } \ No newline at end of file diff --git a/service/api-client/api-master.ts b/service/api-client/api-master.ts index c3b8689..530a460 100644 --- a/service/api-client/api-master.ts +++ b/service/api-client/api-master.ts @@ -77,46 +77,6 @@ export async function apiMasterForumReportList() { // ================== END MASTER FORUM ================== // -export async function apiForumCreateReportPosting({ - id, - data, -}: { - id: string; - data: any; -}) { - try { - const response = await apiConfig.post( - `/mobile/forum/${id}/report-posting`, - { - data: data, - } - ); - return response.data; - } catch (error) { - throw error; - } -} - -export async function apiForumCreateReportCommentar({ - id, - data, -}: { - id: string; - data: any; -}) { - try { - const response = await apiConfig.post( - `/mobile/forum/${id}/report-commentar`, - { - data: data, - } - ); - return response.data; - } catch (error) { - throw error; - } -} - // ================== START MASTER INVESTMENT ================== // export async function apiMasterInvestment({ diff --git a/utils/badWordsIndonesia.ts b/utils/badWordsIndonesia.ts index 82b60c1..d1d48cc 100644 --- a/utils/badWordsIndonesia.ts +++ b/utils/badWordsIndonesia.ts @@ -5,11 +5,11 @@ const badWordsIndonesia = [ 'anjing', 'babi', 'bangsat', 'bodoh', 'goblok', 'idiot', 'jancok', 'jembut', 'kampret', 'kontol', 'memek', 'ngentot', 'peler', 'puki', 'sialan', 'tai', 'tolol', 'wibu', 'anjingg', 'babbii', 'bangsaat', 'gobllokk', 'jancokk', 'kontoll', 'memekk', 'ngentott', - 'pelerr', 'puuki', 'sialann', 'taii', 'tololl', 'wibuu', + 'pelerr', 'puuki', 'sialann', 'taii', 'tololl', 'wibuu', 'cicing', // 🔥 Kata Sindiran & Penghinaan 'bego', 'dungu', 'edan', 'gila', 'goblog', 'kampang', 'kampret', 'keparat', 'lonte', - 'main mata', 'monyet', 'najis', 'ngeyel', 'ngibul', 'ngomong seenaknya', 'ngurangin', + 'monyet', 'najis', 'ngeyel', 'ngibul', 'ngomong seenaknya', 'ngurangin', 'ngutang', 'ngurusin urusan orang', 'pemalas', 'pengecut', 'penipu', 'sinting', 'begoo', 'dunguu', 'goblogg', 'kampangg', 'keparatt', 'lontee', 'monyyet', 'najiss', 'ngeyell', 'ngibull', 'ngomongg seenaknya', 'nguranginn', 'ngutangg', 'pemalass', @@ -23,18 +23,17 @@ const badWordsIndonesia = [ // 💸 Kata Spam / Promosi Ilegal 'judi', 'togel', 'slot', 'casino', 'poker', 'qq', 'bandar', 'agen', 'link', 'wa', - 'whatsapp', 'telepon', 'nomor', 'hp', 'sms', 'grup', 'join', 'daftar', 'bonus', - 'deposit', 'withdraw', 'uang', 'duit', 'rp', 'ratusan', 'juta', 'milyar', + 'deposit', 'withdraw', 'judii', 'togell', 'slotss', 'casinoo', 'pokerr', 'qqq', 'bandarr', 'agenn', 'linkk', - 'waa', 'whatsappp', 'teleponn', 'nomorr', 'hpp', 'smss', 'grupp', 'jooin', 'daftarr', - 'bonuss', 'depositt', 'withdraww', 'uangs', 'duitt', 'rpp', 'ratusann', 'jutaa', 'milyarr', + 'waa', + 'depositt', 'withdraww', 'rpp', // 🧩 Variasi Penulisan (Bypass Filter) 'a*njing', 'b*b*i', 'b*ngsat', 'g*blok', 'k*nt*l', 'm*m*k', 'n*g*nt*t', 'p*l*r', - 't*i', 't*l*l', 'j*n*c*k', 'j*m*b*t', 'k*m*p*r*t', 's*i*l*a*n', 'w*b*u', + 't*i', 't*l*l', 'j*n*c*k', 'j*m*b*t', 'k*m*p*r*t', 's*i*l*a*n', 'w*b*u', 'a.n.j.i.n.g', 'b.a.b.i', 'b.a.n.g.s.a.t', 'g.o.b.l.o.k', 'k.o.n.t.o.l', 'm.e.m.e.k', 'n.g.e.n.t.o.t', 'p.e.l.e.r', 't.a.i', 't.o.l.o.l', 'j.a.n.c.o.k', 'j.e.m.b.u.t', - 'k.a.m.p.r.e.t', 's.i.a.l.a.n', 'w.i.b.u', + 'k.a.m.p.r.e.t', 's.i.a.l.a.n', 'w.i.b.u', 'c.i.c.i.n.g', // 📱 Variasi dengan Angka & Simbol '4nj1ng', 'b4b1', 'b4ngs4t', 'g0bl0k', 'k0nt0l', 'm3m3k', 'ng3nt0t', 'p3l3r', @@ -43,8 +42,6 @@ const badWordsIndonesia = [ 'p3l3rr', 't4ii', 't0l0ll', 'j4nc0kk', 'j3mbutt', 'k4mpr3tt', 's14l4nn', 'w1buu', // 🗣️ Kata yang Sering Digunakan dalam Konteks Negatif - 'dasar', 'kamu', 'kau', 'lu', 'lo', 'gue', 'gua', 'kita', 'kami', 'mereka', - 'dasarr', 'kamuu', 'kauu', 'luu', 'loo', 'guee', 'guua', 'kitaa', 'kamii', 'merekaa', 'dasar bodoh', 'dasar goblok', 'dasar bangsat', 'dasar idiot', 'dasar sialan', 'dasar bego', 'dasar dungu', 'dasar edan', 'dasar gila', 'dasar sinting', 'dasar pemalas', 'dasar pengecut', 'dasar penipu', 'dasar najis', 'dasar kampret', -- 2.49.1