45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
const config = require('../../config.json');
|
|
const logger = require('../handlers/logger');
|
|
|
|
const guilds = require('../helpers/database/models/guildSchema');
|
|
const credits = require('../helpers/database/models/creditSchema');
|
|
|
|
const talkedRecently = new Set();
|
|
|
|
module.exports = {
|
|
name: 'messageCreate',
|
|
async execute(message) {
|
|
const guild = await guilds.findOne({ guildId: message.guild.id });
|
|
|
|
if (message.author.bot) return;
|
|
if (message.content.length < guild.credits.minimumLength) return;
|
|
if (config.credits.excludedChannels.includes(message.channel.id)) return;
|
|
if (!talkedRecently.has(message.author.id)) {
|
|
await credits
|
|
.findOneAndUpdate(
|
|
{ userId: message.author.id, guildId: message.guild.id },
|
|
{ $inc: { balance: guild.credits.rate } },
|
|
{ new: true, upsert: true },
|
|
)
|
|
.then(async () => logger.debug(`Credits added to user: ${message.author.id}`))
|
|
.catch(async (err) => {
|
|
await logger.error(err);
|
|
});
|
|
talkedRecently.add(message.author.id);
|
|
setTimeout(() => {
|
|
logger.debug(
|
|
`User: ${message.author.id} has not talked within last ${
|
|
guild.credits.timeout / 1000
|
|
} seconds, credits can be given`,
|
|
);
|
|
talkedRecently.delete(message.author.id);
|
|
}, guild.credits.timeout);
|
|
} else {
|
|
logger.debug(
|
|
`User: ${message.author.id} has talked within last ${
|
|
guild.credits.timeout / 1000
|
|
} seconds, no credits given`,
|
|
);
|
|
}
|
|
},
|
|
};
|