Skip to content

Commit 3b57eb0

Browse files
authored
Add files via upload
1 parent 6f5b64d commit 3b57eb0

File tree

12 files changed

+26
-98
lines changed

12 files changed

+26
-98
lines changed

cmd/owner/backup.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export default (handler) => {
77
cmd: ['backup', 'b'],
88
tags: 'owner',
99
desc: 'Backup files, send to owner',
10+
noPrefix: true,
1011
isOwner: true,
1112
run: async (m, { sock, db }) => {
1213
const excludePatterns = ['.npm', 'node_modules', 'temp', 'package-lock.json']
@@ -55,15 +56,10 @@ export default (handler) => {
5556

5657
m.reply(`✅ Backup selesai dan telah dikirim ke owner.`)
5758

58-
} catch (err) {
59-
m.reply(`❌ Gagal mengirim file backup ke owner: ${err.message}`)
59+
} catch (eror) {
60+
return error
6061
}
6162
})
62-
63-
archive.on('error', (err) => {
64-
throw err
65-
})
66-
6763
archive.pipe(output)
6864

6965
const addToArchive = (src) => {
@@ -89,7 +85,7 @@ export default (handler) => {
8985
addToArchive(rootDir)
9086
archive.finalize()
9187
} catch (error) {
92-
m.reply(`❌ Terjadi kesalahan: ${error.message}`)
88+
return error
9389
}
9490
},
9591
})

cmd/owner/delpremium.js

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,30 @@ export default (handler) => {
22
handler.reg({
33
cmd: ['delpremium', 'delprem', 'removepremium'],
44
tags: 'owner',
5-
desc: 'delete premium user.',
5+
desc: 'delete premium user',
66
isOwner: true,
77
run: async (m, { db, sock }) => {
88
const input = m.text ? m.text : m.quoted ? m.quoted.sender : m.mentions.length > 0 ? m.mentions[0] : false
99
if (!input) {
10-
return m.reply(
11-
'Silakan tag atau reply target untuk dihapus status premiumnya.\nContoh: .delpremium @user',
12-
true
13-
)
10+
return m.reply('Silakan tag atau reply target untuk dihapus status premiumnya.\nContoh: .delpremium @user', true )
1411
}
15-
16-
// Mengecek apakah nomor terdaftar di WhatsApp
1712
const p = await sock.onWhatsApp(input.trim())
1813
if (p.length === 0) return m.reply('⚠️ Nomor tidak terdaftar di WhatsApp.', true)
19-
20-
// Mendapatkan JID dan mencari pengguna di database
2114
const jid = sock.decodeJid(p[0].jid)
2215
const user = db.users[jid]
23-
24-
// Jika pengguna tidak ditemukan
2516
if (!user) {
2617
return m.reply('⚠️ Pengguna tersebut tidak ditemukan dalam database.', true)
2718
}
28-
29-
// Hapus status premium dan atur ulang limit
3019
user.premium = false
3120
user.exp_prem = -1
3221
user.limit = 10
33-
34-
// Kirim pesan konfirmasi
3522
const removeMessage = {
3623
text: `❌ Pengguna @${jid.split('@')[0]} telah dihapus status premiumnya.\nLimit pengguna sekarang diatur menjadi 10.`,
3724
mentions: [jid],
3825
}
3926

4027
m.reply(removeMessage)
41-
28+
4229
// Simpan perubahan ke database
4330
if (db && db.write) {
4431
await db.write()

cmd/owner/disable.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export default (handler) => {
66
isOwner: true,
77
run: async (m, { db }) => {
88
const set = db.setting
9-
109
switch (m.text) {
1110
case '1':
1211
m.reply('_First chat berhasil dinonaktifkan!!_', true)

cmd/owner/enable.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export default (handler) => {
66
isOwner: true,
77
run: async (m, { db }) => {
88
const set = db.setting
9-
109
switch (m.text) {
1110
case '1':
1211
m.reply('_First chat berhasil diaktifkan!!_', true)

cmd/owner/join.js

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,48 +11,32 @@ export default (handler) => {
1111
m.reply('❌ Harap berikan tautan undangan grup yang valid.\n\n*Penggunaan:*\n.join https://chat.whatsapp.com/XXXXXX')
1212
return
1313
}
14-
1514
const inviteCode = text.split("https://chat.whatsapp.com/")[1]
1615
if (!inviteCode) {
1716
m.reply('❌ Tautan undangan grup tidak valid. Harap berikan tautan yang benar.')
1817
return
1918
}
20-
21-
const groupId = await sock.groupAcceptInvite(inviteCode).catch((err) => {
22-
if (err.message.includes('already in group')) {
23-
throw new Error('Bot sudah menjadi anggota grup ini.')
24-
}
25-
throw err
26-
})
27-
19+
const groupId = await sock.groupAcceptInvite(inviteCode).then((res) => m.reply(jsonformat(res))).catch((error) => m.reply(jsonformat(error)))
2820
const groupMeta = await sock.groupMetadata(groupId)
2921
const groupName = groupMeta.subject || 'grup tersebut'
3022
const groupAdmins = groupMeta.participants
3123
.filter((p) => ['admin', 'superadmin'].includes(p.admin))
3224
.map((p) => p.id)
33-
3425
if (groupAdmins.length === 0) {
3526
m.reply(`✅ Bot berhasil bergabung ke grup *${groupName}*.\nNamun, tidak ada admin untuk memberi bot akses sebagai admin.`)
3627
return
3728
}
38-
3929
const adminMessage = `✅ Bot telah bergabung ke grup *${groupName}*.\n\nAdmin, silakan berikan akses admin kepada bot jika diperlukan.`
40-
4130
for (const admin of groupAdmins) {
4231
try {
4332
await sock.sendMessage(admin, { text: adminMessage })
44-
} catch (err) {
45-
m.reply(`❌ Gagal mengirim pesan ke admin: @${admin.split('@')[0]} (${err.message})`)
33+
} catch (error) {
34+
return error
4635
}
4736
}
48-
4937
m.reply(`🔄 Permintaan telah dikirim ke admin grup untuk memberikan akses admin kepada bot di grup *${groupName}*.`)
5038
} catch (error) {
51-
if (error.message === 'Bot sudah menjadi anggota grup ini.') {
52-
m.reply('⚠️ Bot sudah berada di grup ini.')
53-
} else {
54-
m.reply(`❌ Terjadi kesalahan: ${error.message}`)
55-
}
39+
return error
5640
}
5741
},
5842
})

cmd/owner/leave.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ export default (handler) => {
2020
})
2121

2222
await sock.sendMessage(ownerNumber + '@s.whatsapp.net', {
23-
text: `⚠️ Bot akan keluar dari grup *${groupName}*\n(${groupId}).`
23+
text: `⚠️ Bot telah keluar dari grup *${groupName}*\n(${groupId}).`
2424
})
2525

2626
await sock.groupLeave(groupId)
2727
m.reply(`✅ Bot telah keluar dari grup *${groupName}*.`)
2828
} catch (error) {
29-
m.reply(`❌ Terjadi kesalahan: ${error.message}`)
29+
return error
3030
}
3131
},
3232
})

cmd/owner/listbanned.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ export default (handler) => {
1212
if (bannedUsers.length === 0) {
1313
return m.reply('Tidak ada pengguna yang di-banned.', true)
1414
}
15-
1615
let teks = `𖦏 *DAFTAR PENGGUNA YANG DI-BANNED*\n\n`
1716
let mentions = []
1817

@@ -25,7 +24,7 @@ export default (handler) => {
2524

2625
m.reply(teks, null, { mentions })
2726
} catch (error) {
28-
m.reply(`❌ Terjadi kesalahan: ${error.message}`)
27+
return error
2928
}
3029
},
3130
})

cmd/owner/listgroup.js

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,23 @@ export default (handler) => {
88
isOwner: true,
99
run: async (m, { sock }) => {
1010
try {
11-
// Mengambil daftar semua grup yang bot ikuti
1211
const groups = await sock.groupFetchAllParticipating()
1312
const groupList = Object.values(groups)
14-
1513
if (groupList.length === 0) {
1614
return m.reply('⚠️ Bot tidak terhubung dengan grup mana pun.')
1715
}
18-
19-
// Menyusun informasi grup
2016
let teks = `𖦏 *LIST GROUP CHAT*\n\nTotal Grup: ${groupList.length} Grup\n\n`
21-
let mentions = [] // Menyimpan semua mention
22-
17+
let mentions = []
2318
for (let i = 0; i < groupList.length; i++) {
2419
const group = groupList[i]
2520
const metadata = await sock.groupMetadata(group.id).catch(() => null)
26-
2721
if (metadata) {
2822
teks += `𖥔 Nama: ${metadata.subject}\n`
2923
if (metadata.owner !== undefined) {
3024
const ownerJid = metadata.owner
3125
const ownerTag = '@' + ownerJid.split('@')[0]
3226
teks += `𖥔 Owner: ${ownerTag}\n`
33-
mentions.push(ownerJid) // Menambahkan owner ke daftar mention
27+
mentions.push(ownerJid)
3428
} else {
3529
teks += `𖥔 Owner: Tidak diketahui\n`
3630
}
@@ -44,11 +38,9 @@ export default (handler) => {
4438
teks += `${i + 1}. *${group.subject}*\n(ID: ${group.id})\n\n`
4539
}
4640
}
47-
48-
// Mengirim balasan dengan mention
4941
m.reply(teks, null, { mentions })
5042
} catch (error) {
51-
m.reply(`❌ Terjadi kesalahan: ${error.message}`)
43+
return error
5244
}
5345
},
5446
})

cmd/owner/listpremium.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,17 @@ export default (handler) => {
55
handler.reg({
66
cmd: ['listpremium', 'listprem', 'premiumlist'],
77
tags: 'owner',
8-
desc: 'list premium user.',
8+
desc: 'list premium user',
99
isOwner: true,
1010
run: async (m, { db }) => {
11-
const premiumUsers = getAllPremiumUser(db) // Mendapatkan semua pengguna premium
12-
11+
const premiumUsers = getAllPremiumUser(db)
1312
if (premiumUsers.length === 0) {
1413
return m.reply('❌ Tidak ada pengguna premium saat ini.')
1514
}
16-
1715
let message = '*📋 Daftar Pengguna Premium:*\n\n'
1816
premiumUsers.forEach((userId, index) => {
19-
// Cek ulang apakah status premium valid
2017
const isValidPremium = checkPremiumUser(userId, db)
21-
if (!isValidPremium) return // Skip jika premium tidak valid
18+
if (!isValidPremium) return // Skip jika user tidak premium
2219

2320
const user = db.users[userId]
2421
const expTime = getPremiumExpired(userId, db)
@@ -32,13 +29,12 @@ export default (handler) => {
3229
})
3330

3431
if (message.trim() === '*📋 Daftar Pengguna Premium:*\n\n') {
35-
// Jika semua premium sudah kedaluwarsa
3632
return m.reply('❌ Tidak ada pengguna premium yang valid saat ini.')
3733
}
3834

3935
m.reply({
4036
text: message.trim(),
41-
mentions: premiumUsers, // Memastikan semua pengguna premium disebutkan
37+
mentions: premiumUsers,
4238
})
4339
},
4440
})

cmd/owner/setlimit.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export default (handler) => {
1515
if (!set) {
1616
return m.reply('⚠️ Pengguna tersebut tidak ditemukan dalam database.', true)
1717
}
18-
1918
set.limit = parseInt(limit)
2019
m.reply({
2120
text: `✅ Pengguna @${jid.split('@')[0]} telah diberi limit sebesar ${limit}.`,

cmd/owner/setppbot.js

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,16 @@ export default (handler) => {
1212
const botNumber = `${db.setting.number}@s.whatsapp.net`
1313
const quoted = m.quoted ? m.quoted : m
1414
const mime = (quoted.msg || quoted).mimetype || ""
15-
16-
// Periksa apakah gambar valid
1715
if (!/image/.test(mime)) {
1816
return m.reply("❌ Harap kirim atau reply gambar untuk mengganti foto profil bot.")
1917
}
20-
21-
// Unduh media (gambar)
2218
let media = await sock.downloadMediaMessage(m.quoted, `${Date.now()}`)
2319
if (!media) {
2420
return m.reply("❌ Gagal mengunduh gambar. Pastikan media masih tersedia.")
2521
}
26-
2722
if (m.text === 'panjang') {
28-
// Mode "panjang"
2923
try {
30-
31-
// Proses gambar menggunakan generateProfilePicture
3224
const { img } = await func.generateProfilePicture(media)
33-
34-
// Kirim query untuk mengganti foto profil bot
3525
await sock.query({
3626
tag: 'iq',
3727
attrs: {
@@ -47,26 +37,21 @@ export default (handler) => {
4737
},
4838
],
4939
})
50-
51-
5240
m.reply("✅ Berhasil mengganti foto profil bot dengan gambar panjang!")
5341
} catch (error) {
54-
m.reply(`❌ Terjadi kesalahan saat mengganti foto profil panjang: ${error.message}`)
42+
return error
5543
}
5644
} else {
57-
// Mode default
5845
try {
5946
await sock.updateProfilePicture(botNumber, { url: media })
6047
m.reply("✅ Berhasil mengganti foto profil bot!")
6148
} catch (error) {
62-
m.reply(`❌ Terjadi kesalahan saat mengganti foto profil bot: ${error.message}`)
49+
return error
6350
}
6451
}
65-
66-
// Hapus file sementara
6752
fs.unlinkSync(media)
6853
} catch (error) {
69-
m.reply(`❌ Terjadi kesalahan: ${error.message}`)
54+
return error
7055
}
7156
},
7257
})

cmd/owner/setpremium.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@ export default (handler) => {
1818
true
1919
)
2020
}
21-
2221
const validDurations = [1, 3, 7, 14, 30]
2322
let premiumDuration
24-
2523
if (days?.toLowerCase() === 'unlimited') {
2624
premiumDuration = 'PERMANENT'
2725
} else {
@@ -31,31 +29,24 @@ export default (handler) => {
3129
}
3230
premiumDuration = duration * 24 * 60 * 60 * 1000
3331
}
34-
3532
const p = await sock.onWhatsApp(input.trim())
3633
if (p.length === 0) {
3734
return m.reply('⚠️ Nomor tidak terdaftar di WhatsApp.', true)
3835
}
39-
4036
const jid = sock.decodeJid(p[0].jid)
4137
const user = db.users[jid]
42-
4338
if (!user) {
4439
return m.reply('⚠️ Pengguna tidak ditemukan dalam database.', true)
4540
}
46-
47-
// Tambahkan pengguna sebagai premium dan reset limit jika kedaluwarsa
4841
try {
4942
const isExpired = !checkPremiumUser(jid, db)
5043
addPremiumUser(jid, premiumDuration, db, isExpired)
5144
} catch (error) {
5245
return m.reply(`⚠️ Terjadi kesalahan: ${error.message}`)
5346
}
54-
5547
const expiryDate = premiumDuration === 'PERMANENT'
5648
? 'Tanpa Batas Waktu'
5749
: moment(Date.now() + premiumDuration).tz('Asia/Jakarta').format('HH:mm:ss [WIB], DD MMMM')
58-
5950
const premiumMessage = premiumDuration === 'PERMANENT'
6051
? {
6152
text: `✅ Pengguna @${jid.split('@')[0]} telah menjadi pengguna premium *tanpa batas waktu*.\nLimit premium: ${isExpired ? 10 : 100}.`,
@@ -67,7 +58,8 @@ export default (handler) => {
6758
}
6859

6960
m.reply(premiumMessage)
70-
61+
62+
// Simpan perubahan ke database
7163
if (db && db.write) {
7264
await db.write()
7365
}

0 commit comments

Comments
 (0)