fun-game.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. import TicTacToe from '../lib/tictactoe.js'
  2. let timeout = 60000
  3. let poin = 600
  4. let poin_lose = -100
  5. let poin_bot = 200
  6. global.suit = global.suit ? global.suit : {}
  7. //import MessageType from '@adiwajshing/baileys'
  8. let MessageType = (await import(global.baileys)).default
  9. let handler = async (m, { conn, text, command, usedPrefix, args }) => {
  10. let pp = 'https://telegra.ph/file/c7924bf0e0d839290cc51.jpg'
  11. let fkontak = { "key": { "participants":"[email protected]", "remoteJid": "status@broadcast", "fromMe": false, "id": "Halo" }, "message": { "contactMessage": { "vcard": `BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD` }}, "participant": "[email protected]" }
  12. try {
  13. if (command == 'ppt' || command == 'pvp' || command == 'suit' || command == 'suitpvp') {
  14. const time = global.db.data.users[m.sender].wait + 30000;
  15. if (new Date() - global.db.data.users[m.sender].wait < 30000) return conn.fakeReply(m.chat, `*๐Ÿ•“ ๐™ƒ๐™š๐™ฎ, ๐™€๐™จ๐™ฅ๐™š๐™ง๐™– ${msToTime(time - new Date())} ๐™–๐™ฃ๐™ฉ๐™š๐™จ ๐™™๐™š ๐™ช๐™จ๐™–๐™ง ๐™ค๐™ฉ๐™ง๐™ค๐™จ ๐™˜๐™ค๐™ข๐™–๐™ฃ๐™™๐™ค*`, m.sender, `แดบแต’ สฐแตƒแตแตƒโฟ หขแต–แตƒแต`, 'status@broadcast', null, fake);
  16. const guideText = `๐๐ข๐ž๐๐ซ๐š ๐Ÿ—ฟ, ๐๐š๐ฉ๐ž๐ฅ ๐Ÿ“„ ๐จ ๐“๐ข๐ฃ๐ž๐ซ๐š โœ‚๏ธ\n\n๐Ÿ‘พ ๐™…๐™ช๐™œ๐™–๐™ง ๐™˜๐™ค๐™ฃ ๐™š๐™ก ๐™—๐™ค๐™ฉ:\nโ€ข ${usedPrefix + command} piedra\nโ€ข ${usedPrefix + command} papel\nโ€ข ${usedPrefix + command} tijera\n\n๐Ÿ•น ๐™…๐™ช๐™œ๐™–๐™ง ๐™˜๐™ค๐™ฃ ๐™ช๐™ฃ ๐™ช๐™จ๐™ช๐™–๐™ง๐™ž๐™ค:\n${usedPrefix + command} @usuario`;
  17. if (!m.mentionedJid[0] && !args[0]) return conn.sendButton(m.chat, guideText, wm, pp, [['Piedra ๐Ÿ—ฟ', `${usedPrefix + command} piedra`], ['Papel ๐Ÿ“„', `${usedPrefix + command} papel`], ['Tijera โœ‚๏ธ', `${usedPrefix + command} tijera`]], m);
  18. const user = global.db.data.users[m.sender];
  19. const playerChoice = args[0]?.toLowerCase();
  20. const choices = ['piedra', 'papel', 'tijera'];
  21. const botChoice = choices[Math.floor(Math.random() * 3)];
  22. const name = conn.getName(m.sender);
  23. if (!m.mentionedJid[0] && choices.includes(playerChoice)) {
  24. global.db.data.users[m.sender].wait = new Date() * 1;
  25. const rules = { piedra: { beats: 'tijera', win: 1000, lose: 300, winType: 'coins', loseType: 'coins' },
  26. papel: { beats: 'piedra', win: 1000, lose: 300, winType: 'coins', loseType: 'xp' },
  27. tijera: { beats: 'papel', win: 1000, lose: 300, winType: 'coins', loseType: 'coins' }};
  28. let result, message;
  29. if (playerChoice === botChoice) {
  30. user.exp += 500;
  31. result = '๐™€๐™ˆ๐™‹๐˜ผ๐™๐™€ ๐Ÿค';
  32. message = '๐ŸŽ Premios : 500 XP';
  33. } else if (rules[playerChoice].beats === botChoice) {
  34. user[rules[playerChoice].winType] += rules[playerChoice].win;
  35. result = '๐™ƒ๐˜ผ ๐™‚๐˜ผ๐™‰๐˜ผ๐˜ฟ๐™Š! ๐ŸŽ‰';
  36. message = `๐ŸŽ Premios : ${rules[playerChoice].win} ${rules[playerChoice].winType}`;
  37. } else {
  38. user[rules[playerChoice].loseType] -= rules[playerChoice].lose;
  39. result = '๐™ƒ๐˜ผ ๐™‹๐™€๐™๐˜ฟ๐™„๐˜ฟ๐™Š! ๐Ÿคก';
  40. message = `โŒ Pรฉrdida: -${rules[playerChoice].lose} ${rules[playerChoice].loseType}`;
  41. }
  42. conn.reply(m.chat, `\`ใ€Œ ${result} ใ€\`\n\n๐Ÿ‘‰ Tu: ${playerChoice}\n๐Ÿ‘‰ El Bot: ${botChoice}\n${message}`, m, { contextInfo: {externalAdReply: { title: name, body: wm, thumbnail: img.getRandom(), sourceUrl: redes.getRandom()}}});
  43. }
  44. if (m.mentionedJid[0]) {
  45. if (Object.values(conn.suit).find(room => room.id.startsWith('suit') && [room.p, room.p2].includes(m.sender))) return m.reply(`โš ๏ธ ๐™๐™š๐™ง๐™ข๐™ž๐™ฃ๐™– ๐™ฉ๐™ช ๐™ฅ๐™–๐™ง๐™ฉ๐™ž๐™™๐™– ๐™–๐™ฃ๐™ฉ๐™š๐™จ ๐™™๐™š ๐™ž๐™ฃ๐™ž๐™˜๐™ž๐™– ๐™ค๐™ฉ๐™ง๐™–`);
  46. if (Object.values(conn.suit).find(room => room.id.startsWith('suit') && [room.p, room.p2].includes(m.mentionedJid[0]))) return m.reply(`โš ๏ธ ๐™€๐™ก ๐™ช๐™จ๐™ช๐™–๐™ง๐™ž๐™ค ๐™ฎ๐™– ๐™š๐™จ๐™ฉ๐™–ฬ ๐™Ÿ๐™ช๐™œ๐™–๐™ฃ๐™™๐™ค, ๐™š๐™จ๐™ฅ๐™š๐™ง๐™– ๐™– ๐™ฆ๐™ช๐™š ๐™ฉ๐™š๐™ง๐™ข๐™ž๐™ฃ๐™š`);
  47. const id = 'suit_' + new Date() * 1;
  48. const caption = `๐ŸŽฎ๐Ÿ‘พ ๐™‹๐™‘๐™‹ - ๐™‹๐™„๐™€๐˜ฟ๐™๐˜ผ, ๐™‹๐˜ผ๐™‹๐™€๐™‡ ๐™Š ๐™๐™„๐™…๐™€๐™๐˜ผ ๐Ÿ‘พ๐ŸŽฎ\n\n@${m.sender.split`@`[0]} ๐˜ฟ๐™€๐™Ž๐˜ผ๐™๐™„๐˜ผ ๐˜ผ @${m.mentionedJid[0].split`@`[0]}\n\n> _*Escribe (aceptar) para aceptar*_\n> _*Escribe (rechazar) para rechazar*_`;
  49. conn.suit[id] = {
  50. chat: await conn.sendMessage(m.chat, { text: caption, mentions: [m.sender, m.mentionedJid[0]] }),
  51. id: id,
  52. p: m.sender,
  53. p2: m.mentionedJid[0],
  54. status: 'wait',
  55. waktu: setTimeout(() => {
  56. if (conn.suit[id]) conn.reply(m.chat, `โณ ๐™๐™„๐™€๐™ˆ๐™‹๐™Š ๐˜ผ๐™‚๐™Š๐™๐˜ผ๐˜ฟ๐™Š, ๐™€๐™‡ ๐™‹๐™‘๐™‹ ๐™Ž๐™€ ๐˜พ๐˜ผ๐™‰๐˜พ๐™€๐™‡๐˜ผ`, m);
  57. delete conn.suit[id];
  58. }, timeout),
  59. poin: 1000,
  60. poin_lose: 300,
  61. poin_bot: 500,
  62. timeout
  63. }}
  64. }
  65. if (command == 'slot' || command == 'apostar' || command == 'slot1' || command == 'slot2' || command == 'slot3') {
  66. const slotTypes = {
  67. slot1: { currency: 'exp',
  68. name: 'Exp',
  69. emojis: ['๐Ÿ’Ž', 'โšก', '๐Ÿช™'],
  70. cooldown: 60000,
  71. bonusWin: apuesta => apuesta * 2,
  72. consolation: 50,
  73. symbol: 'โšก'
  74. },
  75. slot2: { currency: 'money',
  76. name: 'KantuCoins',
  77. emojis: ['๐Ÿช™', '๐Ÿ”ฎ', '๐Ÿงฟ'],
  78. cooldown: 60000,
  79. bonusWin: apuesta => apuesta * 2,
  80. consolation: 30,
  81. symbol: '๐Ÿช™'
  82. },
  83. slot3: {
  84. currency: 'limit',
  85. name: 'Diamantes',
  86. emojis: ['๐Ÿช™', '๐Ÿ’ฃ', '๐Ÿ’Ž'],
  87. cooldown: 30000,
  88. bonusWin: apuesta => apuesta * 2,
  89. consolation: 2,
  90. symbol: '๐Ÿ’Ž'
  91. }}
  92. const fa = `${mg}๐™๐™จ๐™–๐™ง ๐™™๐™š ๐™ก๐™– ๐™จ๐™ž๐™œ๐™ช๐™ž๐™š๐™ฃ๐™ฉ๐™š ๐™ข๐™–๐™ฃ๐™š๐™ง๐™–:\n\n๐™€๐™Ÿ๐™š๐™ข๐™ฅ๐™ก๐™ค:\n*โ€ข ${usedPrefix}slot1 50* (aportas exp)\n*โ€ข ${usedPrefix}slot2 50* (aportas KantuCoins)\n*โ€ข ${usedPrefix}slot3 50* (aportas Diamantes)`.trim()
  93. const validateBet = (users, apuesta, currency, name) => {
  94. if (apuesta < 10) throw `โš ๏ธ ๐ƒ๐ž๐›๐ž๐ฌ ๐š๐ฉ๐จ๐ฌ๐ญ๐š๐ซ ๐ฎ๐ง ๐ฆ๐ข๐ง๐ข๐ฆ๐จ ๐๐ž *10 ${name}*`
  95. if (users[currency] < apuesta) throw `โš ๏ธ ๐๐จ ๐ญ๐ข๐ž๐ง๐ž๐ฌ ๐ฌ๐ฎ๐Ÿ๐ข๐œ๐ข๐ž๐ง๐ญ๐ž๐ฌ *${name}* ๐ฉ๐š๐ซ๐š ๐š๐ฉ๐จ๐ฌ๐ญ๐šr. ๐ˆ๐ง๐ญ๐ž๐ซ๐š๐œ๐ญ๐ฎ๐š ๐œ๐จ๐ง ๐ž๐ฅ ๐›๐จ๐ญ ๐ฉ๐š๐ซ๐š ๐จ๐›๐ญ๐ž๐ง๐ž๐ซ ๐ฆ๐šฬ๐ฌ ๐ซ๐ž๐œ๐ฎ๐ซ๐ฌ๐จ๐ฌ.`
  96. }
  97. const playSlot = async (m, conn, apuesta, config, users) => {
  98. const { currency, name, emojis, cooldown, bonusWin, consolation } = config
  99. const time = users.lastslot + cooldown
  100. if (new Date() - users.lastslot < cooldown) throw `*๐•๐ฎ๐ž๐ฅ๐ฏ๐š ๐ž๐ง: ${msToTime(time - new Date())} ๐ฉ๐š๐ซ๐š ๐œ๐จ๐ง๐ญ๐ข๐ง๐ฎ๐š๐ซ ๐š๐ฉ๐จ๐ฌ๐ญ๐š๐ง๐๐จ ${name}* ๐ŸŽฐ`
  101. users.lastslot = Date.now()
  102. const a = Math.floor(Math.random() * emojis.length)
  103. const b = Math.floor(Math.random() * emojis.length)
  104. const c = Math.floor(Math.random() * emojis.length)
  105. const [x, y, z] = [[], [], []]
  106. for (let i = 0; i < 3; i++) {
  107. x[i] = emojis[(a + i) % emojis.length]
  108. y[i] = emojis[(b + i) % emojis.length]
  109. z[i] = emojis[(c + i) % emojis.length]
  110. }
  111. let end
  112. if (a === b && b === c) {
  113. end = `๐Ÿฅณ *ยกQUร‰ PRO! HAS GANADO +${bonusWin(apuesta)} ${name}*`
  114. users[currency] += apuesta
  115. } else if (a === b || a === c || b === c) {
  116. end = `๐Ÿ˜ฏ *ยกCASI! VUELVE A INTENTAR*\n*BONO DE +${consolation} ${name}*`
  117. users[currency] += consolation
  118. } else {
  119. end = `๐Ÿ˜ฟ *ยกHAS PERDIDO! โŒ -${apuesta} ${name}*`
  120. users[currency] -= apuesta
  121. }
  122. const hawemod = [
  123. `${x[0]} : ${y[1]} : ${z[0]}\n${z[1]} : ${y[0]} : ${x[0]}\n${z[2]} : ${x[1]} : ${y[2]}`,
  124. `${x[0]} : ${y[0]} : ${z[0]}\n${y[1]} : ${z[1]} : ${x[1]}\n${x[2]} : ${y[2]} : ${z[2]}`,
  125. `${x[0]} : ${y[1]} : ${z[0]}\n${y[1]} : ${z[2]} : ${x[1]}\n${x[2]} : ${y[1]} : ${z[2]}`
  126. ]
  127. const maxIterations = 25
  128. const arrayCasuale = generaArrayCasuale(hawemod, maxIterations)
  129. const array = [...arrayCasuale]
  130. const { key } = await conn.sendMessage(m.chat, { text: `๐Ÿ•น` }, { quoted: m })
  131. for (let i = 0; i < maxIterations; i++) {
  132. await conn.sendMessage(m.chat, {text: `๐ŸŽฐ | *RANURAS* | ๐ŸŽฐ\nโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n${array[i]}\nโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n๐ŸŽฐ | *SLOTS* | ๐ŸŽฐ`, edit: key }, { quoted: m })
  133. await new Promise(resolve => setTimeout(resolve, 50))
  134. }
  135. await conn.sendMessage(m.chat, { text: `๐ŸŽฐ | *RANURAS* | ๐ŸŽฐ\nโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n${x[0]} : ${y[0]} : ${z[0]}\n${x[1]} : ${y[1]} : ${z[1]}\n${x[2]} : ${y[2]} : ${z[2]}\nโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n๐ŸŽฐ | *SLOTS* | ๐ŸŽฐ\n\n${end}`, edit: key }, { quoted: m })
  136. }
  137. if (command === 'apostar' || command === 'slot') {
  138. if (!args[0]) return m.reply(fa)
  139. if (isNaN(args[0])) return m.reply(fa)
  140. const apuesta = parseInt(args[0])
  141. await conn.sendButton(m.chat, `*Elige en quรฉ apostar tus ${apuesta}*`, botname, null, [['โšก Exp', `.slot1 ${apuesta}`], ['๐Ÿช™ KantuCoins', `.slot2 ${apuesta}`], ['๐Ÿ’Ž Diamantes', `.slot3 ${apuesta}`]], null, null, m)
  142. return
  143. }
  144. if (!args[0]) return m.reply(fa)
  145. if (isNaN(args[0])) return m.reply(fa)
  146. const apuesta = parseInt(args[0])
  147. const users = global.db.data.users[m.sender]
  148. const slotType = slotTypes[command]
  149. if (!slotType) return
  150. try {
  151. validateBet(users, apuesta, slotType.currency, slotType.name)
  152. await playSlot(m, conn, apuesta, slotType, users)
  153. } catch (e) {
  154. m.reply(e)
  155. }}
  156. if (command == 'tictactoe' || command == 'ttc' || command == 'ttt' || command == 'xo') {
  157. conn.game = conn.game ? conn.game : {}
  158. if (Object.values(conn.game).find(room => room.id.startsWith('tictactoe') && [room.game.playerX, room.game.playerO].includes(m.sender))) return m.reply(`โš ๏ธ ๐™๐™ค๐™™๐™–๐™ซ๐™ž๐™– ๐™–๐™ก๐™œ๐™ช๐™ž๐™š๐™ฃ ๐™š๐™จ๐™ฉ๐™– ๐™Ÿ๐™ช๐™œ๐™–๐™ฃ๐™™๐™ค ๐™š๐™ฃ ๐™ก๐™– ๐™จ๐™–๐™ก๐™– ๐™จ๐™ž ๐™ฆ๐™ช๐™ž๐™š๐™ง๐™š ๐™–๐™—๐™–๐™ฃ๐™™๐™ค๐™ฃ๐™–๐™ง ๐™š๐™จ๐™˜๐™ง๐™ž๐™—๐™– *salir*\n๐™๐™–๐™ข๐™—๐™ž๐™š๐™ฃ ๐™ฅ๐™ช๐™š๐™™๐™š๐™จ ๐™š๐™ก๐™ž๐™ข๐™ž๐™ฃ๐™–๐™ง ๐™ก๐™– ๐™จ๐™–๐™ก๐™– ๐™ช๐™จ๐™–๐™ฃ๐™™๐™ค ๐™š๐™ก ๐™˜๐™ค๐™ข๐™–๐™ฃ๐™™๐™ค *${usedPrefix}delttt*`)
  159. if (!text) return m.reply(`*โš ๏ธ ๐˜ฟ๐™š๐™—๐™š ๐™™๐™š ๐™–๐™œ๐™ง๐™š๐™œ๐™– ๐™ช๐™ฃ ๐™ฃ๐™ค๐™ข๐™—๐™ง๐™š ๐™– ๐™ก๐™– ๐™จ๐™–๐™ก๐™–\n๐™€๐™Ÿ๐™š๐™ข๐™ฅ๐™ก๐™ค\n${usedPrefix + command} Sala bot*`)
  160. let room = Object.values(conn.game).find(room => room.state === 'WAITING' && (text ? room.name === text : true))
  161. if (room) {
  162. await conn.reply(m.chat, `โš ๏ธ ๐˜ผ๐™ก๐™œ๐™ช๐™ž๐™š๐™ฃ ๐™จ๐™š ๐™๐™– ๐™ช๐™ฃ๐™ž๐™™๐™ค ๐™– ๐™ก๐™– ๐™จ๐™–๐™ก๐™– *${text}*\n๐™”๐™– ๐™ฅ๐™ช๐™š๐™™๐™š๐™ฃ ๐™Ÿ๐™ช๐™œ๐™–๐™ง!! ๐Ÿ˜ผ`, fkontak, m)
  163. await conn.reply(m.chat, `โญ•๏ธ *Clรกsico Juego del Gato, 3 en raya o tateti* โŒ\n\n*ยฟCรณmo jugar?*\n_Responde al Juego con un Nรบmero, el mensaje debe contener la posiscion en la que quieras estar (1,2,3,4,5,6,7,8,9)_`, fkontak, m)
  164. room.o = m.chat
  165. room.game.playerO = m.sender
  166. room.state = 'PLAYING'
  167. let arr = room.game.render().map(v => {
  168. return {
  169. X: 'โŽ',
  170. O: 'โญ•',
  171. 1: '1๏ธโƒฃ',
  172. 2: '2๏ธโƒฃ',
  173. 3: '3๏ธโƒฃ',
  174. 4: '4๏ธโƒฃ',
  175. 5: '5๏ธโƒฃ',
  176. 6: '6๏ธโƒฃ',
  177. 7: '7๏ธโƒฃ',
  178. 8: '8๏ธโƒฃ',
  179. 9: '9๏ธโƒฃ',
  180. }[v]})
  181. let str = `๐Ÿ’– ๐™…๐™ช๐™š๐™œ๐™ค ๐™ฉ๐™–๐™ฉ๐™š๐™ฉ๐™ž
  182. ๐Ÿซ‚ ๐™…๐™ช๐™œ๐™–๐™™๐™ค๐™ง๐™š๐™จ:
  183. *โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ*
  184. โŽ = @${room.game.playerX.split('@')[0]}
  185. โญ• = @${room.game.playerO.split('@')[0]}
  186. *โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ*
  187. ${arr.slice(0, 3).join('')}
  188. ${arr.slice(3, 6).join('')}
  189. ${arr.slice(6).join('')}
  190. *โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ*
  191. ๐™๐™ช๐™ง๐™ฃ๐™ค ๐™™๐™š:
  192. @${room.game.currentTurn.split('@')[0]}
  193. `.trim()
  194. if (room.x !== room.o) await conn.sendMessage(room.x, { text: str, mentions: this.parseMention(str)}, { quoted: fkontak, m })
  195. await conn.sendMessage(room.o, { text: str, mentions: conn.parseMention(str)}, { quoted: fkontak, m })
  196. } else {
  197. room = {
  198. id: 'tictactoe-' + (+new Date),
  199. x: m.chat,
  200. o: '',
  201. game: new TicTacToe(m.sender, 'o'),
  202. state: 'WAITING' }
  203. if (text) room.name = text
  204. let imgplay = `https://img.freepik.com/vector-premium/juego-tres-raya-icono-contorno-lineal-neon_7280-2422.jpg`
  205. conn.sendMessage(m.chat, { image: { url: imgplay }, caption: `๐Ÿ˜ผ ๐™…๐™ช๐™š๐™œ๐™ค๐™จ ๐™๐™–๐™ฉ๐™š๐™ฉ๐™ž
  206. ๐Ÿˆ ๐™€๐™จ๐™ฅ๐™š๐™ง๐™–๐™ฃ๐™™๐™ค ๐™–๐™ก ๐™จ๐™š๐™œ๐™ช๐™ฃ๐™™๐™ค ๐™Ÿ๐™ช๐™œ๐™–๐™™๐™ค๐™ง ๐™ฅ๐™ช๐™š๐™™๐™š ๐™ž๐™ฃ๐™œ๐™ง๐™š๐™จ๐™– ๐™ช๐™จ๐™–๐™ฃ๐™™๐™ค ๐™š๐™ก ๐™˜๐™ค๐™ข๐™–๐™ฃ๐™™๐™ค
  207. *${usedPrefix + command} ${text}*
  208. ๐™Ž๐™ž ๐™ฆ๐™ช๐™ž๐™š๐™ง๐™š๐™จ ๐™–๐™—๐™–๐™ฃ๐™™๐™ค๐™ฃ๐™–๐™ง ๐™ก๐™– ๐™จ๐™–๐™ก๐™– ๐™ช๐™จ๐™– ๐™š๐™ก ๐™˜๐™ค๐™ข๐™–๐™ฃ๐™™๐™ค
  209. *${usedPrefix}delttt*` }, { mentions: conn.parseMention(text), quoted: fkontak })
  210. conn.game[room.id] = room
  211. }}
  212. if (command == 'math' || command == 'mates' || command == 'matemรกticas') {
  213. // 60000 = 1 minuto // 30000 = 30 segundos // 15000 = 15 segundos // 10000 = 10 segundos
  214. let time = global.db.data.users[m.sender].wait + 60000
  215. if (new Date - global.db.data.users[m.sender].wait < 60000) return await conn.reply(m.chat, `*๐Ÿ•“ ๐™€๐™Ž๐™‹๐™€๐™๐˜ผ ${Math.floor((time - new Date()) / 1000)} ๐™Ž๐™€๐™‚๐™๐™‰๐˜ฟ๐™Š๐™Ž ๐˜ผ๐™‰๐™๐™€๐™Ž ๐˜ฟ๐™€ ๐™‘๐™Š๐™‡๐™‘๐™€๐™ ๐˜ผ ๐™…๐™๐™‚๐˜ผ๐™*`, fkontak, m)
  216. let mat = `${lenguajeGB['smsAvisoIIG']()}โœจ ๐™‹๐™ช๐™š๐™™๐™š ๐™š๐™จ๐™˜๐™ง๐™ž๐™—๐™ž ๐™ก๐™– ๐™™๐™ž๐™›๐™ž๐™˜๐™ช๐™ก๐™ฉ๐™–๐™™
  217. *Nivel del dificultad*
  218. ${Object.keys(modes).join(' | ')}
  219. *Ejemplo:*
  220. ${usedPrefix + command} noob
  221. ${usedPrefix + command} impossible2
  222. ๐Ÿ˜ผ *Mientras mas dificultad mayor recompensa*`.trim()
  223. if (args.length < 1) return await conn.reply(m.chat, mat, fkontak, m)
  224. let mode = args[0].toLowerCase()
  225. if (!(mode in modes)) return await conn.reply(m.chat, mat, fkontak, m)
  226. let id = m.chat
  227. if (id in global.math) return conn.reply(m.chat, `โš ๏ธ *แด›แดแด…แด€แด ษชแด€ สœแด€ส แด˜ส€แด‡ษขแดœษดแด›แด€ sษชษด ส€แด‡sแด˜แดษดแด…แด‡ส€ แด‡สŸ แด‡sแด›แด‡ แด„สœแด€แด›!!*`, global.math[id][0])
  228. //let ii = global.db.data.users[m.sender].limit += 10 math.dia
  229. let math = genMath(mode)
  230. global.math[id] = [
  231. await conn.reply(m.chat, `โ•ญโ”„ใ€” *${wm}* ใ€•โ”„โŠฑ
  232. โ”†๐˜พ๐™ช๐™–๐™ก ๐™š๐™จ ๐™ง๐™š๐™จ๐™ช๐™ก๐™ฉ๐™–๐™™๐™ค ๐™™๐™š: *${math.str} = ?*
  233. โ”†โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ
  234. โ”†๐Ÿงญ ๐™๐™ž๐™š๐™ข๐™ฅ๐™ค: *${(math.time / 1000).toFixed(0)} segundos*
  235. โ”†โ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆโ”ˆ
  236. โ”†๐™๐™š๐™จ๐™ฅ๐™ค๐™ฃ๐™™๐™š ๐™– ๐™š๐™จ๐™ฉ๐™š ๐™ข๐™š๐™ฃ๐™จ๐™–๐™Ÿ๐™š ๐™ฎ ๐™‚๐™–๐™ฃ๐™–
  237. โ”†๐Ÿ† *${math.bonus}: XP*
  238. โ•ฐโ”โ”โ”โŠฐ ๐“ƒ  ${vs} โŠฑโ”โ”โ”โ”แƒ“`, m),
  239. math, 4,
  240. //await conn.reply(m.chat, `โฌ†๏ธโฌ†๏ธโฌ†๏ธโฌ†๏ธโฌ†๏ธโฌ†๏ธโฌ†๏ธโฌ†๏ธโฌ†๏ธโฌ†๏ธโฌ†๏ธ๐™๐™€๐™Ž๐™‹๐™Š๐™‰๐˜ฟ๐˜ผ ๐˜ผ๐™‡ ๐™ˆ๐™€๐™‰๐™Ž๐˜ผ๐™…๐™€ ๐˜ฟ๐™€ ๐˜ผ๐™๐™๐™„๐˜ฝ๐˜ผ ๐˜พ๐™Š๐™‰ ๐™‡๐˜ผ ๐™๐™€๐™Ž๐™‹๐™๐™€๐™Ž๐™๐˜ผ\n\n๐˜ผ๐™‰๐™Ž๐™’๐™€๐™ ๐™๐™ƒ๐™€ ๐™ˆ๐™€๐™Ž๐™Ž๐˜ผ๐™‚๐™€ ๐˜ผ๐˜ฝ๐™Š๐™‘๐™€ ๐™๐™Š ๐™†๐™‰๐™Š๐™’ ๐™”๐™Š๐™๐™ ๐˜ผ๐™‰๐™Ž๐™’๐™€๐™\n\n${wm}`, fkontak, m), math, 4,
  241. setTimeout(() => {
  242. if (global.math[id]) conn.reply(m.chat, `โŒ› sแด‡ แด€แด„แด€ส™แด แด‡สŸ แด›ษชแด‡แดแด˜แด สŸแด€ ส€แด‡sแด˜แดœแด‡sแด›แด€ แด‡s *${math.result}*`, global.math[id][0])
  243. delete global.math[id]
  244. }, math.time)
  245. ]
  246. global.db.data.users[m.sender].wait = new Date * 1
  247. }
  248. if (command == 'delttt' || command == 'deltt' || command == 'delxo' || command == 'deltictactoe') {
  249. let room = Object.values(conn.game).find(room => room.id.startsWith('tictactoe') && [room.game.playerX, room.game.playerO].includes(m.sender))
  250. if (room == undefined) return await conn.reply(m.chat, `โš ๏ธ ๐™‰๐™Š ๐™€๐™Ž๐™๐˜ผ๐™Ž ๐™€๐™‰ ๐™‰๐™„๐™‰๐™‚๐™๐™‰๐˜ผ ๐™‹๐˜ผ๐™๐™๐™„๐˜ฟ๐˜ผ ๐™€๐™‰ ๐™€๐™‡ ๐™…๐™๐™€๐™‚๐™Š ๐™๐™๐™€๐™Ž ๐™€๐™‰ ๐™๐˜ผ๐™”๐˜ผ\n\n๐Ÿ’ซ ๐™„๐™‰๐™„๐˜พ๐™„๐˜ผ๐™ ๐™‹๐˜ผ๐™๐™๐™„๐˜ฟ๐˜ผ (${usedPrefix}ttt sala nueva)`, fkontak, m)
  251. delete conn.game[room.id]
  252. await conn.reply(m.chat, `โš ๏ธ ๐™‡๐˜ผ ๐™Ž๐˜ผ๐™‡๐˜ผ ๐™๐™๐™€๐™Ž ๐™€๐™‰ ๐™๐˜ผ๐™”๐˜ผ ๐™๐™๐™€ ๐™€๐™‡๐™„๐™ˆ๐™„๐™‰๐˜ผ๐˜ฟ๐˜ผ`, fkontak, m)
  253. }} catch (e) {
  254. //await conn.reply(m.chat, `${lenguajeGB['smsMalError3']()}#report ${lenguajeGB['smsMensError2']()} ${usedPrefix + command}\n\n${wm}`, fkontak, m)
  255. console.log(e)}}
  256. handler.help = ["ppt", "suitpvp", "pvp", "slot", "apostar", "tictactoe", "ttt", "math", "matemรกticas", "delttt"];
  257. handler.tags = ['game'];
  258. handler.command = /^(ppt|suitpvp|suit|pvp|moneda|suert|currency|luck|cara|Method|slot|apostar|slot1|slot2|slot3|tictactoe|ttc|ttt|xo|math|mates|matemรกticas|delttt|deltt|delxo|deltictactoe)$/i
  259. handler.group = true
  260. handler.game = true
  261. handler.register = true
  262. export default handler
  263. function pickRandom(list) {
  264. return list[Math.floor(Math.random() * list.length)]}
  265. function msToTime(duration) {
  266. var milliseconds = parseInt((duration % 1000) / 100),
  267. seconds = Math.floor((duration / 1000) % 60),
  268. minutes = Math.floor((duration / (1000 * 60)) % 60),
  269. hours = Math.floor((duration / (1000 * 60 * 60)) % 24)
  270. hours = (hours < 10) ? "0" + hours : hours
  271. minutes = (minutes < 10) ? "0" + minutes : minutes
  272. seconds = (seconds < 10) ? "0" + seconds : seconds
  273. return minutes + " m " + seconds + " s "
  274. }
  275. let modes = {
  276. noob: [-3, 3,-3, 3, '+-', 15000, 30],
  277. easy: [-10, 10, -10, 10, '*/+-', 20000, 50],
  278. medium: [-40, 40, -20, 20, '*/+-', 30000, 200],
  279. hard: [-100, 100, -70, 70, '*/+-', 40000, 500],
  280. extreme: [-999999, 999999, -999999, 999999, '*/', 40000, 2500],
  281. impossible: [-99999999999, 99999999999, -99999999999, 999999999999, '*/', 50000, 5500],
  282. impossible2: [-999999999999999, 999999999999999, -999, 999, '/', 60000, 8500]
  283. }
  284. let operators = {
  285. '+': '+',
  286. '-': '-',
  287. '*': 'ร—',
  288. '/': 'รท'
  289. }
  290. // XP
  291. function genMath(mode) {
  292. let [a1, a2, b1, b2, ops, time, bonus] = modes[mode]
  293. let a = randomInt(a1, a2)
  294. let b = randomInt(b1, b2)
  295. let op = pickRandom([...ops])
  296. let result = (new Function(`return ${a} ${op.replace('/', '*')} ${b < 0 ? `(${b})` : b}`))()
  297. if (op == '/') [a, result] = [result, a]
  298. return {
  299. str: `${a} ${operators[op]} ${b}`,
  300. mode,
  301. time,
  302. bonus,
  303. result
  304. }}
  305. function generaArrayCasuale(array, ripetizioni) {
  306. let risultato = [];
  307. for (let i = 0; i < ripetizioni; i++) {
  308. risultato = risultato.concat(array);
  309. }
  310. return risultato;
  311. }
  312. function randomInt(from, to) {
  313. if (from > to) [from, to] = [to, from]
  314. from = Math.floor(from)
  315. to = Math.floor(to)
  316. return Math.floor((to - from) * Math.random() + from)
  317. }