From a06d532ff15c1eb618d609afe61a4240dff1c3f8 Mon Sep 17 00:00:00 2001 From: ChrisChrome Date: Mon, 20 Jan 2025 19:36:45 -0700 Subject: [PATCH] Add force link/unlink commands --- commands/forcelink.js | 24 ++++++++++-------------- commands/forceunlink.js | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 commands/forceunlink.js diff --git a/commands/forcelink.js b/commands/forcelink.js index 1bd820d..cb2db8f 100644 --- a/commands/forcelink.js +++ b/commands/forcelink.js @@ -7,24 +7,20 @@ const execute = async (interaction) => { if (!discordID) return interaction.reply({ content: "You must provide a Discord User", ephemeral: true }); if (!robloxId) return interaction.reply({ content: "You must provide a Roblox ID", ephemeral: true }); try { - const connection = await pool.getConnection(); - const [rows] = await connection.query("SELECT * FROM users WHERE robloxId = ?", [robloxId]); + const [user] = await pool.query('SELECT * FROM users WHERE discordId = ?', [discordID]); + if (user) return interaction.reply({ content: "This user is already linked to an account. Unlink before proceeding.", ephemeral: true }); - if (rows.length === 0) { - await connection.query("INSERT INTO users (robloxId, discordId) VALUES (?, ?)", [robloxId, discordID]); + const [row] = await pool.query('SELECT * FROM users WHERE robloxId = ?', [robloxId]); + if (!row) { + await pool.query('INSERT INTO users (robloxId, discordId) VALUES (?, ?)', [robloxId, discordID]); + return interaction.reply({ content: "Successfully linked accounts", ephemeral: true }); + } else if (row.discordId && row.discordId !== discordID) { + return interaction.reply({ content: "This Roblox ID is already linked to another account", ephemeral: true }); } else { - const user = rows[0]; - if (!user.discordId) { - await connection.query("UPDATE users SET discordId = ? WHERE robloxId = ?", [discordID, robloxId]); - } else if (user.discordId !== discordID) { - await connection.query("UPDATE users SET discordId = NULL WHERE discordId = ?", [discordID]); - await connection.query("UPDATE users SET discordId = ? WHERE robloxId = ?", [discordID, robloxId]); - } + await pool.query('UPDATE users SET discordId = ? WHERE robloxId = ?', [discordID, robloxId]); } - - connection.release(); } catch (error) { - console.error(error); + log.error(error); return interaction.reply({ content: "An error occurred while linking your account", ephemeral: true }); } diff --git a/commands/forceunlink.js b/commands/forceunlink.js new file mode 100644 index 0000000..1569eee --- /dev/null +++ b/commands/forceunlink.js @@ -0,0 +1,14 @@ +const client = global.discord_client +const pool = global.db_pool; + +const execute = async (interaction) => { + const robloxId = interaction.options.getNumber("roblox-id"); + const discordID = interaction.options.getUser("discord-id")?.id; + if (discordID) await pool.query("UPDATE users SET discordId = NULL WHERE discordId = ?", [discordID]); + if (robloxId) await pool.query("UPDATE users SET discordId = NULL WHERE robloxId = ?", [robloxId]); + return interaction.reply({ content: "Successfully unlinked accounts (If either were linked)", ephemeral: true }); +} + +const noop = () => { }; + +module.exports = { execute: noop } \ No newline at end of file