Files

95 lines
3.7 KiB
JavaScript

const { MessageEmbed } = require("discord.js");
const User = require("../../../model/user.js")
const functions = require("../../../structs/functions.js");
module.exports = {
commandInfo: {
name: "create",
description: "Creates an account on Reload Backend.",
options: [
{
name: "email",
description: "Your email.",
required: true,
type: 3
},
{
name: "username",
description: "Your username.",
required: true,
type: 3
},
{
name: "password",
description: "Your password.",
required: true,
type: 3
}
],
},
execute: async (interaction) => {
await interaction.deferReply({ ephemeral: true });
const { options } = interaction;
const discordId = interaction.user.id;
const email = options.get("email").value;
const username = options.get("username").value;
const password = options.get("password").value;
const plainEmail = options.get('email').value;
const plainUsername = options.get('username').value;
const existingEmail = await User.findOne({ email: plainEmail });
const existingUser = await User.findOne({ username: plainUsername });
const emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!emailFilter.test(email)) {
return interaction.editReply({ content: "You did not provide a valid email address!", ephemeral: true });
}
if (existingEmail) {
return interaction.editReply({ content: "Email is already in use, please choose another one.", ephemeral: true });
}
if (existingUser) {
return interaction.editReply({ content: "Username already exists. Please choose a different one.", ephemeral: true });
}
if (username.length >= 25) {
return interaction.editReply({ content: "Your username must be less than 25 characters long.", ephemeral: true });
}
if (username.length < 3) {
return interaction.editReply({ content: "Your username must be at least 3 characters long.", ephemeral: true });
}
if (password.length >= 128) {
return interaction.editReply({ content: "Your password must be less than 128 characters long.", ephemeral: true });
}
if (password.length < 4) {
return interaction.editReply({ content: "Your password must be at least 4 characters long.", ephemeral: true });
}
await functions.registerUser(discordId, username, email, password).then(resp => {
let embed = new MessageEmbed()
.setColor(resp.status >= 400 ? "#ff0000" : "#56ff00")
.setThumbnail(interaction.user.avatarURL({ format: 'png', dynamic: true, size: 256 }))
.addFields({
name: "Message",
value: "Successfully created an account.",
}, {
name: "Username",
value: username,
}, {
name: "Discord Tag",
value: interaction.user.tag,
})
.setTimestamp()
.setFooter({
text: "Reload Backend",
iconURL: "https://i.imgur.com/2RImwlb.png"
})
if (resp.status >= 400) return interaction.editReply({ embeds: [embed], ephemeral: true });
(interaction.channel ? interaction.channel : interaction.user).send({ embeds: [embed] });
interaction.editReply({ content: "You successfully created an account!", ephemeral: true });
});
}
}