🔖 Version 3.1.0 released

This commit is contained in:
Axel Olausson Holtenäs 2022-03-09 21:36:48 +01:00
parent d8989c443a
commit 9f65c0aa66
No known key found for this signature in database
GPG key ID: E3AE7E194AE017ED
4 changed files with 82 additions and 71 deletions

View file

@ -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": {

View file

@ -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));
}
.findOne(
{ guildId: guild.id },
{ new: true, upsert: true },
);
},
};

View file

@ -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);
// else if (interaction.isButton()) {
// const button = client.buttons.get(interaction.customId);
try {
if (!menu) {
await interaction.deferReply();
await interaction.editReply({ content: `Menu not exist: ${interaction.customId}` });
}
// try {
// if (!button) {
// await interaction.deferReply();
// await interaction.editReply({ content: `Button not exist: ${interaction.customId}` });
// }
await menu.execute(interaction);
await logger.debug(`Menu pressed: ${interaction.customId}`);
} catch (err) {
await logger.error(err);
}
}
// 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);
// }
// }
},
};

View file

@ -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`,
);