🗃️ /credits gift is now on mongodb
This commit is contained in:
parent
d492f0d506
commit
73f9f91a8b
5 changed files with 57 additions and 11 deletions
|
@ -1,9 +1,11 @@
|
|||
const db = require('quick.db');
|
||||
const credits = require('../../../helpers/database/models/creditSchema');
|
||||
const debug = require('../../../handlers/debug');
|
||||
const saveUser = require('../../../helpers/saveUser');
|
||||
|
||||
const credits = new db.table('credits');
|
||||
module.exports = async (interaction) => {
|
||||
const user = await interaction.options.getUser('user');
|
||||
const amount = await interaction.options.getInteger('amount');
|
||||
const data = await credits.findOne({ userId: interaction.user.id });
|
||||
|
||||
if (user.id === interaction.user.id) {
|
||||
const embed = {
|
||||
|
@ -24,30 +26,32 @@ module.exports = async (interaction) => {
|
|||
};
|
||||
return await interaction.editReply({ embeds: [embed], ephemeral: true });
|
||||
} else {
|
||||
if ((await credits.get(interaction.user.id)) < amount) {
|
||||
if (data.balance < amount) {
|
||||
const embed = {
|
||||
title: 'Gift',
|
||||
description: `You have insufficient credits. Your balance is ${credits.get(
|
||||
interaction.user.id
|
||||
)}`,
|
||||
description: `You have insufficient credits. Your balance is ${data.balance}`,
|
||||
color: 0xbb2124,
|
||||
timestamp: new Date(),
|
||||
footer: { iconURL: process.env.FOOTER_ICON, text: process.env.FOOTER_TEXT },
|
||||
};
|
||||
return await interaction.editReply({ embeds: [embed], ephemeral: true });
|
||||
} else {
|
||||
await credits.subtract(interaction.user.id, amount);
|
||||
await credits.add(user.id, amount);
|
||||
const fromUser = await credits.findOne({ userId: interaction.user.id });
|
||||
const toUser = await credits.findOne({ userId: user.id });
|
||||
|
||||
fromUser.balance -= amount;
|
||||
toUser.balance += amount;
|
||||
|
||||
const embed = {
|
||||
title: 'Gift',
|
||||
description: `You sent ${
|
||||
amount <= 1 ? `${amount} credit` : `${amount} credits`
|
||||
} to ${user}. Your new balance is ${await credits.get(interaction.user.id)}.`,
|
||||
} to ${user}. Your new balance is ${fromUser.balance}.`,
|
||||
color: 0x22bb33,
|
||||
timestamp: new Date(),
|
||||
footer: { iconURL: process.env.FOOTER_ICON, text: process.env.FOOTER_TEXT },
|
||||
};
|
||||
|
||||
return await interaction.editReply({ embeds: [embed], ephemeral: true });
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,11 @@ module.exports = async (interaction) => {
|
|||
return await interaction.editReply({ embeds: [embed], ephemeral: true });
|
||||
} else {
|
||||
await credits
|
||||
.findOneAndUpdate({ userId: user.id }, { $inc: { balance: amount } }, { new: true })
|
||||
.findOneAndUpdate(
|
||||
{ userId: user.id },
|
||||
{ $inc: { balance: amount } },
|
||||
{ new: true, upsert: true }
|
||||
)
|
||||
.then(async () => {
|
||||
const embed = {
|
||||
title: 'Give',
|
||||
|
|
29
src/helpers/saveUser.js
Normal file
29
src/helpers/saveUser.js
Normal file
|
@ -0,0 +1,29 @@
|
|||
const sleep = require('./sleep');
|
||||
module.exports = async function saveUser(data, data2) {
|
||||
process.nextTick(
|
||||
async () => {
|
||||
await sleep(Math.floor(Math.random() * 10 + 1) * 100); // 100 - 1000 random Number generator
|
||||
data.save((_) =>
|
||||
_
|
||||
? console.log(
|
||||
`ERROR Occured while saving data (saveUser) \n${'='.repeat(50)}\n${
|
||||
_ + '\n' + '='.repeat(50)
|
||||
}`
|
||||
)
|
||||
: 'No Error'
|
||||
);
|
||||
if (data2)
|
||||
data2.save((_) =>
|
||||
_
|
||||
? console.error(
|
||||
`ERROR Occured while saving data (saveUser) \n${'='.repeat(50)}\n${
|
||||
_ + '\n' + '='.repeat(50)
|
||||
}`
|
||||
)
|
||||
: 'No Error'
|
||||
);
|
||||
},
|
||||
data,
|
||||
data2
|
||||
);
|
||||
};
|
5
src/helpers/sleep.js
Normal file
5
src/helpers/sleep.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
module.exports = function sleep(milliseconds) {
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(resolve, milliseconds);
|
||||
});
|
||||
};
|
|
@ -46,7 +46,11 @@ client.on('messageCreate', async (message) => {
|
|||
if (message.author.bot) return;
|
||||
|
||||
credits
|
||||
.findOneAndUpdate({ userId: message.author.id }, { $inc: { balance: 1 } }, { new: true })
|
||||
.findOneAndUpdate(
|
||||
{ userId: message.author.id },
|
||||
{ $inc: { balance: 1 } },
|
||||
{ new: true, upsert: true }
|
||||
)
|
||||
.then(async (data) => console.log(data))
|
||||
.catch(async (err) => {
|
||||
console.log(err);
|
||||
|
|
Loading…
Add table
Reference in a new issue