72 lines
2.7 KiB
JavaScript
72 lines
2.7 KiB
JavaScript
const { Permissions } = require('discord.js');
|
|
|
|
const credits = require(`${__basedir}/helpers/database/models/creditSchema`);
|
|
const logger = require(`${__basedir}/handlers/logger`);
|
|
const saveUser = require(`${__basedir}/helpers/saveUser`);
|
|
const creditNoun = require(`${__basedir}/helpers/creditNoun`);
|
|
|
|
module.exports = async (interaction) => {
|
|
try {
|
|
if (!interaction.member.permissions.has(Permissions.FLAGS.MANAGE_GUILD)) {
|
|
const embed = {
|
|
title: 'Transfer failed',
|
|
description: 'You need to have permission to manage this guild (MANAGE_GUILD)',
|
|
};
|
|
return await interaction.editReply({ embeds: [embed], ephemeral: true });
|
|
}
|
|
|
|
const from = await interaction.options.getUser('from');
|
|
const to = await interaction.options.getUser('to');
|
|
const amount = await interaction.options.getInteger('amount');
|
|
const data = await credits.findOne({ userId: from.id });
|
|
|
|
if (amount <= 0) {
|
|
const embed = {
|
|
title: 'Transfer failed',
|
|
description: "You can't transfer zero or below.",
|
|
color: 0xbb2124,
|
|
timestamp: new Date(),
|
|
footer: { iconURL: __config.footer.icon, text: __config.footer.text },
|
|
};
|
|
return await interaction.editReply({ embeds: [embed], ephemeral: true });
|
|
} else {
|
|
if (data.balance < amount) {
|
|
const embed = {
|
|
title: 'Transfer',
|
|
description: `${from.username} has insufficient credits. ${from.username} balance is ${data.balance}`,
|
|
color: 0xbb2124,
|
|
timestamp: new Date(),
|
|
footer: { iconURL: __config.footer.icon, text: __config.footer.text },
|
|
};
|
|
return await interaction.editReply({ embeds: [embed], ephemeral: true });
|
|
} else {
|
|
const fromUser = await credits.findOne({ userId: from.id });
|
|
const toUser = await credits.findOne({ userId: to.id });
|
|
|
|
console.log(fromUser, toUser, amount);
|
|
|
|
fromUser.balance -= amount;
|
|
toUser.balance += amount;
|
|
|
|
await saveUser(fromUser, toUser);
|
|
|
|
const embed = {
|
|
title: 'Transfer',
|
|
description: `You sent ${creditNoun(amount)} from ${from} to ${to}.`,
|
|
color: 0x22bb33,
|
|
fields: [
|
|
{ name: `${from.username} Balance`, value: `${fromUser.balance}`, inline: true },
|
|
{ name: `${to.username} Balance`, value: `${toUser.balance}`, inline: true },
|
|
],
|
|
timestamp: new Date(),
|
|
footer: { iconURL: __config.footer.icon, text: __config.footer.text },
|
|
};
|
|
|
|
await logger.debug(`Gift sent from: ${interaction.user.username} to: ${to.username}`);
|
|
return await interaction.editReply({ embeds: [embed], ephemeral: true });
|
|
}
|
|
}
|
|
} catch {
|
|
async (err) => await logger.error(err);
|
|
}
|
|
};
|