Skip to content

Commit 7a43822

Browse files
committed
feat: enhance spamAdv function with input validation, error handling, and improved response formatting
1 parent 601d09e commit 7a43822

File tree

1 file changed

+36
-25
lines changed

1 file changed

+36
-25
lines changed

src/plugins/toram/adv1.js

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,52 @@ import fetch from "node-fetch";
33
export const spamAdv = async (sock, chatId, msg, text) => {
44
try {
55
const arg = text.trim().split(/\s+/);
6-
const lv = arg[1];
7-
const exp = arg[2];
8-
const max = arg[3];
9-
const from = arg[4];
6+
const [, lv, exp, max, from] = arg;
107

118
if (!lv || !exp || !max || !from) {
129
return await sock.sendMessage(
1310
chatId,
1411
{
15-
text: "Format salah. Masukan lv, exp, target level, dan bab setelah .spamadv\nContoh: .spamadv 177 0 315 11",
12+
text: "❌ *Format salah!*\n\nGunakan: `.spamadv <lv> <exp> <target_lv> <bab>`\n*Contoh:* `.spamadv 177 0 315 11`",
1613
},
1714
{ quoted: msg },
1815
);
1916
}
2017

18+
// Validasi input harus angka
19+
if ([lv, exp, max, from].some((v) => isNaN(Number(v)))) {
20+
return await sock.sendMessage(
21+
chatId,
22+
{ text: "❌ Semua parameter harus berupa angka." },
23+
{ quoted: msg },
24+
);
25+
}
26+
2127
const response = await fetch(
2228
`https://neuraapi.vercel.app/api/toram/spamadv?lv=${lv}&exp=${exp}&lvmx=${max}&from=${from}`,
2329
);
2430

31+
if (!response.ok) {
32+
return await sock.sendMessage(
33+
chatId,
34+
{ text: `❌ API error: ${response.status} ${response.statusText}` },
35+
{ quoted: msg },
36+
);
37+
}
38+
2539
const jsonResponse = await response.json();
2640

27-
/**
28-
* Penyesuaian Akses Data:
29-
* Jika log menunjukkan [ { ... } ], maka data adalah array.
30-
* Kita menggunakan jsonResponse.data[0] atau jsonResponse[0]
31-
* tergantung pada pembungkus utama dari API tersebut.
32-
*/
41+
// Normalisasi: support array maupun object {data: ...}
3342
const result = Array.isArray(jsonResponse)
3443
? jsonResponse[0]
35-
: jsonResponse.data;
44+
: Array.isArray(jsonResponse?.data)
45+
? jsonResponse.data[0]
46+
: (jsonResponse?.data ?? null);
3647

3748
if (!result) {
3849
return await sock.sendMessage(
3950
chatId,
40-
{ text: "Gagal mendapatkan data: Struktur respons tidak dikenali." },
51+
{ text: "Gagal mendapatkan data: Struktur respons tidak dikenali." },
4152
{ quoted: msg },
4253
);
4354
}
@@ -47,31 +58,31 @@ export const spamAdv = async (sock, chatId, msg, text) => {
4758
? result.progress
4859
.map(
4960
(v) =>
50-
`Run ${v.run}: Lv ${v.level} (${v.percent}%) — EXP: ${v.currentExp?.toLocaleString()}`,
61+
`Run ${v.run}: Lv ${v.level} (${v.percent}%) — EXP: ${v.currentExp?.toLocaleString() ?? "0"}`,
5162
)
5263
.join("\n")
5364
: "Tidak ada detail progres.";
5465

55-
const responseText = `*SPAM ADV CALCULATOR*
66+
const responseText = `*🗡️ SPAM ADV CALCULATOR*
5667
━━━━━━━━━━━━━━━━━━
57-
*Initial State:*
58-
Start Level : ${result.startLevel} (${result.startPercent}%)
59-
Target Level: ${result.targetLevel}
68+
*📊 Initial State:*
69+
- Start Level : ${result.startLevel} (${result.startPercent}%)
70+
- Target Level : ${result.targetLevel}
6071
61-
*Calculation Result:*
62-
Runs Needed : ${result.runs}x
63-
Final Level : ${result.finalLevel} (${result.finalPercent}%)
64-
Final EXP : ${result.finalExp?.toLocaleString() || "0"}
65-
Reached : ${result.reachedTarget ? "✅ Berhasil" : "❌ Belum Mencapai Target"}
72+
*📈 Calculation Result:*
73+
- Runs Needed : ${result.runs}x
74+
- Final Level : ${result.finalLevel} (${result.finalPercent}%)
75+
- Final EXP : ${result.finalExp?.toLocaleString() ?? "0"}
76+
- Reached : ${result.reachedTarget ? "✅ Berhasil mencapai target!" : "❌ Belum mencapai target"}
6677
━━━━━━━━━━━━━━━━━━
67-
*Progress Detail:*
78+
*📋 Progress Detail:*
6879
${progressText}`;
6980

7081
await sock.sendMessage(chatId, { text: responseText }, { quoted: msg });
7182
} catch (err) {
7283
await sock.sendMessage(
7384
chatId,
74-
{ text: `Terjadi kesalahan sistem: ${err.message}` },
85+
{ text: `⚠️ Terjadi kesalahan sistem: ${err.message}` },
7586
{ quoted: msg },
7687
);
7788
}

0 commit comments

Comments
 (0)