diff --git a/base/JaBa.js b/base/JaBa.js index ef66ff6f..fbd9ea97 100644 --- a/base/JaBa.js +++ b/base/JaBa.js @@ -250,7 +250,6 @@ class JaBa extends Client { } else { userData = new this.usersData({ id: userID }); - userData.markModified(); await userData.save(); this.databaseCache.users.set(userID, userData); @@ -275,7 +274,6 @@ class JaBa extends Client { } else { memberData = new this.membersData({ id: memberID, guildID: guildId }); - memberData.markModified(); await memberData.save(); const guildData = await this.findOrCreateGuild(guildId); @@ -283,7 +281,6 @@ class JaBa extends Client { if (guildData) { guildData.members.push(memberData._id); - guildData.markModified("members"); await guildData.save(); } @@ -308,7 +305,6 @@ class JaBa extends Client { } else { guildData = new this.guildsData({ id: guildId }); - guildData.markModified(); await guildData.save(); this.databaseCache.guilds.set(guildId, guildData); diff --git a/commands/!DISABLED/importmee6.js b/commands/!DISABLED/importmee6.js index ea27c57f..4c19b79b 100644 --- a/commands/!DISABLED/importmee6.js +++ b/commands/!DISABLED/importmee6.js @@ -39,7 +39,7 @@ class ImportMee6 extends BaseCommand { data.memberData.level = level; - data.memberData.markModified(); + data.memberData.markModified("level"); await data.memberData.save(); interaction.editReply({ diff --git a/commands/!DISABLED/memes.js b/commands/!DISABLED/memes.js index b9e1f93a..25d3d536 100644 --- a/commands/!DISABLED/memes.js +++ b/commands/!DISABLED/memes.js @@ -26,43 +26,14 @@ class Memes extends BaseCommand { * * @param {import("../../base/JaBa")} client */ - async onLoad() { - //... - } - /** - * - * @param {import("../../base/JaBa")} client - * @param {import("discord.js").ChatInputCommandInteraction} interaction - * @param {Object} data - */ - async execute(client, interaction) { - await interaction.deferReply(); + async onLoad(client) { + client.on("interactionCreate", async interaction => { + if (!interaction.isStringSelectMenu()) return; - const tags = ["funny", "memes", "dankmemes", "me_irl", "wholesomememes"].map(tag => - JSON.parse( - JSON.stringify({ - label: tag, - value: tag, - }), - ), - ); + if (interaction.customId === "memes_select") { + interaction.deferUpdate(); - const row = new ActionRowBuilder().addComponents(new StringSelectMenuBuilder().setCustomId("memes_select").setPlaceholder(client.translate("common:NOTHING_SELECTED")).addOptions(tags)); - - const msg = await interaction.editReply({ - content: interaction.translate("common:AVAILABLE_OPTIONS"), - fetchReply: true, - components: [row], - }); - - const filter = i => i.user.id === interaction.user.id; - const collector = msg.createMessageComponentCollector({ filter, idle: 2 * 60 * 1000 }); - - collector.on("collect", async i => { - if (i.isStringSelectMenu() && i.customId === "memes_select") { - i.deferUpdate(); - - const tag = i.values[0]; + const tag = interaction.values[0]; const res = await fetch(`https://meme-api.com/gimme/${tag}`).then(response => response.json()); const embed = new EmbedBuilder() @@ -78,11 +49,30 @@ class Memes extends BaseCommand { }); } }); + } + /** + * + * @param {import("../../base/JaBa")} client + * @param {import("discord.js").ChatInputCommandInteraction} interaction + * @param {Object} data + */ + async execute(client, interaction) { + await interaction.deferReply({ ephemeral: true }); - collector.on("end", () => { - return interaction.editReply({ - components: [], - }); + const tags = ["funny", "memes", "dankmemes", "me_irl", "wholesomememes"].map(tag => + JSON.parse( + JSON.stringify({ + label: tag, + value: tag, + }), + ), + ); + + const row = new ActionRowBuilder().addComponents(new StringSelectMenuBuilder().setCustomId("memes_select").setPlaceholder(client.translate("common:NOTHING_SELECTED")).addOptions(tags)); + + await interaction.editReply({ + content: interaction.translate("common:AVAILABLE_OPTIONS"), + components: [row], }); } } diff --git a/commands/Administration/autorole.js b/commands/Administration/autorole.js index f14cac61..11ea7152 100644 --- a/commands/Administration/autorole.js +++ b/commands/Administration/autorole.js @@ -55,33 +55,28 @@ class Autorole extends BaseCommand { * @param {Object} data */ async execute(client, interaction, data) { - const state = interaction.options.getBoolean("state"); + const state = interaction.options.getBoolean("state"), + role = interaction.options.getRole("role"); - if (state) { - const role = interaction.options.getRole("role"); - if (!role) return interaction.error("administration/autorole:MISSING_ROLE"); - - data.guildData.plugins.autorole = { - enabled: true, - role: role.id, - }; + data.guildData.plugins.autorole = { + enabled: state, + role, + }; + if (state && role) { data.guildData.markModified("plugins.autorole"); await data.guildData.save(); - interaction.success("administration/autorole:SUCCESS_ENABLED", { + interaction.success("administration/autorole:ENABLED", { role: role.toString(), }); } else { - data.guildData.plugins.autorole = { - enabled: false, - role: null, - }; + data.guildData.plugins.autorole.enabled = false; data.guildData.markModified("plugins.autorole"); await data.guildData.save(); - interaction.success("administration/autorole:SUCCESS_DISABLED"); + interaction.success("administration/autorole:DISABLED"); } } } diff --git a/commands/Administration/set.js b/commands/Administration/set.js index 343e48cd..ac8afdae 100644 --- a/commands/Administration/set.js +++ b/commands/Administration/set.js @@ -88,7 +88,7 @@ class Set extends BaseCommand { case "level": { memberData.level = int; - memberData.markModified(); + memberData.markModified("level"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -100,7 +100,7 @@ class Set extends BaseCommand { case "xp": { memberData.exp = int; - memberData.markModified(); + memberData.markModified("exp"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -112,7 +112,7 @@ class Set extends BaseCommand { case "credits": { memberData.money = int; - memberData.markModified(); + memberData.markModified("money"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -124,7 +124,7 @@ class Set extends BaseCommand { case "bank": { memberData.bankSold = int; - memberData.markModified(); + memberData.markModified("bankSold"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { diff --git a/commands/Economy/bank.js b/commands/Economy/bank.js index ce2ba5dd..815b16f3 100644 --- a/commands/Economy/bank.js +++ b/commands/Economy/bank.js @@ -69,7 +69,8 @@ class Bank extends BaseCommand { data.memberData.money -= credits; data.memberData.bankSold += credits; - data.memberData.markModified(); + data.memberData.markModified("money"); + data.memberData.markModified("bankSold"); await data.memberData.save(); const info = { @@ -103,7 +104,8 @@ class Bank extends BaseCommand { data.memberData.money += credits; data.memberData.bankSold -= credits; - data.memberData.markModified(); + data.memberData.markModified("money"); + data.memberData.markModified("bankSold"); await data.memberData.save(); interaction.success("economy/bank:SUCCESS_WD", { diff --git a/commands/Economy/birthdate.js b/commands/Economy/birthdate.js index 343c0fb9..af956487 100644 --- a/commands/Economy/birthdate.js +++ b/commands/Economy/birthdate.js @@ -90,7 +90,7 @@ class Birthdate extends BaseCommand { data.userData.birthdate = d; - data.userData.markModified(); + data.userData.markModified("birthdate"); await data.userData.save(); interaction.success("economy/birthdate:SUCCESS", { diff --git a/commands/Economy/divorce.js b/commands/Economy/divorce.js index 29e2c1fc..3a400f4d 100644 --- a/commands/Economy/divorce.js +++ b/commands/Economy/divorce.js @@ -40,13 +40,13 @@ class Divorce extends BaseCommand { data.userData.lover = null; - data.userData.markModified(); + data.userData.markModified("lover"); await data.userData.save(); const oldLover = await client.findOrCreateUser(user.id); oldLover.lover = null; - oldLover.markModified(); + oldLover.markModified("lover"); await oldLover.save(); interaction.success("economy/divorce:DIVORCED", { diff --git a/commands/Economy/marry.js b/commands/Economy/marry.js index fadee4ea..83632c5e 100644 --- a/commands/Economy/marry.js +++ b/commands/Economy/marry.js @@ -128,8 +128,8 @@ class Marry extends BaseCommand { data.userData.lover = member.id; userData.lover = interaction.member.id; - data.userData.markModified(); - userData.markModified(); + data.userData.markModified("lover"); + userData.markModified("lover"); await data.userData.save(); await userData.save(); @@ -150,7 +150,7 @@ class Marry extends BaseCommand { userData.achievements.married.achieved = true; userData.achievements.married.progress.now = 1; - userData.markModified(); + userData.markModified("achievements"); await userData.save(); } @@ -159,7 +159,7 @@ class Marry extends BaseCommand { data.userData.achievements.married.achieved = true; data.userData.achievements.married.progress.now = 1; - data.userData.markModified(); + data.userData.markModified("achievements"); await data.userData.save(); } diff --git a/commands/Economy/pay.js b/commands/Economy/pay.js index 699176ed..aed3866e 100644 --- a/commands/Economy/pay.js +++ b/commands/Economy/pay.js @@ -73,12 +73,12 @@ class Pay extends BaseCommand { data.memberData.money -= amount; - data.memberData.markModified(); + data.memberData.markModified("money"); await data.memberData.save(); memberData.money += amount; - memberData.markModified(); + memberData.markModified("money"); await memberData.save(); const info1 = { diff --git a/commands/Economy/rep.js b/commands/Economy/rep.js index 7f45ac1e..731a6079 100644 --- a/commands/Economy/rep.js +++ b/commands/Economy/rep.js @@ -62,7 +62,7 @@ class Rep extends BaseCommand { data.userData.cooldowns.rep = toWait; - data.userData.markModified(); + data.userData.markModified("cooldowns"); await data.userData.save(); const userData = await client.findOrCreateUser(user.id); @@ -85,7 +85,7 @@ class Rep extends BaseCommand { } } - userData.markModified(); + userData.markModified("rep"); await userData.save(); interaction.success("economy/rep:SUCCESS", { diff --git a/commands/Economy/rob.js b/commands/Economy/rob.js index c37f55f7..b5fd1bb2 100644 --- a/commands/Economy/rob.js +++ b/commands/Economy/rob.js @@ -88,7 +88,7 @@ class Rob extends BaseCommand { memberData.cooldowns.rob = toWait; - memberData.markModified(); + memberData.markModified("cooldowns"); await memberData.save(); interaction.replyT("economy/rob:ROB_WON_" + randomNum, { @@ -99,8 +99,8 @@ class Rob extends BaseCommand { data.memberData.money += amount; memberData.money -= amount; - data.memberData.markModified(); - memberData.markModified(); + data.memberData.markModified("money"); + memberData.markModified("money"); await data.memberData.save(); await memberData.save(); } else { @@ -116,8 +116,8 @@ class Rob extends BaseCommand { data.memberData.money -= potentiallyLose; memberData.money += won; - data.memberData.markModified(); - memberData.markModified(); + data.memberData.markModified("money"); + memberData.markModified("money"); await data.memberData.save(); await memberData.save(); } diff --git a/commands/Economy/setbio.js b/commands/Economy/setbio.js index ec6143c7..12a93259 100644 --- a/commands/Economy/setbio.js +++ b/commands/Economy/setbio.js @@ -50,7 +50,7 @@ class Setbio extends BaseCommand { data.userData.bio = newBio; - data.userData.markModified(); + data.userData.markModified("bio"); await data.userData.save(); interaction.success("economy/setbio:SUCCESS"); diff --git a/commands/Economy/slots.js b/commands/Economy/slots.js index f412fe9c..4b122339 100644 --- a/commands/Economy/slots.js +++ b/commands/Economy/slots.js @@ -143,11 +143,12 @@ class Slots extends BaseCommand { }); } - data.userData.markModified(); + data.userData.markModified("achievements"); await data.userData.save(); } - data.memberData.markModified(); + data.memberData.markModified("money"); + data.memberData.markModified("transactions"); await data.memberData.save(); return; @@ -193,11 +194,12 @@ class Slots extends BaseCommand { }); } - data.userData.markModified(); + data.userData.markModified("achievements"); await data.userData.save(); } - data.memberData.markModified(); + data.memberData.markModified("money"); + data.memberData.markModified("transactions"); await data.memberData.save(); return; @@ -224,11 +226,12 @@ class Slots extends BaseCommand { if (!data.userData.achievements.slots.achieved) { data.userData.achievements.slots.progress.now = 0; - data.userData.markModified(); + data.userData.markModified("achievements"); await data.userData.save(); } - data.memberData.markModified(); + data.memberData.markModified("money"); + data.memberData.markModified("transactions"); await data.memberData.save(); return; diff --git a/commands/Economy/work.js b/commands/Economy/work.js index 379f5115..4af27219 100644 --- a/commands/Economy/work.js +++ b/commands/Economy/work.js @@ -48,7 +48,8 @@ class Work extends BaseCommand { data.memberData.cooldowns.work = toWait; data.memberData.workStreak = (data.memberData.workStreak || 0) + 1; - data.memberData.markModified(); + data.memberData.markModified("cooldowns"); + data.memberData.markModified("workStreak"); await data.memberData.save(); const embed = new EmbedBuilder() @@ -99,7 +100,7 @@ class Work extends BaseCommand { data.memberData.money += won; - data.memberData.markModified(); + data.memberData.markModified("money"); await data.memberData.save(); const info = { @@ -126,7 +127,7 @@ class Work extends BaseCommand { data.userData.achievements.work.achieved = true; } - data.userData.markModified(); + data.userData.markModified("achievements"); await data.userData.save(); } diff --git a/commands/Fun/tictactoe.js b/commands/Fun/tictactoe.js index c0e5c7b4..af668cfb 100644 --- a/commands/Fun/tictactoe.js +++ b/commands/Fun/tictactoe.js @@ -67,7 +67,8 @@ class TicTacToe extends BaseCommand { memberData.transactions.push(info); - memberData.markModified(); + memberData.markModified("money"); + memberData.markModified("transactions"); await memberData.save(); }); } diff --git a/commands/General/afk.js b/commands/General/afk.js index 121a1d42..493f1613 100644 --- a/commands/General/afk.js +++ b/commands/General/afk.js @@ -51,7 +51,7 @@ class Afk extends BaseCommand { data.userData.afk = reason; - data.userData.markModified(); + data.userData.markModified("afk"); await data.userData.save(); interaction.success("general/afk:SUCCESS", { diff --git a/commands/General/boosters.js b/commands/General/boosters.js index 1ec19778..5bed3931 100644 --- a/commands/General/boosters.js +++ b/commands/General/boosters.js @@ -25,44 +25,26 @@ class Boosters extends BaseCommand { * * @param {import("../../base/JaBa")} client */ - async onLoad() { - //... - } - /** - * - * @param {import("../../base/JaBa")} client - * @param {import("discord.js").ChatInputCommandInteraction} interaction - * @param {Object} data - */ - async execute(client, interaction, data) { - await interaction.deferReply(); + async onLoad(client) { + client.on("interactionCreate", async interaction => { + if (!interaction.isButton()) return; - let currentPage = 0; - const boosters = (await interaction.guild.members.fetch()).filter(m => m.premiumSince); - if (boosters.size === 0) return interaction.error("general/boosters:NO_BOOSTERS", null, { edit: true }); + if (interaction.customId.includes("boosters_")) { + const guildData = client.findOrCreateGuild(interaction.guildId), + boosters = (await interaction.guild.members.fetch()).filter(m => m.premiumSince), + embeds = generateBoostersEmbeds(client, interaction, boosters, guildData); - const embeds = generateBoostersEmbeds(client, interaction, boosters, data.guildData); + const row = new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("boosters_prev_page").setStyle(ButtonStyle.Primary).setEmoji("⬅️"), + new ButtonBuilder().setCustomId("boosters_next_page").setStyle(ButtonStyle.Primary).setEmoji("➡️"), + new ButtonBuilder().setCustomId("boosters_jump_page").setStyle(ButtonStyle.Secondary).setEmoji("↗️"), + new ButtonBuilder().setCustomId("boosters_stop").setStyle(ButtonStyle.Danger).setEmoji("⏹️"), + ); - const row = new ActionRowBuilder().addComponents( - new ButtonBuilder().setCustomId("boosters_prev_page").setStyle(ButtonStyle.Primary).setEmoji("⬅️"), - new ButtonBuilder().setCustomId("boosters_next_page").setStyle(ButtonStyle.Primary).setEmoji("➡️"), - new ButtonBuilder().setCustomId("boosters_jump_page").setStyle(ButtonStyle.Secondary).setEmoji("↗️"), - new ButtonBuilder().setCustomId("boosters_stop").setStyle(ButtonStyle.Danger).setEmoji("⏹️"), - ); + let currentPage = 0; - await interaction.editReply({ - content: `${interaction.translate("common:PAGE")}: **${currentPage + 1}**/**${embeds.length}**`, - embeds: [embeds[currentPage]], - components: [row], - }); - - const filter = i => i.user.id === interaction.user.id; - const collector = interaction.guild === null ? (await interaction.user.createDM()).createMessageComponentCollector({ filter, idle: 20 * 1000 }) : interaction.channel.createMessageComponentCollector({ filter, idle: 20 * 1000 }); - - collector.on("collect", async i => { - if (i.isButton()) { - if (i.customId === "boosters_prev_page") { - i.deferUpdate(); + if (interaction.customId === "boosters_prev_page") { + await interaction.deferUpdate(); if (currentPage !== 0) { --currentPage; @@ -72,8 +54,8 @@ class Boosters extends BaseCommand { components: [row], }); } - } else if (i.customId === "boosters_next_page") { - i.deferUpdate(); + } else if (interaction.customId === "boosters_next_page") { + await interaction.deferUpdate(); if (currentPage < embeds.length - 1) { currentPage++; @@ -83,8 +65,8 @@ class Boosters extends BaseCommand { components: [row], }); } - } else if (i.customId === "boosters_jump_page") { - i.deferUpdate(); + } else if (interaction.customId === "boosters_jump_page") { + await interaction.deferUpdate(); const msg = await interaction.followUp({ content: interaction.translate("misc:JUMP_TO_PAGE", { @@ -114,21 +96,45 @@ class Boosters extends BaseCommand { return; } }); - } else if (i.customId === "boosters_stop") { - i.deferUpdate(); - collector.stop(); + } else if (interaction.customId === "boosters_stop") { + await interaction.deferUpdate(); + + row.components.forEach(component => { + component.setDisabled(true); + }); + + return interaction.editReply({ + components: [row], + }); } } }); + } + /** + * + * @param {import("../../base/JaBa")} client + * @param {import("discord.js").ChatInputCommandInteraction} interaction + * @param {Object} data + */ + async execute(client, interaction, data) { + await interaction.deferReply(); - collector.on("end", () => { - row.components.forEach(component => { - component.setDisabled(true); - }); + const boosters = (await interaction.guild.members.fetch()).filter(m => m.premiumSince); + if (boosters.size === 0) return interaction.error("general/boosters:NO_BOOSTERS", null, { edit: true }); - return interaction.editReply({ - components: [row], - }); + const embeds = generateBoostersEmbeds(client, interaction, boosters, data.guildData); + + const row = new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("boosters_prev_page").setStyle(ButtonStyle.Primary).setEmoji("⬅️"), + new ButtonBuilder().setCustomId("boosters_next_page").setStyle(ButtonStyle.Primary).setEmoji("➡️"), + new ButtonBuilder().setCustomId("boosters_jump_page").setStyle(ButtonStyle.Secondary).setEmoji("↗️"), + new ButtonBuilder().setCustomId("boosters_stop").setStyle(ButtonStyle.Danger).setEmoji("⏹️"), + ); + + await interaction.editReply({ + content: `${interaction.translate("common:PAGE")}: **1**/**${embeds.length}**`, + embeds: [embeds[0]], + components: [row], }); } } diff --git a/commands/General/help.js b/commands/General/help.js index 3e767eeb..8e090287 100644 --- a/commands/General/help.js +++ b/commands/General/help.js @@ -35,8 +35,43 @@ class Help extends BaseCommand { * * @param {import("../../base/JaBa")} client */ - async onLoad() { - //... + async onLoad(client) { + client.on("interactionCreate", async interaction => { + if (!interaction.isStringSelectMenu()) return; + + if (interaction.customId === "help_category_select") { + await interaction.deferUpdate(); + + const arg = interaction?.values[0]; + const categoryCommands = [...new Map(client.commands.map(v => [v.constructor.name, v])).values()] + .filter(cmd => cmd.category === arg) + .map(c => { + return { + name: `**${c.command.name}**`, + value: interaction.translate(`${arg.toLowerCase()}/${c.command.name}:DESCRIPTION`), + }; + }); + + const embed = new EmbedBuilder() + .setColor(client.config.embed.color) + .setFooter(client.config.embed.footer) + .setAuthor({ + name: interaction.translate("general/help:COMMANDS_IN", { category: arg }), + }) + .addFields(categoryCommands) + .addFields([ + { + name: "\u200B", + value: interaction.translate("general/help:INFO"), + }, + ]); + + return interaction.editReply({ + content: null, + embeds: [embed], + }); + } + }); } /** * @@ -75,55 +110,11 @@ class Help extends BaseCommand { const row = new ActionRowBuilder().addComponents(new StringSelectMenuBuilder().setCustomId("help_category_select").setPlaceholder(client.translate("common:NOTHING_SELECTED")).addOptions(categoriesRows)); - const msg = await interaction.editReply({ + await interaction.editReply({ content: interaction.translate("common:AVAILABLE_OPTIONS"), fetchReply: true, components: [row], }); - - const filter = i => i.user.id === interaction.user.id; - const collector = msg.createMessageComponentCollector({ filter, idle: 15 * 1000 }); - - collector.on("collect", async i => { - if (i.isStringSelectMenu() && i.customId === "help_category_select") { - i.deferUpdate(); - - const arg = i?.values[0]; - const categoryCommands = commands - .filter(cmd => cmd.category === arg) - .map(c => { - return { - name: `**${c.command.name}**`, - value: interaction.translate(`${arg.toLowerCase()}/${c.command.name}:DESCRIPTION`), - }; - }); - - const embed = new EmbedBuilder() - .setColor(client.config.embed.color) - .setFooter(client.config.embed.footer) - .setAuthor({ - name: interaction.translate("general/help:COMMANDS_IN", { category: arg }), - }) - .addFields(categoryCommands) - .addFields([ - { - name: "\u200B", - value: interaction.translate("general/help:INFO"), - }, - ]); - - return interaction.editReply({ - content: null, - embeds: [embed], - }); - } - }); - - collector.on("end", () => { - return interaction.editReply({ - components: [], - }); - }); } /** diff --git a/commands/NSFW/nsfw.js b/commands/NSFW/nsfw.js index a3c4f3ce..8b1de7ad 100644 --- a/commands/NSFW/nsfw.js +++ b/commands/NSFW/nsfw.js @@ -26,8 +26,29 @@ class NSFW extends BaseCommand { * * @param {import("../../base/JaBa")} client */ - async onLoad() { - //... + async onLoad(client) { + client.on("interactionCreate", async interaction => { + if (!interaction.isStringSelectMenu()) return; + + if (interaction.customId === "nsfw_select") { + await interaction.deferUpdate(); + + const tag = interaction?.values[0]; + const res = await fetch(`https://meme-api.com/gimme/${tag}`).then(response => response.json()); + + const embed = new EmbedBuilder() + .setColor(client.config.embed.color) + .setFooter(client.config.embed.footer) + .setTitle(res.title) + .setDescription(`${interaction.translate("fun/memes:SUBREDDIT")}: **${res.subreddit}**\n${interaction.translate("common:AUTHOR")}: **${res.author}**\n${interaction.translate("fun/memes:UPS")}: **${res.ups}**`) + .setImage(res.url) + .setTimestamp(); + + await interaction.editReply({ + embeds: [embed], + }); + } + }); } /** * @@ -51,42 +72,12 @@ class NSFW extends BaseCommand { const row = new ActionRowBuilder().addComponents(new StringSelectMenuBuilder().setCustomId("nsfw_select").setPlaceholder(client.translate("common:NOTHING_SELECTED")).addOptions(tags)); - const msg = await interaction.editReply({ + await interaction.editReply({ content: interaction.translate("common:AVAILABLE_OPTIONS"), ephemeral: true, fetchReply: true, components: [row], }); - - const filter = i => i.user.id === interaction.user.id; - const collector = msg.createMessageComponentCollector({ filter, idle: 2 * 60 * 1000 }); - - collector.on("collect", async i => { - if (i.isStringSelectMenu() && i.customId === "nsfw_select") { - i.deferUpdate(); - - const tag = i?.values[0]; - const res = await fetch(`https://meme-api.com/gimme/${tag}`).then(response => response.json()); - - const embed = new EmbedBuilder() - .setColor(client.config.embed.color) - .setFooter(client.config.embed.footer) - .setTitle(res.title) - .setDescription(`${interaction.translate("fun/memes:SUBREDDIT")}: **${res.subreddit}**\n${interaction.translate("common:AUTHOR")}: **${res.author}**\n${interaction.translate("fun/memes:UPS")}: **${res.ups}**`) - .setImage(res.url) - .setTimestamp(); - - await interaction.editReply({ - embeds: [embed], - }); - } - }); - - collector.on("end", () => { - return interaction.editReply({ - components: [], - }); - }); } } diff --git a/commands/Owner/debug.js b/commands/Owner/debug.js index a84faaca..bf4a1e12 100644 --- a/commands/Owner/debug.js +++ b/commands/Owner/debug.js @@ -146,7 +146,7 @@ class Debug extends BaseCommand { case "level": { memberData.level = int; - memberData.markModified(); + memberData.markModified("level"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -158,7 +158,7 @@ class Debug extends BaseCommand { case "xp": { memberData.exp = int; - memberData.markModified(); + memberData.markModified("exp"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -170,7 +170,7 @@ class Debug extends BaseCommand { case "credits": { memberData.money = int; - memberData.markModified(); + memberData.markModified("money"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -182,7 +182,7 @@ class Debug extends BaseCommand { case "bank": { memberData.bankSold = int; - memberData.markModified(); + memberData.markModified("bankSold"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -194,7 +194,7 @@ class Debug extends BaseCommand { case "rep": { userData.rep = int; - userData.markModified(); + userData.markModified("rep"); await userData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -220,7 +220,7 @@ class Debug extends BaseCommand { case "level": { memberData.level += int; - memberData.markModified(); + memberData.markModified("level"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -232,7 +232,7 @@ class Debug extends BaseCommand { case "xp": { memberData.exp += int; - memberData.markModified(); + memberData.markModified("exp"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -244,7 +244,7 @@ class Debug extends BaseCommand { case "credits": { memberData.money += int; - memberData.markModified(); + memberData.markModified("money"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -256,7 +256,7 @@ class Debug extends BaseCommand { case "bank": { memberData.bankSold += int; - memberData.markModified(); + memberData.markModified("bankSold"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -268,7 +268,7 @@ class Debug extends BaseCommand { case "rep": { userData.rep += int; - userData.markModified(); + userData.markModified("rep"); await userData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { diff --git a/dashboard/dashboard-core b/dashboard/dashboard-core index d91b9c59..58c20820 160000 --- a/dashboard/dashboard-core +++ b/dashboard/dashboard-core @@ -1 +1 @@ -Subproject commit d91b9c59c2038038a4f28dc75d9d792261b89460 +Subproject commit 58c2082074c0955cfafd9ebddb9ad694621df0a1 diff --git a/dashboard/docs/updates.md b/dashboard/docs/updates.md index 516f9a3c..c625b2fe 100644 --- a/dashboard/docs/updates.md +++ b/dashboard/docs/updates.md @@ -1,13 +1,20 @@ # Обновления JaBa -## JaBa v4.3.5 +## v4.3.6 + +Скоро перепишу музыкальные команды, будет интересно, честно =) + +* Изменено + * Переписал команды которые используют кнопки и списки, многие из них теперь будут отвечать даже после перезагрузки бота. + +## v4.3.5 * Добавлено * Логи удаления сообщений!\ Настройку можно найти в *config set* и в панели управления. * Начало проигрывания видео с указанного в ссылке времени. -### JaBa v4.3.3 +### v4.3.3 * Добавлено * Система Тикетов!\ @@ -20,7 +27,7 @@ * Изменено * Внешний вид *8ball*. -### JaBa v4.3.1 +### v4.3.1 * Добавлено * Мониторинг изменения сообщений!\ @@ -29,13 +36,13 @@ * Исправления * Серьёзная ошибка, из-за которой данные не сохранялись в базу данных 🤯. -### JaBa v4.3.0 +### v4.3.0 * Добавлено * Полностью переделанная панель управления!\ Она ещё не закончена, так что ждите продолжения. -### JaBa v4.2.6 +### v4.2.6 * Добавлено * Эксклюзив для SunCountry RP: *sendmessage* - отправить (анонимное) сообщение в выбранный канал. @@ -44,7 +51,7 @@ * Отключено уведомление об ачивках, включу когда переделаю.\ Хочу отправлять их в ЛС. -### JaBa v4.2.5 +### v4.2.5 * Изменено * Изменения в локализации, основным языком теперь является английский.\ @@ -55,22 +62,22 @@ * Удалено * Антиспам - Дискорд и сам справляется. -### JaBa v4.2.4 +### v4.2.4 * Добавлено * Бот цитирует сообщение если отправлена ссылка на него. -### JaBa v4.2.3 +### v4.2.3 * Удалено * Команда *chat* - Я передумал, а вы даже и не заметили =) -### JaBa v4.2.2 +### v4.2.2 * Добавлено * Команда *chat* - Спросить у ChatGPT! -### JaBa v4.2.1 +### v4.2.1 * Добавлено * Команда *volume* - установить громкость бота. @@ -79,7 +86,7 @@ * Удаление спама если включён Автомод. * Подсказки по командам на языке вашего клиента. -### JaBa v4.2.0 +### v4.2.0 Я решил отказаться от своего модуля музыки в пользу основного, т.к. он был переписан авторами и теперь работает намного лучше. @@ -98,7 +105,7 @@ * Добавлено * Новые баги. -### JaBa v4.1.20 +### v4.1.20 * Добавлено * Команда *boosters* - Список бустеров с сортировкой по дате буста. @@ -106,7 +113,7 @@ * Удалено * Команда *activity* - Её функционал официально добавлен в Discord. -### JaBa v4.1.19 +### v4.1.19 * Изменения * Мелкие внутренние изменения. @@ -114,14 +121,14 @@ * Исправления * Ошибки *warn*. -### JaBa v4.1.18 +### v4.1.18 * Изменения * Обновление зависимостей. * Убран счётчик "случаев" в *warn*. * Обновление устаревших функций. -### JaBa v4.1.17 +### v4.1.17 * Добавлено * Команды *cat* и *dog*. @@ -132,12 +139,12 @@ * Исправления * Ошибка команды *warn* если имя пользователя содержит нестандартные символы. -### JaBa v4.1.16 +### v4.1.16 * Добавлено * Наконец-то возвращена и починена команда *seek*. -### JaBa v4.1.15 +### v4.1.15 * Изменения * Переписана команда *config*. @@ -147,7 +154,7 @@ * Удалено * Команды *setbirthdays*, *setmodlogs*, *setnews*, *setreports*, *setsuggests*. -### JaBa v4.1.14 +### v4.1.14 * Добавлено * Команда *selectroles* - Возможность выбора необязательных ролей пользователями. @@ -160,18 +167,18 @@ * Исправления * Синтаксические ошибки в локализации. -### JaBa v4.1.13 +### v4.1.13 * Изменения * Переписана команда *clips*. -### JaBa v4.1.12 +### v4.1.12 * Исправления * Фикс поиска по ссылкам. * Фикс воспроизведения с SoundCloud. -### JaBa v4.1.11 +### v4.1.11 * Изменения * Команды которые нельзя использовать в ЛС с ботом не будут там отображаться. @@ -179,7 +186,7 @@ * Исправления * Переписаны команды *nsfw* и *memes* для работы в ЛС с ботом. -### JaBa v4.1.10 +### v4.1.10 * Добавлено * Команда *shuffle* - Перемешать очередь. @@ -187,7 +194,7 @@ * Изменения * Многие команды теперь можно использовать в ЛС с ботом. Узнать где именно можно использовать команду через *help*. -### JaBa v4.1.9 +### v4.1.9 * Изменения * Переписана система опыта. Теперь при достижении нового уровня опыт сбрасывается и бот оповещает о получении нового уровня. @@ -195,7 +202,7 @@ * Исправления * Команды *set* и *debug* ничего не делали. -### JaBa v4.1.8 +### v4.1.8 * Добавлено * Возможность сразу сократить ссылку в команде *lmgtfy*. @@ -207,12 +214,12 @@ * Исправления * Фикс ошибки *shorturl* с некоторыми ссылками. -### JaBa v4.1.7 +### v4.1.7 * Изменения * Переписана команда *leaderboard*. -### JaBa v4.1.6 +### v4.1.6 * Изменения * Изменён способ указания типа повтора в *loop*. Теперь вы указываете тип аргументом (подсказки имеются), а не из выпадающего списка в отдельном сообщении. Это одновременно удобно, быстро и меньше кода =) @@ -220,17 +227,17 @@ * Исправления * Фиксы в *tictactoe*. -### JaBa v4.1.5 +### v4.1.5 * Изменения * Более подробные сообщения в *remindme*. -### JaBa v4.1.4 +### v4.1.4 * Исправления * Ошибки в clips, loop, nowplaying и play. -### JaBa v4.1.3 +### v4.1.3 * Добавлено * Возможность принудительной очистки транзакций с помощью *transactions clear:True* @@ -239,7 +246,7 @@ * Сделал перепись населения буквам в коде, теперь их меньше. * Переделал обработку ошибок в *play*, теперь она говорит ошибку, а не считает её неизвестной. -### JaBa v4.1.2 +### v4.1.2 * Добавлено * Выбор при поиске текстом через команду *play*. @@ -251,12 +258,12 @@ * Исправлена ошибка команды *queue* если очередь пуста. * Починено автовоспроизведение. -### JaBa v4.1.1 +### v4.1.1 * Добавлено * Страницы в *queue*. -### JaBa v4.1 +### v4.1 * Изменения * Способ ввода даты рождения в *birthdate*. @@ -266,7 +273,7 @@ * Исправлена команда *skip*. * Исправлена команда *marry*. -### JaBa v4.0 +### v4.0 * Добавлено * Перенесены все категории. @@ -280,7 +287,7 @@ * Поправлены все фразы в стандартной локализации. * Правка локализации в панели управления. -### JaBa v4.0pre5 +### v4.0pre5 * Добавлено * Перенесена категория *Administration*. @@ -290,7 +297,7 @@ * Панель управления снова работает. * Множество мелких правок. -### JaBa v4.0pre4 +### v4.0pre4 * Добавлено * Перенесена категория *Moderation*. @@ -301,7 +308,7 @@ * Удалено * Команда *seek*. -### JaBa v4.0pre3 +### v4.0pre3 Пожалуйста, сообщайте мне обо всех найденых ошибках! Данная версия является pre версией, некоторые команды сейчас недоступны, остальные команды будут доступны в следующих обновлениях. Следите за обновлениями =) @@ -329,12 +336,12 @@ * Категория *Images* * Команды: *ban*, *kick*, *mute*, *unmute*, *announcement*, *autoplay*, *clip*, *createplaylist*, *playplaylist*, *removeplaylist*, *playlists*, *filter*, *filters*, *lyrics*, *pause*, *resume*, *invite*, *invites*, *permissions*, *quote*, *translate*, *choice*, *ascii*, *flip*, *findwords*, *addcommand*, *backup*, *ignore*, *setprefix*, *slowmode*. -### JaBa v3.4.7 +### v3.4.7 * Исправления * Команда *ping* выдавала неправильный пинг. -### JaBa v3.4.6 +### v3.4.6 * Изменений * Команда *invitations* переименована в *invites*. @@ -342,7 +349,7 @@ * Удалено * Команды *github*, *hastebin*, *someone*. -### JaBa v3.4.5 +### v3.4.5 * Добавлено * Команда *memes* - Получить мем с выбранного или случайного сабреддита. @@ -353,12 +360,12 @@ * Удалено * Команда *joke*. -### JaBa v3.4.4a +### v3.4.4a * Исправления * Фикс *clear all*. -### JaBa v3.4.4 +### v3.4.4 * Добавлено * Создание, удаление и воспроизведение плейлистов! @@ -371,7 +378,7 @@ * Транзакции в *transactions* удаляются через месяц. * Мелкие правки в локализации, исправление орфографических ошибок. -### JaBa v3.4.3 +### v3.4.3 * Изменения * Украинская локализация закончена. @@ -379,12 +386,12 @@ * Исправления * Не везде применялась локализация сервера. -### JaBa v3.4.2 +### v3.4.2 * Добавлено * Команда *whois* - Получить информацию об IP адресе. -### JaBa v3.4.1 +### v3.4.1 * Добавлено * Информация о необходимых уровнях буста для активностей. @@ -395,18 +402,18 @@ * Исправления * Генератор случайных чисел всё это время работал неправильно, теперь всё гуд. -### JaBa v3.4.0 +### v3.4.0 * Добавлено * Новые игры в *activity* - **Ocho** и **Sketchheads**. -### JaBa v3.3.9 +### v3.3.9 * Добавлено * Команда *emoji* - Получить информацию об эмодзи. * В команде *loop* теперь можно использовать аргументы *single/song* для повтора одного трека или *queue/all* для повтора всей очереди. -### JaBa v3.3.8 +### v3.3.8 * Исправления * Команда *clip* теперь работает нормально. @@ -414,33 +421,33 @@ * Изменения * Сайт перенесён обратно на **. -### JaBa v3.3.7 +### v3.3.7 * Добавлено * Локализация необходимых прав в ошибке. -### JaBa v3.3.6 +### v3.3.6 * Изменения * Панель управления теперь доступна по ссылке **. * Вы теперь можете пригласить JaBa на свой сервер по ссылке из команды *invite*, *stats* или по [ссылке](https://discord.com/api/oauth2/authorize?client_id=708637495054565426&scope=bot&permissions=8) -### JaBa v3.3.5 +### v3.3.5 * Исправления * Команда *tictactoe* снова работает. -### JaBa v3.3.4 +### v3.3.4 * Добавлено * Команда *stealemoji (steale)* - Украсть эмодзи с другого сервера (для администрации с подпиской Nitro). -### JaBa v3.3.3 +### v3.3.3 * Добавлено * Команда *steamcard* в категорию *Images*. -### JaBa v3.3.2 +### v3.3.2 * Добавлено * Команды *crush*, *magik* и *ps4* в категорию *Images*. @@ -448,19 +455,19 @@ * Удалено * Команда *tweet*. -### JaBa v3.3.1 +### v3.3.1 * Изменения * Команды *findwords*, *horserace*, *number* и *tictactoe* перемещены в категорию *Economy*. * Новые коэффициенты для *horserace*. -### JaBa v3.3.0 +### v3.3.0 * Добавлено * Команда *horserace* - конные скачки со ставками. * Ещё одно место куда вы можете потратить свою зарплату =) (или заработать неплохие деньги). -### JaBa v3.2.9 +### v3.2.9 * Исправления * Команда *backup* теперь работает нормально. @@ -468,7 +475,7 @@ * Удалено * Команда *fml*. -### JaBa v3.2.8 +### v3.2.8 * Добавлено * Статистика сервера на сайте ([пример](https://jaba.pp.ua/stats/651412418202959872)). @@ -479,7 +486,7 @@ * Таблицы лидеров теперь показываются в эмбедах. * Отключены команда *someone* и тэг *@someone*. -### JaBa v3.2.7 +### v3.2.7 * Добавлено * Некоторая информация о вашем профиле на сайте, на страницах серверов и в настройках. (Скоро там будет больше всякой информации). @@ -488,7 +495,7 @@ * Изменения * Внешний вид [документации](/docs). -### JaBa v3.2.6 +### v3.2.6 * Исправления * Команда *goodbye* снова работает. @@ -497,29 +504,29 @@ * Команда *setafk* и ответ бота автоматически удаляются через 10 секунд. * Новые карточки при входе и выходе пользователей (я не дизайнер, не бейте :( ). -### JaBa v3.2.5 +### v3.2.5 * Изменения * Переписана команда *loop*. * Теперь нужен аргумент **song** или **queue** для включения соответствующего режима повтора. * Если не указать агрумент, то повтор отключится. -### JaBa v3.2.4 +### v3.2.4 * Добавлено * Теперь при разводе (*divorce*) пользователь получает сообщение о разводе в ЛС. -### JaBa v3.2.3 +### v3.2.3 * Исправления * *clip* снова работает. -### JaBa v3.2.2 Hotfix +### v3.2.2 Hotfix * Исправления * В *profile* и *money* снова показываются кредиты со всех серверов. -### JaBa v3.2.2 +### v3.2.2 > > Спасибо Добрый Спецназ#8801 за идеи. @@ -531,7 +538,7 @@ * Исправления * Кредиты на всех серверах в *profile* и *money* заменены на кредиты на текущем сервере (я не смог совладать с ошибкой из-за discord.js 13, возможно верну позже). -### JaBa v3.2.1 +### v3.2.1 * Исправления * Отображение статуса в *userinfo*. @@ -539,7 +546,7 @@ * Появилась возможность сделать раздачу **дропом**. * Дроп - как только количество участников будет равно указанному вами количеству победителей раздача сразу же заканчивается. Победителями будут все, кто успел поставить реакцию. -### JaBa v3.2 +### v3.2 > > Огромная благодарность Добрый Спецназ#8801 за поддержку и помощь! > Обновление очень большое, обязательно сообщайте мне обо всех ошибках! @@ -554,7 +561,7 @@ * *checkinvites* удалена, т.к. не имела смысла. * *fortniteshop* и *fortnite* удалены, т.к. ими никто не пользовался. Все связанные с ними настройки так же удалены. -### JaBa v3.1.6 +### v3.1.6 > > Спасибо Добрый Спецназ#8801 за помощь в поиске багов @@ -563,12 +570,12 @@ * Некорректная работа *seek*. * Некорректное описание *unban*. -### JaBa v3.1.5 +### v3.1.5 * Изменения * Откат изменений из v3.1.4. -### JaBa v3.1.4 +### v3.1.4 * Добавлено * Возможность удалить резервную копию сервера *backup remove [ID]*. @@ -577,14 +584,14 @@ * Переход на discord.js v13. * Команда *queue* временно отключена. -### JaBa v3.1.3 +### v3.1.3 * Изменения * Команды *number* и *findwords* теперь корректно отображают выигрыш. * Расширен диапазон случайных чисел в *number*. * Исправлены ошибки. -### JaBa v3.1.2 +### v3.1.2 * Добавлено * Награда за победу в крестиках-ноликах в **100** кредитов. @@ -592,7 +599,7 @@ * Изменения * Исправлены ошибки. -### JaBa v3.1.1 +### v3.1.1 > > Спасибо Добрый Спецназ#8801 за идею. @@ -603,27 +610,27 @@ * Изменения * Откаты команд уменьшены ещё больше. -### JaBa v3.1 +### v3.1 * Изменения * Исправлены орфографические ошибки в русской локализации. * Отключёна английская локализация. * Исправлены ошибки. -### JaBa v3.0.9 +### v3.0.9 * Добавлено * Возвращены поздравления с днём рождения. * Команда *setbirthdays* - установить канал для поздравлений. Так же его можно изменить из панели управления. -### JaBa v3.0.8 +### v3.0.8 * Изменения * *8ball* теперь имеет **20** возможных ответов. * Награды за победу в *findwords* и *number* повышены до **150** и **100** соответственно. * Больше фиксов :3 -### JaBa v3.0.7 +### v3.0.7 * Изменения * Исправлены ошибки в командах из раздела *Music*. @@ -631,7 +638,7 @@ * Множество других мелких исправлений. * Бот теперь будет меньше спамить :) -### JaBa v3.0.6 +### v3.0.6 * Добавлено * Команда *jump* - позволяет перейти на заданный трек из очереди. @@ -639,7 +646,7 @@ * Изменения * Система музыки переписана (да, снова). Теперь можно воспроизвести звук практически с любых источников, в том числе видео и MP3 из Discord, Vimeo, прямые ссылки на радио. Список всех возможных источников можно найти [тут](https://ytdl-org.github.io/youtube-dl/supportedsites.html). Надеюсь теперь будет меньше ошибок... -### JaBa v3.0.5 +### v3.0.5 * Добавлено * Команда *set* для изменения уровня, опыта, кредитов или банка пользователя (доступна только администраторам). @@ -649,24 +656,24 @@ * Изменения * В команде *profile* теперь видно необходимое кол-во опыта для следующего уровня. -### JaBa v3.0.4 +### v3.0.4 * Изменения * Команды и обновления перенесены [сюда](/docs). Теперь там всё более-менее нормально выглядит. -### JaBa v3.0.3 +### v3.0.3 * Изменения * Категория *Games* заменена командой *activity* (Спасибо Slizen#3791 за идею). * Английский язык обновлён до последней версии бота (Спасибо FaxoNfuckyou#9398 за помощь). * Уменьшен откат на многих командах. -### JaBa v3.0.2 +### v3.0.2 * Изменения * Не требуется авторизация для просмотра [команд](/commands) и [обновлений](/updates). -### JaBa v3.0.1 +### v3.0.1 * Добавлено * Команда *loop* - переключение повтора одного трека или всей очереди (*loop song/queue*). @@ -675,7 +682,7 @@ * Администраторы и модераторы могут использовать *skip*, *back* и *stop* принудительно (*skip/back/stop force/f*). * Уменьшено количество требуемых голосов для команд *skip*, *stop* и *back*. -### JaBa v3.0 +### v3.0 > > Я решил полностью переделать бота, так как в старом был вагон и маленькая тележка проблем. Данная верcия должна быть в разы лучше. > Старые команды я не переносил, т.к. они были ужасно написаны и использовали старые библиотеки. diff --git a/dashboard/settings.js b/dashboard/settings.js index 310a9df5..082b2492 100644 --- a/dashboard/settings.js +++ b/dashboard/settings.js @@ -29,7 +29,7 @@ module.exports = client => [ guildData.language = newData; - guildData.markModified(); + guildData.markModified("language"); await guildData.save(); return; @@ -464,7 +464,7 @@ module.exports = client => [ { categoryId: "test", categoryName: "test settings", - categoryDescription: "ooga booba", + categoryDescription: "ooga booga", categoryPermissions: PermissionsBitField.Flags.ViewChannel, categoryOptionsList: [ { diff --git a/events/CommandHandler.js b/events/CommandHandler.js index ebb7f887..310bea4d 100644 --- a/events/CommandHandler.js +++ b/events/CommandHandler.js @@ -30,6 +30,7 @@ class CommandHandler extends BaseEvent { } if (interaction.isAutocomplete()) return await command.autocompleteRun(client, interaction); + if (interaction.isButton() && interaction.customId === "quote_delete" && interaction.message.deletable) return interaction.message.delete(); if (interaction.type !== InteractionType.ApplicationCommand && !interaction.isCommand()) return; if (command.ownerOnly && interaction.user.id !== client.config.owner.id) return interaction.error("misc:OWNER_ONLY", null, { ephemeral: true }); diff --git a/events/MessageHandler.js b/events/MessageHandler.js index cc98ab8a..5242bb17 100644 --- a/events/MessageHandler.js +++ b/events/MessageHandler.js @@ -83,19 +83,10 @@ class MessageCreate extends BaseEvent { new ButtonBuilder().setCustomId("quote_delete").setEmoji("1102200816582000750").setStyle(ButtonStyle.Danger), ); - await message.reply({ + message.reply({ embeds: [embed], components: [row], }); - - const filter = i => i.user.id === message.author.id; - const collector = message.channel.createMessageComponentCollector({ filter, time: 60 * 1000 }); - - collector.on("collect", async i => { - if (i.isButton() && i.customId === "quote_delete") { - if (i.message.deletable) i.message.delete(); - } - }); } if (data.guildData.plugins.automod.enabled && !data.guildData.plugins.automod.ignored.includes(message.channelId)) @@ -108,7 +99,7 @@ class MessageCreate extends BaseEvent { if (data.userData.afk) { data.userData.afk = null; - data.userData.markModified(); + data.userData.markModified("afk"); await data.userData.save(); message.replyT("general/afk:DELETED", { @@ -156,7 +147,8 @@ async function updateXp(client, msg, memberData) { }, { mention: false }); } else memberData.exp = parseInt(newXp, 10); - memberData.markModified(); + memberData.markModified("level"); + memberData.markModified("exp"); await memberData.save(); } diff --git a/languages/en-US/administration/autorole.json b/languages/en-US/administration/autorole.json index 80487aac..1a3b38f3 100644 --- a/languages/en-US/administration/autorole.json +++ b/languages/en-US/administration/autorole.json @@ -2,7 +2,8 @@ "DESCRIPTION": "Toggles automatic role assignment upon joining the server", "USAGE": "[state] (@role)", "EXAMPLES": "autorole state:True role:@newbie\nautorole state:False", - "MISSING_ROLE": "Specify a role", - "SUCCESS_ENABLED": "Role assignment is enabled!\nNew users will automatically receive the {{role}} upon joining the server", - "SUCCESS_DISABLED": "Role assignment is disabled" + "TOGGLE": "Toggle autorole", + "ROLE": "Select role", + "ENABLED": "Role assignment is enabled!\nNew users will automatically receive the {{role}} upon joining the server", + "DISABLED": "Role assignment is disabled" } \ No newline at end of file diff --git a/languages/ru-RU/administration/autorole.json b/languages/ru-RU/administration/autorole.json index 96777add..3b9e85c2 100644 --- a/languages/ru-RU/administration/autorole.json +++ b/languages/ru-RU/administration/autorole.json @@ -2,7 +2,8 @@ "DESCRIPTION": "Включить или отключить автоназначение роли при входе на сервер", "USAGE": "[state] (@role)", "EXAMPLES": "autorole state:True role:@новенький\nautorole state:False", - "MISSING_ROLE": "Укажите роль", - "SUCCESS_ENABLED": "Автоназначение роли включено!\nНовые пользователи будут автоматически получать {{role}} при входе на сервер", - "SUCCESS_DISABLED": "Автоназначение роли отключено" + "TOGGLE": "Переключить автороль", + "ROLE": "Выбрать роль", + "ENABLED": "Автоназначение роли включено!\nНовые пользователи будут автоматически получать {{role}} при входе на сервер", + "DISABLED": "Автоназначение роли отключено" } \ No newline at end of file diff --git a/languages/uk-UA/administration/autorole.json b/languages/uk-UA/administration/autorole.json index b90ae000..7c0cb1b1 100644 --- a/languages/uk-UA/administration/autorole.json +++ b/languages/uk-UA/administration/autorole.json @@ -2,7 +2,8 @@ "DESCRIPTION": "Увімкнути або вимкнути автопризначення ролі при вході на сервер", "USAGE": "[state] (@role)", "EXAMPLES": "autorole state:True role:@новий\nautorole state:False", - "MISSING_ROLE": "Вкажіть роль", - "SUCCESS_ENABLED": "Автопризначення ролі увімкнено!\nНові користувачі автоматично отримуватимуть {{role}} під час входу на сервер", - "SUCCESS_DISABLED": "Автопризначення ролі вимкнено" + "TOGGLE": "Перемкнути автороль", + "ROLE": "Обрати роль", + "ENABLED": "Автопризначення ролі увімкнено!\nНові користувачі автоматично отримуватимуть {{role}} під час входу на сервер", + "DISABLED": "Автопризначення ролі вимкнено" } \ No newline at end of file diff --git a/package.json b/package.json index cccbe52b..3f0e6b9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jaba", - "version": "4.3.5", + "version": "4.3.6", "description": "My Discord Bot", "main": "index.js", "scripts": {