🔖 Version 3.1.0 released
This commit is contained in:
parent
d8989c443a
commit
9f65c0aa66
4 changed files with 82 additions and 71 deletions
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "xyter",
|
||||
"version": "3.0.0",
|
||||
"version": "3.1.0",
|
||||
"description": "Earn credits while chatting! And more",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
|
|
|
@ -1,20 +1,12 @@
|
|||
const logger = require('../handlers/logger');
|
||||
|
||||
const guilds = require('../helpers/database/models/guildSchema');
|
||||
|
||||
module.exports = {
|
||||
name: 'guildCreate',
|
||||
async execute(guild) {
|
||||
const guildExist = await guilds
|
||||
.findOne({ guildId: guild.id })
|
||||
.then(logger.debug(`Found guild: ${guild.id}`))
|
||||
.catch(logger.error);
|
||||
|
||||
if (!guildExist) {
|
||||
await guilds
|
||||
.create({ guildId: guild.id })
|
||||
.then(() => logger.debug(`Create guild: ${guild.id} was success`))
|
||||
.catch((e) => logger.error(e));
|
||||
}
|
||||
await guilds
|
||||
.findOne(
|
||||
{ guildId: guild.id },
|
||||
{ new: true, upsert: true },
|
||||
);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,29 +1,30 @@
|
|||
const config = require('../../config.json');
|
||||
const logger = require('../handlers/logger');
|
||||
|
||||
const guilds = require('../helpers/database/models/guildSchema');
|
||||
const { guilds } = require('../helpers/database/models');
|
||||
|
||||
module.exports = {
|
||||
name: 'interactionCreate',
|
||||
async execute(interaction) {
|
||||
const { member, client } = interaction;
|
||||
|
||||
if (interaction.isCommand()) {
|
||||
const command = interaction.client.commands.get(interaction.commandName);
|
||||
const command = client.commands.get(interaction.commandName);
|
||||
|
||||
if (!command) return;
|
||||
|
||||
const guildExist = await guilds.findOne({ guildId: interaction.member.guild.id });
|
||||
|
||||
if (!guildExist) {
|
||||
await guilds.create({ guildId: interaction.member.guild.id });
|
||||
}
|
||||
await guilds.findOne(
|
||||
{ guildId: member.guild.id },
|
||||
{ new: true, upsert: true },
|
||||
);
|
||||
|
||||
try {
|
||||
await interaction.deferReply({
|
||||
embeds: [
|
||||
{
|
||||
author: {
|
||||
name: interaction.client.user.username,
|
||||
icon_url: interaction.client.user.displayAvatarURL(),
|
||||
name: client.user.username,
|
||||
icon_url: client.user.displayAvatarURL(),
|
||||
url: 'https://bot.zyner.org/',
|
||||
},
|
||||
title: 'Check',
|
||||
|
@ -42,8 +43,8 @@ module.exports = {
|
|||
embeds: [
|
||||
{
|
||||
author: {
|
||||
name: interaction.client.user.username,
|
||||
icon_url: interaction.client.user.displayAvatarURL(),
|
||||
name: client.user.username,
|
||||
icon_url: client.user.displayAvatarURL(),
|
||||
url: 'https://bot.zyner.org/',
|
||||
},
|
||||
title: 'Error',
|
||||
|
@ -55,34 +56,36 @@ module.exports = {
|
|||
ephemeral: true,
|
||||
});
|
||||
}
|
||||
} else if (interaction.isButton()) {
|
||||
const button = interaction.client.buttons.get(interaction.customId);
|
||||
|
||||
try {
|
||||
if (!button) {
|
||||
await interaction.deferReply();
|
||||
await interaction.editReply({ content: `Button not exist: ${interaction.customId}` });
|
||||
}
|
||||
|
||||
await button.execute(interaction);
|
||||
await logger.debug(`Button pressed: ${interaction.customId}`);
|
||||
} catch (err) {
|
||||
await logger.error(err);
|
||||
}
|
||||
} else if (interaction.isSelectMenu()) {
|
||||
const menu = interaction.client.menus.get(interaction.customId);
|
||||
|
||||
try {
|
||||
if (!menu) {
|
||||
await interaction.deferReply();
|
||||
await interaction.editReply({ content: `Menu not exist: ${interaction.customId}` });
|
||||
}
|
||||
|
||||
await menu.execute(interaction);
|
||||
await logger.debug(`Menu pressed: ${interaction.customId}`);
|
||||
} catch (err) {
|
||||
await logger.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
// else if (interaction.isButton()) {
|
||||
// const button = client.buttons.get(interaction.customId);
|
||||
|
||||
// try {
|
||||
// if (!button) {
|
||||
// await interaction.deferReply();
|
||||
// await interaction.editReply({ content: `Button not exist: ${interaction.customId}` });
|
||||
// }
|
||||
|
||||
// await button.execute(interaction);
|
||||
// await logger.debug(`Button pressed: ${interaction.customId}`);
|
||||
// } catch (err) {
|
||||
// await logger.error(err);
|
||||
// }
|
||||
// } else if (interaction.isSelectMenu()) {
|
||||
// const menu = client.menus.get(interaction.customId);
|
||||
|
||||
// try {
|
||||
// if (!menu) {
|
||||
// await interaction.deferReply();
|
||||
// await interaction.editReply({ content: `Menu not exist: ${interaction.customId}` });
|
||||
// }
|
||||
|
||||
// await menu.execute(interaction);
|
||||
// await logger.debug(`Menu pressed: ${interaction.customId}`);
|
||||
// } catch (err) {
|
||||
// await logger.error(err);
|
||||
// }
|
||||
// }
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,27 +1,35 @@
|
|||
const config = require('../../config.json');
|
||||
const logger = require('../handlers/logger');
|
||||
|
||||
const users = require('../helpers/database/models/userSchema');
|
||||
const guilds = require('../helpers/database/models/guildSchema');
|
||||
const experiences = require('../helpers/database/models/experienceSchema');
|
||||
const credits = require('../helpers/database/models/creditSchema');
|
||||
const timeouts = require('../helpers/database/models/timeoutSchema');
|
||||
|
||||
const talkedRecently = new Set();
|
||||
const {
|
||||
users, guilds, experiences, credits, timeouts,
|
||||
} = require('../helpers/database/models');
|
||||
|
||||
module.exports = {
|
||||
name: 'messageCreate',
|
||||
async execute(message) {
|
||||
// Get guild object
|
||||
|
||||
const guild = await guilds.findOne({ guildId: message.guild.id });
|
||||
|
||||
// Stop if message author is bot
|
||||
|
||||
if (message.author.bot) return;
|
||||
|
||||
const userExist = await users.findOne({ userId: message.author.id });
|
||||
// Create user if not already created
|
||||
|
||||
if (!userExist) { await users.create({ userId: message.author.id }); }
|
||||
await users.findOne(
|
||||
{ userId: message.author.id },
|
||||
{ new: true, upsert: true },
|
||||
);
|
||||
|
||||
// Stop if message content is shorter than guild configured minimum length
|
||||
|
||||
if (message.content.length < guild.credits.minimumLength) return;
|
||||
if (config.credits.excludedChannels.includes(message.channel.id)) return;
|
||||
|
||||
// Needs to be updated for multi-guild to function properly
|
||||
// if (config.credits.excludedChannels.includes(message.channel.id)) return;
|
||||
|
||||
// Check if user has a timeout
|
||||
|
||||
const isTimeout = await timeouts.findOne(
|
||||
{
|
||||
|
@ -31,30 +39,37 @@ module.exports = {
|
|||
},
|
||||
);
|
||||
|
||||
// If user is not on timeout
|
||||
|
||||
if (!isTimeout) {
|
||||
// Add credits to user
|
||||
|
||||
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}`))
|
||||
.then(async () => logger.debug(`Guild: ${message.guild.id} Credits added to user: ${message.author.id}`))
|
||||
.catch(async (err) => {
|
||||
await logger.error(err);
|
||||
});
|
||||
|
||||
// Experience System
|
||||
// Add points to user
|
||||
|
||||
await experiences
|
||||
.findOneAndUpdate(
|
||||
{ userId: message.author.id, guildId: message.guild.id },
|
||||
{ $inc: { points: guild.points.rate } },
|
||||
{ new: true, upsert: true },
|
||||
)
|
||||
.then(async () => logger.debug(`Credits added to user: ${message.author.id}`))
|
||||
.then(async () => logger.debug(`Guild: ${message.guild.id} Points added to user: ${message.author.id}`))
|
||||
.catch(async (err) => {
|
||||
await logger.error(err);
|
||||
});
|
||||
|
||||
// Create a timeout for the user
|
||||
|
||||
await timeouts.create(
|
||||
{
|
||||
guildId: message.guild.id,
|
||||
|
@ -63,23 +78,24 @@ module.exports = {
|
|||
},
|
||||
);
|
||||
|
||||
// talkedRecently.add(message.author.id);
|
||||
setTimeout(async () => {
|
||||
await logger.debug(
|
||||
`User: ${message.author.id} has not talked within last ${
|
||||
`Guild: ${message.guild.id} User: ${message.author.id} has not talked within last ${
|
||||
guild.credits.timeout / 1000
|
||||
} seconds, credits can be given`,
|
||||
);
|
||||
|
||||
// When timeout is out, remove it from the database
|
||||
|
||||
await timeouts.deleteOne({
|
||||
guildId: message.guild.id,
|
||||
userId: message.author.id,
|
||||
timeoutId: 1,
|
||||
});
|
||||
// talkedRecently.delete(message.author.id);
|
||||
}, guild.credits.timeout);
|
||||
} else {
|
||||
await logger.debug(
|
||||
`User: ${message.author.id} has talked within last ${
|
||||
`Guild: ${message.guild.id} User: ${message.author.id} has talked within last ${
|
||||
guild.credits.timeout / 1000
|
||||
} seconds, no credits given`,
|
||||
);
|
||||
|
|
Loading…
Add table
Reference in a new issue