64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
const { v4: uuidv4 } = require('uuid');
|
|
const axios = require('axios');
|
|
const config = require('../../../../../config.json');
|
|
const logger = require('../../../../handlers/logger');
|
|
|
|
const {
|
|
users,
|
|
shopRoles,
|
|
guilds,
|
|
} = require('../../../../helpers/database/models');
|
|
const creditNoun = require('../../../../helpers/creditNoun');
|
|
|
|
module.exports = async (interaction) => {
|
|
const { member } = interaction;
|
|
const { guild } = member;
|
|
|
|
const role = await interaction.options.getRole('role');
|
|
|
|
const roleExist = await shopRoles.find({
|
|
guildId: guild.id,
|
|
userId: member.id,
|
|
roleId: role.id,
|
|
});
|
|
|
|
if (roleExist) {
|
|
await member.roles.remove(role.id);
|
|
|
|
await interaction.guild.roles
|
|
.delete(role.id, `${interaction.member.id} canceled from shop`)
|
|
.then(async () => {
|
|
// Get guild object
|
|
const guildDB = await guilds.findOne({
|
|
guildId: interaction.member.guild.id,
|
|
});
|
|
|
|
const userDB = await users.findOne({
|
|
userId: member.id,
|
|
guildId: guild.id,
|
|
});
|
|
|
|
await shopRoles.deleteOne({
|
|
roleId: role.id,
|
|
userId: member.id,
|
|
guildId: guild.id,
|
|
});
|
|
|
|
const embed = {
|
|
title: ':shopping_cart: Shop - Roles [Buy]',
|
|
description: `You have canceled ${role.name}.`,
|
|
color: config.colors.success,
|
|
fields: [
|
|
{ name: 'Your balance', value: `${creditNoun(userDB.credits)}` },
|
|
],
|
|
timestamp: new Date(),
|
|
footer: { iconURL: config.footer.icon, text: config.footer.text },
|
|
};
|
|
return await interaction.editReply({
|
|
embeds: [embed],
|
|
ephemeral: true,
|
|
});
|
|
})
|
|
.catch(console.error);
|
|
}
|
|
};
|