Depo reply
by A
17
Raw
if ((userInput === 'ya' || userInput === 'lanjut') && activeTransaction.session === 'konfirmasi_deposit') {
try {
transactionDatabase[activeTransactionId].session = 'menunggu_pembayaran';
writeDatabase(transactionDatabase);
const paymentPath = `./db/xstbot/imageList/orkut_${activeTransactionId}.jpg`;
const pay = await qrisDinamis(
`${activeTransaction.data.total_deposit}`,
paymentPath
);
const startTime = Date.now();
const expireTime = startTime + toMs("10m");
const mess = await xstbot.sendMessage(from, {
image: fs.readFileSync(pay),
caption: `*「 MENUNGGU PEMBAYARAN 」*\nSilahkan scan QRIS. Berlaku 10 menit.\nDeposit tidak bisa dibatalkan setelah tahap ini.\n\nNote :\n- Kode unik akan ikut masuk ke saldo kamu ya.\n- Jika bot tidak mengkonfirmasi setelah anda melakukan pembayaran, mohon hubungi owner untuk mengkonfirmasi.`
}, { quoted: m }); // Added quoted: m to reply to the user
const sleep = ms => new Promise(res => setTimeout(res, ms));
let checkCount = 0;
while (checkCount < 60 && transactionDatabase[activeTransactionId]) {
await sleep(10000); // Check every 10 seconds
checkCount++;
if (Date.now() >= expireTime) {
await xstbot.sendMessage(from, { delete: mess.key });
await xstbot.sendMessage(from, { text: "⏰ Deposit dibatalkan otomatis karena melewati batas waktu." }, { quoted: m }); // Added quoted: m
delete transactionDatabase[activeTransactionId];
writeDatabase(transactionDatabase);
try {
if (fs.existsSync(paymentPath)) {
fs.unlinkSync(paymentPath);
}
} catch (err) {
console.error("Error deleting QRIS image:", err);
}
break;
}
const isPaid = await checkPaymentStatus(
activeTransaction.data.total_deposit,
merchantId,
apikey_orkut,
expireTime,
startTime
);
if (isPaid) {
await xstbot.sendMessage(from, { delete: mess.key });
const nominal = activeTransaction.data.total_deposit;
const saldoSebelum = getUserBalance(sender);
addUserBalance(sender, nominal);
const saldoSekarang = getUserBalance(sender);
const text_sukses = `*「 DEPOSIT SUKSES 」*\n\n` +
`*› ReffID :* ${activeTransactionId}\n` +
`*› Nomor :* ${sender.split('@')[0]}\n` +
`*› Tanggal :* ${activeTransaction.date}\n` +
`*› Jumlah :* ${rupiah(nominal)}\n` +
`*› Saldo Sebelumnya :* ${rupiah(saldoSebelum)}\n` +
`*› Saldo Sekarang :* ${rupiah(saldoSekarang)}`;
const toOwner = `*DEPOSIT DARI ${sender.split('@')[0]}*\n*Sebesar : ${rupiah(nominal)}*\n*BERHASIL*`;
// Send success messages
await xstbot.sendMessage(from, { text: text_sukses }, { quoted: m }); // Added quoted: m
await xstbot.sendMessage(ownerNumber, { text: toOwner }, { quoted: m }); // Added quoted: m for owner message
// Delete QRIS image
if (fs.existsSync(paymentPath)) {
fs.unlinkSync(paymentPath);
}
// Update transaction status
transactionDatabase[activeTransactionId].session = 'sukses_deposit';
transactionDatabase[activeTransactionId].success_time = Date.now();
writeDatabase(transactionDatabase);
// Set auto cleanup after 10 minutes
setTimeout(() => {
const currentDb = readDatabase();
if (currentDb[activeTransactionId] && currentDb[activeTransactionId].session === 'sukses_deposit') {
delete currentDb[activeTransactionId];
writeDatabase(currentDb);
console.log(`⏰ Deposit ${activeTransactionId} otomatis dihapus setelah 10 menit.`);
}
}, 10 * 60 * 1000);
break;
}
}
} catch (err) {
console.error("Deposit error:", err);
await xstbot.sendMessage(from, { text: "Terjadi kesalahan. Deposit dibatalkan." }, { quoted: m }); // Added quoted: m
delete transactionDatabase[activeTransactionId];
writeDatabase(transactionDatabase);
}
break;
}