chore: session auto-commit

This commit is contained in:
MythEclipse
2026-06-03 18:52:20 +07:00
parent 30b07e2c63
commit ac678e8a88
@@ -30,11 +30,6 @@ export interface MascotChatHistoryRow {
created_at: string; created_at: string;
} }
interface LLMChatMessage {
role: "system" | "user" | "assistant";
content: string;
}
class MascotChatService { class MascotChatService {
private initialized = false; private initialized = false;
@@ -203,24 +198,27 @@ class MascotChatService {
flagged: number; flagged: number;
warned: number; warned: number;
}): string { }): string {
return `Kamu adalah mascot dari Discord Watcher — asisten moderasi yang ramah dan helpful untuk server Discord. return `Kamu lagi ngobrol sama mascot Discord Watcher — temen ngobrol yang tau keadaan server.
Data server saat ini: Data server saat ini:
- Total pesan: ${insights.total_messages} - Pesan: ${insights.total_messages}
- User aktif: ${insights.active_users} - User aktif: ${insights.active_users}
- Pesan flagged: ${insights.flagged} - Flagged: ${insights.flagged}
- Pesan warning: ${insights.warned} - Warning: ${insights.warned}
Kepribadianmu: Gaya ngobrol:
- Ramah, pakai emoji sesekali - Santai, hangat, kayak ngobrol sama temen
- Jawab dalam Bahasa Indonesia - Pake Bahasa Indonesia sehari-hari, ga perlu kaku
- Berikan jawaban yang informatif berdasarkan data di atas - Sesekali pake emoji wajar aja, ga berlebihan
- Kalau ditanya di luar konteks moderasi/obrolan Discord, tetap jawab dengan sopan tapi arahkan kembali ke topik server - Kalo ditanya sesuatu yang kamu tau dari data server, jawab pake data itu
- Jangan mengulangi template jawaban — setiap respons harus natural dan kontekstual - Kalo ga tau atau ga nyambung, bilang aja terus tanya balik biar ngobrolnya jalan
- Jika user menyapa (halo/hai), balas dengan ramah dan tawarkan bantuan`; - Jangan sebut "rule", "instruksi", "prompt" atau apapun soal cara kamu berpikir
- Biasa aja, ga usaha lucu-lucu amat — natural`;
} }
private buildHistoryMessages(recentContext: string[]): LLMChatMessage[] { private buildHistoryMessages(
recentContext: string[],
): Array<{ role: "user" | "assistant"; content: string }> {
// recentContext is alternating User/Mascot messages // recentContext is alternating User/Mascot messages
return recentContext.map((text) => { return recentContext.map((text) => {
if (text.startsWith("User: ")) { if (text.startsWith("User: ")) {
@@ -232,7 +230,7 @@ Kepribadianmu:
private async callLLM( private async callLLM(
systemPrompt: string, systemPrompt: string,
history: LLMChatMessage[], history: Array<{ role: "user" | "assistant"; content: string }>,
userMessage: string, userMessage: string,
): Promise<string> { ): Promise<string> {
const apiKey = config.AI_LLM_API_KEY; const apiKey = config.AI_LLM_API_KEY;
@@ -247,10 +245,12 @@ Kepribadianmu:
try { try {
const { default: axios } = await import("axios"); const { default: axios } = await import("axios");
const messages: LLMChatMessage[] = [ // Gateway tidak handle role system — gabung konteks ke user message
{ role: "system", content: systemPrompt }, const contextPrefixed = `${systemPrompt}\n\nPertanyaan user: ${userMessage}`;
const messages: Array<{ role: "user" | "assistant"; content: string }> = [
...history, ...history,
{ role: "user", content: userMessage }, { role: "user", content: contextPrefixed },
]; ];
const response = await axios.post( const response = await axios.post(
@@ -259,7 +259,7 @@ Kepribadianmu:
model, model,
messages, messages,
max_tokens: 500, max_tokens: 500,
temperature: 0.7, temperature: 0.4,
}, },
{ {
headers: { headers: {
@@ -298,18 +298,10 @@ Kepribadianmu:
lower.includes("siang") || lower.includes("siang") ||
lower.includes("malam") lower.includes("malam")
) { ) {
return "Halo! Aku mascot Discord Watcher. Ada yang bisa aku bantu soal pantauan server ini? 😊"; return "Halo! 👋 Lagi offline bentar, coba chat lagi nanti ya.";
} }
if ( return "Maaf, lagi ada masalah koneksi. Coba tanya lagi nanti!";
lower.includes("ringkasan") ||
lower.includes("summary") ||
lower.includes("rangkum")
) {
return "Maaf, fitur AI sedang tidak tersedia. Coba tanya lagi nanti ya ✨";
}
return "Maaf, aku sedang gagal nyambung ke otakku (LLM) 😅. Coba tanya lagi sebentar lagi ya!";
} }
} }