UNPKG

djs-easy

Version:

djs-easy is a javascript package for discord with the a lot stuff you need to make your bot programming easy

840 lines (796 loc) 53.8 kB
const { MessageActionRow, MessageButton, MessageEmbed } = require('discord.js'); class TicTacToe { /** * @name TicTacToe * @kind constructor * @param {Object} options options * @param {String} [options.xEmoji] x emoji * @param {any} [options.message] the discord message * @param {String} [options.xColor] x button color * @param {String} [options.oEmoji] o emoji * @param {String} [options.oColor] o button color * @param {String} [options.embedDescription] embedDescription * @param {any} [options.opponent] const opponent = <Message>.mentions.members.first() (NOT CHANGEABLE) */ constructor(options) { if (!options.xEmoji) throw new TypeError('Missing argument: xEmoji') if (typeof options.xEmoji !== 'string') throw new TypeError('Error: xEmoji must be a string') if (!options.oEmoji) throw new TypeError('Missing argument: oEmoji') if (typeof options.oEmoji !== 'string') throw new TypeError('Error: oEmoji must be a string') if (!options.xColor) throw new TypeError('Missing argument: xColor') if (typeof options.xColor !== 'string') throw new TypeError('Error: xColor must be a string') if (!options.oColor) throw new TypeError('Missing argument: oColor') if (typeof options.oColor !== 'string') throw new TypeError('Error: oColor must be a string') if (!options.opponent) throw new TypeError('Error: Missing argument opponent') if (!options.message) throw new TypeError('Error: Missing argument message') this.message = options.message; this.xEmoji = options.xEmoji this.oEmoji = options.oEmoji this.opponent = options.opponent this.xColor = options.xColor this.oColor = options.oColor this.embedDescription = options.embedDescription } async start() { let a1 = '⬜' let a2 = '⬜' let a3 = '⬜' let b1 = '⬜' let b2 = '⬜' let b3 = '⬜' let c1 = '⬜' let c2 = '⬜' let c3 = '⬜' function getRandomString(length) { var randomChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; var result = ''; for (var i = 0; i < length; i++) { result += randomChars.charAt(Math.floor(Math.random() * randomChars.length)) } return result } let a11 = (getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4)) let a22 = (getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4)) let a33 = (getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4)) let b11 = (getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4)) let b22 = (getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4)) let b33 = (getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4)) let c11 = (getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4)) let c22 = (getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4)) let c33 = (getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4) + '-' + getRandomString(4)) let player = 0; const author = this.message.author.id const member = this.opponent const authorName = this.message.author.username const midDuel = new Set() if (midDuel.has(author)) { return this.message.channel.send(`You're currently in a game`) } else if (midDuel.has(member.id)) { return this.message.channel.send(`<@${member.id}> is currently in a game`) } if (member.id === this.message.client.user.id) { return this.message.channel.send("You can't play me lmfao") } const gameData = [ { member: this.message.author, em: this.xEmoji, color: this.xColor }, { member: member, em: this.oEmoji, color: this.oColor } ]; let Embed = new MessageEmbed() .setDescription(this.embedDescription || `🎮 ${authorName} VS ${this.opponent.username} 🎮`) .setColor(3426654) let A1 = new MessageButton() .setCustomId(a11) .setStyle('SECONDARY') .setLabel('~') let A2 = new MessageButton() .setCustomId(a22) .setStyle('SECONDARY') .setLabel('~') let A3 = new MessageButton() .setCustomId(a33) .setStyle('SECONDARY') .setLabel('~') let B1 = new MessageButton() .setCustomId(b11) .setStyle('SECONDARY') .setLabel('~') let B2 = new MessageButton() .setCustomId(b22) .setStyle('SECONDARY') .setLabel('~') let B3 = new MessageButton() .setCustomId(b33) .setStyle('SECONDARY') .setLabel('~') let C1 = new MessageButton() .setCustomId(c11) .setStyle('SECONDARY') .setLabel('~') let C2 = new MessageButton() .setCustomId(c22) .setStyle('SECONDARY') .setLabel('~') let C3 = new MessageButton() .setCustomId(c33) .setStyle('SECONDARY') .setLabel('~') this.message.channel.send({ embeds: [Embed], components: [ { type: 1, components: [ A1, A2, A3 ] }, { type: 1, components: [ B1, B2, B3 ] }, { type: 1, components: [ C1, C2, C3 ] }, ] }).then(async (msg) => { midDuel.add(author) midDuel.add(member.id) const gameFilter = m => m.user.id === this.message.author.id || m.user.id === this.opponent.id const gameCollector = msg.createMessageComponentCollector({ gameFilter, componentType: 'BUTTON' }); gameCollector.on('collect', async btn => { if (btn.customId == a11 && gameData[player].member.id === btn.user.id) { btn.deferUpdate() if (btn.label == this.oEmoji || btn.label == this.xEmoji) { // User tries to place at an already claimed spot btn.reply('That spot is already taken.') } else { try { a1 = gameData[player].em if (a1 == this.xEmoji && b1 == this.xEmoji && c1 == this.xEmoji || a1 == this.oEmoji && b1 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a2 == this.xEmoji && b2 == this.xEmoji && c2 == this.xEmoji || a2 == this.oEmoji && b2 == this.oEmoji && c2 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b3 == this.xEmoji && c3 == this.xEmoji || a3 == this.oEmoji && b3 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && a2 == this.xEmoji && a3 == this.xEmoji || a1 == this.oEmoji && a2 == this.oEmoji && a3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (b1 == this.xEmoji && b2 == this.xEmoji && b3 == this.xEmoji || b1 == this.oEmoji && b2 == this.oEmoji && b3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (c1 == this.xEmoji && c2 == this.xEmoji && c3 == this.xEmoji || c1 == this.oEmoji && c2 == this.oEmoji && c3 == this.oEmoji) { player = (player + 1) % 2; this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && b2 == this.xEmoji && c3 == this.xEmoji || a1 == this.oEmoji && b2 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b2 == this.xEmoji && c1 == this.xEmoji || a3 == this.oEmoji && b2 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } } catch (e) { console.log(e) } player = (player + 1) % 2; A1 = new MessageButton() .setCustomId(a11) .setStyle(gameData[player].color) .setEmoji(gameData[player].em) .setDisabled() msg.edit({ embeds: [Embed], components: [ { type: 1, components: [ A1, A2, A3 ] }, { type: 1, components: [ B1, B2, B3 ] }, { type: 1, components: [ C1, C2, C3 ] }, ] }) } } else if (btn.customId == a22 && gameData[player].member.id === btn.user.id) { btn.deferUpdate() if (btn.label == this.oEmoji || btn.label == this.xEmoji) { // User tries to place at an already claimed spot btn.reply('That spot is already taken.') } else { try { a2 = gameData[player].em if (a1 == this.xEmoji && b1 == this.xEmoji && c1 == this.xEmoji || a1 == this.oEmoji && b1 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a2 == this.xEmoji && b2 == this.xEmoji && c2 == this.xEmoji || a2 == this.oEmoji && b2 == this.oEmoji && c2 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b3 == this.xEmoji && c3 == this.xEmoji || a3 == this.oEmoji && b3 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && a2 == this.xEmoji && a3 == this.xEmoji || a1 == this.oEmoji && a2 == this.oEmoji && a3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (b1 == this.xEmoji && b2 == this.xEmoji && b3 == this.xEmoji || b1 == this.oEmoji && b2 == this.oEmoji && b3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (c1 == this.xEmoji && c2 == this.xEmoji && c3 == this.xEmoji || c1 == this.oEmoji && c2 == this.oEmoji && c3 == this.oEmoji) { player = (player + 1) % 2; this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && b2 == this.xEmoji && c3 == this.xEmoji || a1 == this.oEmoji && b2 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b2 == this.xEmoji && c1 == this.xEmoji || a3 == this.oEmoji && b2 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } } catch (e) { console.log(e) } player = (player + 1) % 2; A2 = new MessageButton() .setCustomId(a22) .setStyle(gameData[player].color) .setEmoji(gameData[player].em) .setDisabled() msg.edit({ embeds: [Embed], components: [ { type: 1, components: [ A1, A2, A3 ] }, { type: 1, components: [ B1, B2, B3 ] }, { type: 1, components: [ C1, C2, C3 ] }, ] }) } } else if (btn.customId == a33 && gameData[player].member.id === btn.user.id) { btn.deferUpdate() if (btn.label == this.oEmoji || btn.label == this.xEmoji) { // User tries to place at an already claimed spot btn.reply('That spot is already taken.') } else { try { a3 = gameData[player].em if (a1 == this.xEmoji && b1 == this.xEmoji && c1 == this.xEmoji || a1 == this.oEmoji && b1 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a2 == this.xEmoji && b2 == this.xEmoji && c2 == this.xEmoji || a2 == this.oEmoji && b2 == this.oEmoji && c2 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b3 == this.xEmoji && c3 == this.xEmoji || a3 == this.oEmoji && b3 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && a2 == this.xEmoji && a3 == this.xEmoji || a1 == this.oEmoji && a2 == this.oEmoji && a3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (b1 == this.xEmoji && b2 == this.xEmoji && b3 == this.xEmoji || b1 == this.oEmoji && b2 == this.oEmoji && b3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (c1 == this.xEmoji && c2 == this.xEmoji && c3 == this.xEmoji || c1 == this.oEmoji && c2 == this.oEmoji && c3 == this.oEmoji) { player = (player + 1) % 2; this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && b2 == this.xEmoji && c3 == this.xEmoji || a1 == this.oEmoji && b2 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b2 == this.xEmoji && c1 == this.xEmoji || a3 == this.oEmoji && b2 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } } catch (e) { console.log(e) } player = (player + 1) % 2; A3 = new MessageButton() .setCustomId(a33) .setStyle(gameData[player].color) .setEmoji(gameData[player].em) .setDisabled() msg.edit({ embeds: [Embed], components: [ { type: 1, components: [ A1, A2, A3 ] }, { type: 1, components: [ B1, B2, B3 ] }, { type: 1, components: [ C1, C2, C3 ] }, ] }) } } else if (btn.customId == b11 && gameData[player].member.id === btn.user.id) { btn.deferUpdate() if (btn.label == this.oEmoji || btn.label == this.xEmoji) { // User tries to place at an already claimed spot btn.reply('That spot is already taken.') } else { try { b1 = gameData[player].em if (a1 == this.xEmoji && b1 == this.xEmoji && c1 == this.xEmoji || a1 == this.oEmoji && b1 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a2 == this.xEmoji && b2 == this.xEmoji && c2 == this.xEmoji || a2 == this.oEmoji && b2 == this.oEmoji && c2 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b3 == this.xEmoji && c3 == this.xEmoji || a3 == this.oEmoji && b3 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && a2 == this.xEmoji && a3 == this.xEmoji || a1 == this.oEmoji && a2 == this.oEmoji && a3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (b1 == this.xEmoji && b2 == this.xEmoji && b3 == this.xEmoji || b1 == this.oEmoji && b2 == this.oEmoji && b3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (c1 == this.xEmoji && c2 == this.xEmoji && c3 == this.xEmoji || c1 == this.oEmoji && c2 == this.oEmoji && c3 == this.oEmoji) { player = (player + 1) % 2; this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && b2 == this.xEmoji && c3 == this.xEmoji || a1 == this.oEmoji && b2 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b2 == this.xEmoji && c1 == this.xEmoji || a3 == this.oEmoji && b2 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } } catch (e) { console.log(e) } player = (player + 1) % 2; B1 = new MessageButton() .setCustomId(b11) .setStyle(gameData[player].color) .setEmoji(gameData[player].em) .setDisabled() msg.edit({ embeds: [Embed], components: [ { type: 1, components: [ A1, A2, A3 ] }, { type: 1, components: [ B1, B2, B3 ] }, { type: 1, components: [ C1, C2, C3 ] }, ] }) } } else if (btn.customId == b22 && gameData[player].member.id === btn.user.id) { btn.deferUpdate() if (btn.label == this.oEmoji || btn.label == this.xEmoji) { // User tries to place at an already claimed spot btn.reply('That spot is already taken.') } else { try { b2 = gameData[player].em if (a1 == this.xEmoji && b1 == this.xEmoji && c1 == this.xEmoji || a1 == this.oEmoji && b1 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a2 == this.xEmoji && b2 == this.xEmoji && c2 == this.xEmoji || a2 == this.oEmoji && b2 == this.oEmoji && c2 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b3 == this.xEmoji && c3 == this.xEmoji || a3 == this.oEmoji && b3 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && a2 == this.xEmoji && a3 == this.xEmoji || a1 == this.oEmoji && a2 == this.oEmoji && a3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (b1 == this.xEmoji && b2 == this.xEmoji && b3 == this.xEmoji || b1 == this.oEmoji && b2 == this.oEmoji && b3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (c1 == this.xEmoji && c2 == this.xEmoji && c3 == this.xEmoji || c1 == this.oEmoji && c2 == this.oEmoji && c3 == this.oEmoji) { player = (player + 1) % 2; this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && b2 == this.xEmoji && c3 == this.xEmoji || a1 == this.oEmoji && b2 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b2 == this.xEmoji && c1 == this.xEmoji || a3 == this.oEmoji && b2 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } } catch (e) { console.log(e) } player = (player + 1) % 2; B2 = new MessageButton() .setCustomId(b22) .setStyle(gameData[player].color) .setEmoji(gameData[player].em) .setDisabled() msg.edit({ embeds: [Embed], components: [ { type: 1, components: [ A1, A2, A3 ] }, { type: 1, components: [ B1, B2, B3 ] }, { type: 1, components: [ C1, C2, C3 ] }, ] }) } } else if (btn.customId == b33 && gameData[player].member.id === btn.user.id) { btn.deferUpdate() if (btn.label == this.oEmoji || btn.label == this.xEmoji) { // User tries to place at an already claimed spot btn.reply('That spot is already taken.') } else { try { b3 = gameData[player].em if (a1 == this.xEmoji && b1 == this.xEmoji && c1 == this.xEmoji || a1 == this.oEmoji && b1 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a2 == this.xEmoji && b2 == this.xEmoji && c2 == this.xEmoji || a2 == this.oEmoji && b2 == this.oEmoji && c2 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b3 == this.xEmoji && c3 == this.xEmoji || a3 == this.oEmoji && b3 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && a2 == this.xEmoji && a3 == this.xEmoji || a1 == this.oEmoji && a2 == this.oEmoji && a3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (b1 == this.xEmoji && b2 == this.xEmoji && b3 == this.xEmoji || b1 == this.oEmoji && b2 == this.oEmoji && b3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (c1 == this.xEmoji && c2 == this.xEmoji && c3 == this.xEmoji || c1 == this.oEmoji && c2 == this.oEmoji && c3 == this.oEmoji) { player = (player + 1) % 2; this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && b2 == this.xEmoji && c3 == this.xEmoji || a1 == this.oEmoji && b2 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b2 == this.xEmoji && c1 == this.xEmoji || a3 == this.oEmoji && b2 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } } catch (e) { console.log(e) } player = (player + 1) % 2; B3 = new MessageButton() .setCustomId(b33) .setStyle(gameData[player].color) .setEmoji(gameData[player].em) .setDisabled() msg.edit({ embeds: [Embed], components: [ { type: 1, components: [ A1, A2, A3 ] }, { type: 1, components: [ B1, B2, B3 ] }, { type: 1, components: [ C1, C2, C3 ] }, ] }) } } else if (btn.customId == c11 && gameData[player].member.id === btn.user.id) { btn.deferUpdate() if (btn.label == this.oEmoji || btn.label == this.xEmoji) { // User tries to place at an already claimed spot btn.reply('That spot is already taken.') } else { try { c1 = gameData[player].em if (a1 == this.xEmoji && b1 == this.xEmoji && c1 == this.xEmoji || a1 == this.oEmoji && b1 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a2 == this.xEmoji && b2 == this.xEmoji && c2 == this.xEmoji || a2 == this.oEmoji && b2 == this.oEmoji && c2 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b3 == this.xEmoji && c3 == this.xEmoji || a3 == this.oEmoji && b3 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && a2 == this.xEmoji && a3 == this.xEmoji || a1 == this.oEmoji && a2 == this.oEmoji && a3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (b1 == this.xEmoji && b2 == this.xEmoji && b3 == this.xEmoji || b1 == this.oEmoji && b2 == this.oEmoji && b3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (c1 == this.xEmoji && c2 == this.xEmoji && c3 == this.xEmoji || c1 == this.oEmoji && c2 == this.oEmoji && c3 == this.oEmoji) { player = (player + 1) % 2; this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && b2 == this.xEmoji && c3 == this.xEmoji || a1 == this.oEmoji && b2 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b2 == this.xEmoji && c1 == this.xEmoji || a3 == this.oEmoji && b2 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } } catch (e) { console.log(e) } player = (player + 1) % 2; C1 = new MessageButton() .setCustomId(c11) .setStyle(gameData[player].color) .setEmoji(gameData[player].em) .setDisabled() msg.edit({ embeds: [Embed], components: [ { type: 1, components: [ A1, A2, A3 ] }, { type: 1, components: [ B1, B2, B3 ] }, { type: 1, components: [ C1, C2, C3 ] }, ] }) } } else if (btn.customId == c22 && gameData[player].member.id === btn.user.id) { btn.deferUpdate() if (btn.label == this.oEmoji || btn.label == this.xEmoji) { // User tries to place at an already claimed spot btn.reply('That spot is already taken.') } else { try { c2 = gameData[player].em if (a1 == this.xEmoji && b1 == this.xEmoji && c1 == this.xEmoji || a1 == this.oEmoji && b1 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a2 == this.xEmoji && b2 == this.xEmoji && c2 == this.xEmoji || a2 == this.oEmoji && b2 == this.oEmoji && c2 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b3 == this.xEmoji && c3 == this.xEmoji || a3 == this.oEmoji && b3 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && a2 == this.xEmoji && a3 == this.xEmoji || a1 == this.oEmoji && a2 == this.oEmoji && a3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (b1 == this.xEmoji && b2 == this.xEmoji && b3 == this.xEmoji || b1 == this.oEmoji && b2 == this.oEmoji && b3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (c1 == this.xEmoji && c2 == this.xEmoji && c3 == this.xEmoji || c1 == this.oEmoji && c2 == this.oEmoji && c3 == this.oEmoji) { player = (player + 1) % 2; this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && b2 == this.xEmoji && c3 == this.xEmoji || a1 == this.oEmoji && b2 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b2 == this.xEmoji && c1 == this.xEmoji || a3 == this.oEmoji && b2 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } } catch (e) { console.log(e) } player = (player + 1) % 2; C2 = new MessageButton() .setCustomId(c22) .setStyle(gameData[player].color) .setEmoji(gameData[player].em) .setDisabled() msg.edit({ embeds: [Embed], components: [ { type: 1, components: [ A1, A2, A3 ] }, { type: 1, components: [ B1, B2, B3 ] }, { type: 1, components: [ C1, C2, C3 ] }, ] }) } } else if (btn.customId == c33 && gameData[player].member.id === btn.user.id) { btn.deferUpdate() if (btn.label == this.oEmoji || btn.label == this.xEmoji) { // User tries to place at an already claimed spot btn.reply('That spot is already taken.') } else { try { c3 = gameData[player].em if (a1 == this.xEmoji && b1 == this.xEmoji && c1 == this.xEmoji || a1 == this.oEmoji && b1 == this.oEmoji && c1 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a2 == this.xEmoji && b2 == this.xEmoji && c2 == this.xEmoji || a2 == this.oEmoji && b2 == this.oEmoji && c2 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a3 == this.xEmoji && b3 == this.xEmoji && c3 == this.xEmoji || a3 == this.oEmoji && b3 == this.oEmoji && c3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`) gameCollector.stop() midDuel.delete(author) midDuel.delete(member.id) } else if (a1 == this.xEmoji && a2 == this.xEmoji && a3 == this.xEmoji || a1 == this.oEmoji && a2 == this.oEmoji && a3 == this.oEmoji) { this.message.channel.send(`${gameData[player].member} wins!`)