goat
command
slot
๐ฐ Animated Slot (Final Stable)
0
views
0
likes
0
installs
raw source
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);
}
}
};