module.exports = { config: { name: "slot", version: "9.0", author: "FARHAN-KHAN", role: 0, category: "game", shortDescription: "๐ŸŽฐ Animated Slot (Final Stable)" }, onStart: async function ({ message, event, args, usersData, threadsData, api }) { const { senderID, threadID } = event; if (!global.slotCooldown) global.slotCooldown = {}; if (global.slotCooldown[senderID] && Date.now() - global.slotCooldown[senderID] < 3000) return message.reply("โณ | ๐๐ฅ๐ž๐š๐ฌ๐ž ๐–๐š๐ข๐ญ ๐Ÿ‘ ๐’๐ž๐œ๐จ๐ง๐๐ฌ..!"); global.slotCooldown[senderID] = Date.now(); let input = args[0]; if (!input) return message.reply("โŒ | ๐„๐ง๐ญ๐ž๐ซ ๐›๐ž๐ญ ๐š๐ฆ๐จ๐ฎ๐ง๐ญ..! $"); let bet = input.toLowerCase().endsWith("k") ? parseFloat(input)*1000 : input.toLowerCase().endsWith("m") ? parseFloat(input)*1e6 : parseFloat(input); if (isNaN(bet) || bet < 300) return message.reply("โŒ | ๐Œ๐ข๐ง๐ข๐ฆ๐ฎ๐ฆ ๐›๐ž๐ญ ๐ข๐ฌ ๐Ÿ‘๐ŸŽ๐ŸŽ..!๐Ÿ’ฐ"); if (bet > 300000000) return message.reply("โŒ | ๐Œ๐š๐ฑ ๐Ÿ‘๐ŸŽ๐ŸŽ๐Œ..!๐Ÿ’ฐ"); let user = await usersData.get(senderID); if (!user || bet > user.money) return message.reply("โŒ | ๐๐จ๐ญ ๐ž๐ง๐จ๐ฎ๐ ๐ก ๐ฆ๐จ๐ง๐ž๐ฒ..!๐Ÿ’ฐ"); let data = await threadsData.get(threadID, "data.slotData") || {}; if (!data[senderID]) data[senderID] = { spins: 40, lastReset: Date.now() }; if (Date.now() - data[senderID].lastReset > 3600000) data[senderID] = { spins: 40, lastReset: Date.now() }; if (data[senderID].spins <= 0) return message.reply("โณ | ๐๐จ ๐ฌ๐ฉ๐ข๐ง๐ฌ ๐ฅ๐ž๐Ÿ๐ญ..!"); data[senderID].spins--; const icons = ["๐ŸŠ","๐Ÿ‰","๐Ÿ’š","๐Ÿ’›","๐Ÿ’œ","โค๏ธ","๐Ÿ’Ž","๐Ÿ‡","๐Ÿ’"]; const roll = () => icons[Math.floor(Math.random() * icons.length)]; let info = await message.reply(` โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— ๐ŸŽฐโ™ป๏ธ ๐’๐‹๐Ž๐“ ๐Œ๐€๐‚๐‡๐ˆ๐๐„ โ™ป๏ธ๐ŸŽฐ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• โฐ โณ โ”ƒ โณ โ”ƒ โณ โ”ƒ โณ โ”ƒ โณ โฑ ๐ŸŽฐ ๐’๐ฉ๐ข๐ง๐ง๐ข๐ง๐ ... โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” `); let msgID = info.messageID; for (let i = 0; i < 4; i++) { let spinLine = `โฐ ${roll()} โ”ƒ ${roll()} โ”ƒ ${roll()} โ”ƒ ${roll()} โ”ƒ ${roll()} โฑ`; let spinUI = `โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— ๐ŸŽฐโ™ป๏ธ ๐’๐‹๐Ž๐“ ๐Œ๐€๐‚๐‡๐ˆ๐๐„ โ™ป๏ธ๐ŸŽฐ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ${spinLine} ๐ŸŽฐ ๐’๐ฉ๐ข๐ง๐ง๐ข๐ง๐ ... โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”`; await new Promise(r => setTimeout(r, 300)); try { await api.editMessage(spinUI, msgID); } catch(e) {} } let chance = Math.random(); let resultType; if (chance < 0.08) resultType = "jackpot"; else if (chance < 0.25) resultType = "big"; else if (chance < 0.50) resultType = "good"; else if (chance < 0.70) resultType = "small"; else if (chance < 0.85) resultType = "near"; else resultType = "lose"; let s1 = roll(), s2 = roll(), s3 = roll(), s4 = roll(), s5 = roll(); if (resultType === "near") { s1 = s2 = roll(); } let win = 0, text = "", bonus = ""; if (resultType === "jackpot") { win = bet * (10 + Math.random()*5); text = "๐Ÿ’Ž ๐‰๐€๐‚๐Š๐๐Ž๐“ ๐Ÿ’Ž"; bonus = "๐ˆ๐๐’๐€๐๐„ ๐–๐ˆ๐!"; } else if (resultType === "big") { win = bet * (5 + Math.random()*2); text = "๐ŸŽ‰ ๐๐ˆ๐† ๐–๐ˆ๐ ๐ŸŽ‰"; bonus = "๐‡๐ฎ๐ ๐ž ๐ก๐ข๐ญ!"; } else if (resultType === "good") { win = bet * (2 + Math.random()); text = "๐ŸŽŠ ๐†๐Ž๐Ž๐ƒ ๐–๐ˆ๐ ๐ŸŽŠ"; bonus = "๐๐ข๐œ๐ž!"; } else if (resultType === "small") { win = bet * (1.2 + Math.random()*0.5); text = "โœจ ๐’๐Œ๐€๐‹๐‹ ๐–๐ˆ๐ โœจ"; bonus = "๐‹๐ฎ๐œ๐ค๐ฒ!"; } else if (resultType === "near") { win = -bet * 0.2; text = "๐€๐‹๐Œ๐Ž๐’๐“!๐Ÿ’"; bonus = "๐’๐จ ๐œ๐ฅ๐จ๐ฌ๐ž!"; } else { win = -bet; text = "๐Ÿ˜ข ๐‹๐Ž๐’๐“ ๐Ÿ˜ข"; bonus = "๐“๐ซ๐ฒ ๐š๐ ๐š๐ข๐ง!"; } win = Math.floor(win); let newBal = user.money + win; await usersData.set(senderID, { money: newBal, data: user.data }); await threadsData.set(threadID, data, "data.slotData"); const format = n => n >= 1e6 ? (n/1e6).toFixed(2)+"M" : n >= 1e3 ? (n/1e3).toFixed(2)+"K" : n; let final = `โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— ๐Ÿ”ฐโ™ป๏ธ ๐’๐‹๐Ž๐“ ๐Œ๐€๐‚๐‡๐ˆ๐๐„ โ™ป๏ธ๐Ÿ”ฐ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• โฐ ${s1} โ”ƒ ${s2} โ”ƒ ${s3} โ”ƒ ${s4} โ”ƒ ${s5} โฑ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” ๐ŸŽฏ ๐‘๐„๐’๐”๐‹๐“: โžค ${text} ${win>0?`๐ŸŸข ๐–๐ˆ๐: โžค ใ€Ž \[ {format(win)} ใ€`:`๐Ÿ”ด ๐‹๐Ž๐’๐’: โžค ใ€Ž \]{format(-win)} ใ€`} ๐Ÿ’ฐ ๐๐€๐‹๐€๐๐‚๐„: โžค ใ€Ž $${format(newBal)} ใ€ ๐ŸŽฒ ๐’๐๐ˆ๐๐’: โžค ใ€Ž ${data[senderID].spins}/40 ใ€ ๐Ÿ’กใ€Ž ${bonus} ใ€ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”`; if (resultType === "jackpot") await message.reply("๐Ÿ’Ž๐Ÿ’Ž ๐‰๐€๐‚๐Š๐๐Ž๐“ ๐Ÿ’Ž๐Ÿ’Ž"); try { await api.editMessage(final, msgID); } catch(e) { return message.reply(final); } } };