- Added eager selfbot voice connection establishment to ensure video capture works seamlessly during voice channel joins. - Introduced a manual video watch command for selfbots to allow operators to initiate screen recording of other members' streams. - Enhanced video recording functionality to split recordings into segments based on user activity, similar to voice recordings. - Fixed mobile navigation issues by extending the navbar to include all items and ensuring responsive form controls. - Standardized error handling across frontend components to improve user experience during failures.
2.8 KiB
2.8 KiB
Spec: Simpan pesan NSFW tanpa analisis AI (Request 1)
Date: 2026-08-30
Goal
Saat ini GMW skip capture untuk pesan di channel age-restricted/NSFW
(messageCapture.ts baris 291 & 310 memanggil isAgeRestrictedMessage lalu
return). User ingin pesan NSFW tetap disimpan ke database (jadi terlihat
di dashboard), tetapi tidak dianalisis AI (tidak dipanggil LLM).
Behavior target
- Pesan NSFW/age-restricted di
messageCreate→ DISIMPAN (capture normal). - Pesan NSFW di
messageUpdate/messageDelete→ tetap diproses seperti pesan biasa (edit/deleted state tercatat). - AI analysis TIDAK berjalan untuk pesan NSFW. Sudah ada jalur yang benar:
queueMessageAnalysis→isAgeRestrictedMessage(message)→buildAgeRestrictedSkipResult()yang menulisstatus=clean+ flagage_restricted+action=noneTANPA memanggil LLM. Jalur ini sudah ada dan dipakai diaiAnalyzer.queueMessageAnalysis(baris 72-84) danbatchProcessor.skipAgeRestrictedMessages. Jadi tinggal membuka capture. - Konten NSFW TIDAK masuk ke Qdrant public archive (semantic search publik).
archiveMessageEmbeddedharus di-guard untuk pesan age-restricted.
Files touched
services/discord-gateway/src/modules/message-capture/messageCapture.ts- Hapus guard
isAgeRestrictedMessagedimessageCreate(baris 291) danmessageUpdate(baris 310). Jangan hapus guardisExcludedThread,isBotExcludedChannel,shouldCaptureForAnyTarget.
- Hapus guard
services/discord-gateway/src/modules/message-capture/archiveEmbedder.tsarchiveMessageEmbeddedterima flag/cek metadata age-restricted → skip embed untuk NSFW.- Call-site di
messageCapture.tscaptureMessage(baris 218) pass isNSFW atau cek dulu.
Schema/type changes
- TIDAK ada perubahan DB schema. Metadata pesan sudah membawa
channel.nsfw(getMessageLocation). Tidak perlu kolom baru — flagage_restrictedsudah ditulis keai_moderation_flagslewat skip-result.
Verification
pnpm typecheck,pnpm lint(biome),pnpm builddiservices/discord-gateway.- Unit test: pastikan ada test untuk age-restricted skip (sudah ada
tests/conversationContext.test.tsref nsfw; cek apakah ada test sesuai). - Deploy via GHA push; verify pesan NSFW muncul di DB dan
ai_status= clean dengan flag age_restricted, dan TIDAK ada panggilan LLM (log llm-caller tidak menampilkan id pesan NSFW).
Status
- Request 1: DONE & DEPLOYED (commit
50967f64, CI green, gateway restart 20:17 WIB). - Request 2 (video): dicatat, belum dikerjakan — lihat section di bawah.
Request 2 (video) — NOT in this change
Fitur record video kamera/screenshare orang lain. @discordjs/voice hanya mendukung audio receive. Video orang lain butuh WebRTC viewer baru (SDP answer, decrypt H264/VP8, decode frame, mux MP4/WebM). Diluar scope changeset ini; dicatat untuk desain lanjutan.