NotParcel/commands/forcelink.js

31 lines
1.7 KiB
JavaScript

const client = global.discord_client
const pool = global.db_pool;
const execute = async (interaction) => {
if (!interaction.guildId) return interaction.reply({ content: "This command can only be used in a server", ephemeral: true });
const robloxId = interaction.options.getNumber("roblox-id");
const discordID = interaction.options.getUser("discord-id");
if (!discordID?.id) return interaction.reply({ content: "You must provide a valid Discord User", ephemeral: true });
if (!robloxId) return interaction.reply({ content: "You must provide a Roblox ID", ephemeral: true });
try {
const [user] = await pool.query('SELECT * FROM users WHERE discordId = ?', [discordID.id]);
if (user) return interaction.reply({ content: "This user is already linked to an account. Unlink before proceeding.", ephemeral: true });
const [row] = await pool.query('SELECT * FROM users WHERE robloxId = ?', [robloxId]);
if (!row) {
await pool.query('INSERT INTO users (robloxId, discordId, discordDisplayName) VALUES (?, ?, ?)', [robloxId, discordID.id, discordID.displayName]);
return interaction.reply({ content: "Successfully linked accounts", ephemeral: true });
} else if (row.discordId && row.discordId !== discordID.id) {
return interaction.reply({ content: "This Roblox ID is already linked to another account", ephemeral: true });
} else {
await pool.query('UPDATE users SET discordId = ?, discordDisplayName = ? WHERE robloxId = ?', [discordID.id, discordID.displayName, robloxId]);
}
} catch (error) {
log.error(error);
return interaction.reply({ content: "An error occurred while linking your account", ephemeral: true });
}
return interaction.reply({ content: "Successfully linked your account", ephemeral: true });
}
module.exports = { execute }