47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
const { v4: uuidv4 } = require('uuid');
|
|
const axios = require('axios');
|
|
const config = require('../../../../config.json');
|
|
const logger = require('../../../handlers/logger');
|
|
|
|
const { guilds, users } = require('../../../helpers/database/models');
|
|
const creditNoun = require('../../../helpers/creditNoun');
|
|
|
|
module.exports = async (interaction) => {
|
|
const name = interaction.options.getString('name');
|
|
|
|
const { member } = interaction;
|
|
const { guild } = member;
|
|
|
|
const guildDB = await guilds.findOne({ guildId: guild.id });
|
|
const userDB = await users.findOne({ userId: member.id, guildId: guild.id });
|
|
|
|
guild.roles
|
|
.create({
|
|
data: {
|
|
name,
|
|
color: 'BLUE',
|
|
},
|
|
reason: `${interaction.member.id} bought from shop`,
|
|
})
|
|
.then(async (role) => {
|
|
console.log(role);
|
|
userDB.credits -= guildDB.shop.roles.pricePerHour;
|
|
await userDB.save().then(async () => {
|
|
const embed = {
|
|
title: ':shopping_cart: Shop - Roles',
|
|
description: `You have bought ${role.name} for ${guildDB.shop.roles.pricePerHour} per hour.`,
|
|
color: config.colors.error,
|
|
fields: [
|
|
{ name: 'Your balance', value: `${creditNoun(userDB.credits)}` },
|
|
],
|
|
timestamp: new Date(),
|
|
footer: { iconURL: config.footer.icon, text: config.footer.text },
|
|
};
|
|
return interaction.editReply({
|
|
embeds: [embed],
|
|
ephemeral: true,
|
|
});
|
|
});
|
|
})
|
|
.catch(console.error);
|
|
};
|