4.6.6 - Fixed User Installs

This commit is contained in:
Jonny_Bro (Nikita) 2024-09-19 23:58:06 +05:00
parent d97c4bf4f2
commit 77ec27dc1d
Signed by: jonny_bro
GPG key ID: 3F1ECC04147E9BD8
98 changed files with 518 additions and 467 deletions

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Addemoji extends BaseCommand { class Addemoji extends BaseCommand {
@ -15,6 +15,7 @@ class Addemoji extends BaseCommand {
uk: client.translate("administration/addemoji:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/addemoji:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/addemoji:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/addemoji:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addStringOption(option => .addStringOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, ChannelType, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, ChannelType, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Automod extends BaseCommand { class Automod extends BaseCommand {
@ -15,6 +15,7 @@ class Automod extends BaseCommand {
uk: client.translate("administration/automod:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/automod:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/automod:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/automod:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addSubcommand(subcommand => .addSubcommand(subcommand =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Autorole extends BaseCommand { class Autorole extends BaseCommand {
@ -15,6 +15,7 @@ class Autorole extends BaseCommand {
uk: client.translate("administration/autorole:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/autorole:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/autorole:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/autorole:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addBooleanOption(option => .addBooleanOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, ChannelType, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, ChannelType, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Config extends BaseCommand { class Config extends BaseCommand {
@ -15,6 +15,7 @@ class Config extends BaseCommand {
uk: client.translate("administration/config:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/config:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/config:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/config:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addSubcommand(subcommand => .addSubcommand(subcommand =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Goodbye extends BaseCommand { class Goodbye extends BaseCommand {
@ -15,6 +15,7 @@ class Goodbye extends BaseCommand {
uk: client.translate("administration/goodbye:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/goodbye:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/goodbye:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/goodbye:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addSubcommand(subcommand => .addSubcommand(subcommand =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, ActionRowBuilder, StringSelectMenuBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, ActionRowBuilder, StringSelectMenuBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Selectroles extends BaseCommand { class Selectroles extends BaseCommand {
@ -15,6 +15,7 @@ class Selectroles extends BaseCommand {
uk: client.translate("administration/selectroles:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/selectroles:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/selectroles:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/selectroles:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addSubcommand(subcommand => .addSubcommand(subcommand =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Set extends BaseCommand { class Set extends BaseCommand {
@ -15,6 +15,7 @@ class Set extends BaseCommand {
uk: client.translate("administration/set:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/set:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/set:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/set:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addStringOption(option => .addStringOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Setlang extends BaseCommand { class Setlang extends BaseCommand {
@ -15,6 +15,7 @@ class Setlang extends BaseCommand {
uk: client.translate("administration/setlang:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/setlang:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/setlang:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/setlang:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addStringOption(option => .addStringOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, parseEmoji, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, parseEmoji, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Stealemoji extends BaseCommand { class Stealemoji extends BaseCommand {
@ -15,6 +15,7 @@ class Stealemoji extends BaseCommand {
uk: client.translate("administration/stealemoji:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/stealemoji:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/stealemoji:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/stealemoji:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addStringOption(option => .addStringOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Welcome extends BaseCommand { class Welcome extends BaseCommand {
@ -15,6 +15,7 @@ class Welcome extends BaseCommand {
uk: client.translate("administration/welcome:DESCRIPTION", null, "uk-UA"), uk: client.translate("administration/welcome:DESCRIPTION", null, "uk-UA"),
ru: client.translate("administration/welcome:DESCRIPTION", null, "ru-RU"), ru: client.translate("administration/welcome:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild)
.addSubcommand(subcommand => .addSubcommand(subcommand =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
fetch = require("node-fetch"); fetch = require("node-fetch");
@ -16,6 +16,7 @@ class Courses extends BaseCommand {
uk: client.translate("beatrun_courses/courses:DESCRIPTION", null, "uk-UA"), uk: client.translate("beatrun_courses/courses:DESCRIPTION", null, "uk-UA"),
ru: client.translate("beatrun_courses/courses:DESCRIPTION", null, "ru-RU"), ru: client.translate("beatrun_courses/courses:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.Guild, InteractionContextType.BotDM, InteractionContextType.PrivateChannel]) .setContexts([InteractionContextType.Guild, InteractionContextType.BotDM, InteractionContextType.PrivateChannel])
.addStringOption(option => .addStringOption(option =>
option option
@ -26,6 +27,15 @@ class Courses extends BaseCommand {
ru: client.translate("common:CODE", null, "ru-RU"), ru: client.translate("common:CODE", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -39,7 +49,7 @@ class Courses extends BaseCommand {
* @param {Object} data * @param {Object} data
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply(); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const code = interaction.options.getString("code"); const code = interaction.options.getString("code");
const response = await fetch(`https://courses.jonnybro.ru/api/info/${code}`).then(res => res.json()), const response = await fetch(`https://courses.jonnybro.ru/api/info/${code}`).then(res => res.json()),

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Achievements extends BaseCommand { class Achievements extends BaseCommand {
@ -15,6 +15,7 @@ class Achievements extends BaseCommand {
uk: client.translate("economy/achievements:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/achievements:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/achievements:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/achievements:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Bank extends BaseCommand { class Bank extends BaseCommand {
@ -15,6 +15,7 @@ class Bank extends BaseCommand {
uk: client.translate("economy/bank:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/bank:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/bank:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/bank:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Birthdate extends BaseCommand { class Birthdate extends BaseCommand {
@ -15,6 +15,7 @@ class Birthdate extends BaseCommand {
uk: client.translate("economy/birthdate:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/birthdate:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/birthdate:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/birthdate:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.Guild, InteractionContextType.PrivateChannel]) .setContexts([InteractionContextType.BotDM, InteractionContextType.Guild, InteractionContextType.PrivateChannel])
.addIntegerOption(option => .addIntegerOption(option =>
option option
@ -65,6 +66,15 @@ class Birthdate extends BaseCommand {
uk: client.translate("economy/birthdate:CLEAR", null, "uk-UA"), uk: client.translate("economy/birthdate:CLEAR", null, "uk-UA"),
ru: client.translate("economy/birthdate:CLEAR", null, "ru-RU"), ru: client.translate("economy/birthdate:CLEAR", null, "ru-RU"),
}), }),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -77,6 +87,8 @@ class Birthdate extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const userData = interaction.data.user; const userData = interaction.data.user;
if (interaction.options.getBoolean("clear")) { if (interaction.options.getBoolean("clear")) {
@ -85,7 +97,7 @@ class Birthdate extends BaseCommand {
return interaction.success("economy/birthdate:SUCCESS", { return interaction.success("economy/birthdate:SUCCESS", {
date: "none", date: "none",
}); }, { edit: true });
} }
const day = interaction.options.getInteger("day"), const day = interaction.options.getInteger("day"),
@ -97,9 +109,9 @@ class Birthdate extends BaseCommand {
const d = Math.floor(date.getTime() / 1000); const d = Math.floor(date.getTime() / 1000);
if (!(day == date.getDate() && month - 1 == date.getMonth() && year == date.getFullYear())) return interaction.error("economy/birthdate:INVALID_DATE"); if (!(day == date.getDate() && month - 1 == date.getMonth() && year == date.getFullYear())) return interaction.error("economy/birthdate:INVALID_DATE", null, { edit: true });
if (date.getTime() > Date.now()) return interaction.error("economy/birthdate:DATE_TOO_HIGH"); if (date.getTime() > Date.now()) return interaction.error("economy/birthdate:DATE_TOO_HIGH", null, { edit: true });
if (date.getTime() < Date.now() - 2.523e12) return interaction.error("economy/birthdate:DATE_TOO_LOW"); if (date.getTime() < Date.now() - 2.523e12) return interaction.error("economy/birthdate:DATE_TOO_LOW", null, { edit: true });
userData.birthdate = d; userData.birthdate = d;
@ -107,7 +119,7 @@ class Birthdate extends BaseCommand {
interaction.success("economy/birthdate:SUCCESS", { interaction.success("economy/birthdate:SUCCESS", {
date: `<t:${d}:D>`, date: `<t:${d}:D>`,
}); }, { edit: true });
} }
} }

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Divorce extends BaseCommand { class Divorce extends BaseCommand {
@ -15,6 +15,7 @@ class Divorce extends BaseCommand {
uk: client.translate("economy/divorce:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/divorce:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/divorce:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/divorce:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]), .setContexts([InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Leaderboard extends BaseCommand { class Leaderboard extends BaseCommand {
@ -15,6 +15,7 @@ class Leaderboard extends BaseCommand {
uk: client.translate("economy/leaderboard:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/leaderboard:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/leaderboard:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/leaderboard:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
pendings = {}; pendings = {};
@ -16,6 +16,7 @@ class Marry extends BaseCommand {
uk: client.translate("economy/marry:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/marry:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/marry:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/marry:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Money extends BaseCommand { class Money extends BaseCommand {
@ -15,6 +15,7 @@ class Money extends BaseCommand {
uk: client.translate("economy/money:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/money:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/money:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/money:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option
@ -39,10 +40,9 @@ class Money extends BaseCommand {
await interaction.deferReply(); await interaction.deferReply();
const member = interaction.options.getMember("user") || interaction.member; const member = interaction.options.getMember("user") || interaction.member;
if (member.user.bot) return interaction.error("economy/money:BOT_USER"); if (member.user.bot) return interaction.error("economy/money:BOT_USER", null, { edit: true });
const memberData = member.id === interaction.user.id ? interaction.data.member : await client.getMemberData(member.id, interaction.guildId); const memberData = member.id === interaction.user.id ? interaction.data.member : await client.getMemberData(member.id, interaction.guildId);
const guilds = client.guilds.cache.filter(g => g.members.cache.find(m => m.id === member.id)); const guilds = client.guilds.cache.filter(g => g.members.cache.find(m => m.id === member.id));
let globalMoney = 0; let globalMoney = 0;

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Pay extends BaseCommand { class Pay extends BaseCommand {
@ -15,6 +15,7 @@ class Pay extends BaseCommand {
uk: client.translate("economy/pay:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/pay:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/pay:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/pay:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Profile extends BaseCommand { class Profile extends BaseCommand {
@ -15,6 +15,7 @@ class Profile extends BaseCommand {
uk: client.translate("economy/profile:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/profile:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/profile:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/profile:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Rep extends BaseCommand { class Rep extends BaseCommand {
@ -15,6 +15,7 @@ class Rep extends BaseCommand {
uk: client.translate("economy/rep:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/rep:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/rep:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/rep:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Rob extends BaseCommand { class Rob extends BaseCommand {
@ -15,6 +15,7 @@ class Rob extends BaseCommand {
uk: client.translate("economy/rob:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/rob:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/rob:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/rob:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType, escapeEscape, escapeCodeBlock, escapeInlineCode } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Setbio extends BaseCommand { class Setbio extends BaseCommand {
@ -15,6 +15,7 @@ class Setbio extends BaseCommand {
uk: client.translate("economy/setbio:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/setbio:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/setbio:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/setbio:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -25,6 +26,15 @@ class Setbio extends BaseCommand {
ru: client.translate("economy/profile:BIO", null, "ru-RU"), ru: client.translate("economy/profile:BIO", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -37,13 +47,13 @@ class Setbio extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true }); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const userData = interaction.data.user, const userData = interaction.data.user,
newBio = interaction.options.getString("text"); newBio = interaction.options.getString("text");
if (newBio.length > 150) return interaction.error("economy/setbio:MAX_CHARACTERS"); if (newBio.length > 150) return interaction.error("misc:MAX_150_CHARS", null, { edit: true });
userData.bio = newBio; userData.bio = escapeEscape(escapeCodeBlock(escapeInlineCode(newBio))).replace("@", "@\u200b");
await userData.save(); await userData.save();

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Slots extends BaseCommand { class Slots extends BaseCommand {
@ -15,6 +15,7 @@ class Slots extends BaseCommand {
uk: client.translate("economy/slots:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/slots:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/slots:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/slots:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addIntegerOption(option => .addIntegerOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Transactions extends BaseCommand { class Transactions extends BaseCommand {
@ -15,6 +15,7 @@ class Transactions extends BaseCommand {
uk: client.translate("economy/transactions:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/transactions:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/transactions:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/transactions:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addBooleanOption(option => .addBooleanOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, parseEmoji, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, parseEmoji, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Work extends BaseCommand { class Work extends BaseCommand {
@ -15,6 +15,7 @@ class Work extends BaseCommand {
uk: client.translate("economy/work:DESCRIPTION", null, "uk-UA"), uk: client.translate("economy/work:DESCRIPTION", null, "uk-UA"),
ru: client.translate("economy/work:DESCRIPTION", null, "ru-RU"), ru: client.translate("economy/work:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]), .setContexts([InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Eightball extends BaseCommand { class Eightball extends BaseCommand {
@ -15,6 +15,7 @@ class Eightball extends BaseCommand {
uk: client.translate("fun/8ball:DESCRIPTION", null, "uk-UA"), uk: client.translate("fun/8ball:DESCRIPTION", null, "uk-UA"),
ru: client.translate("fun/8ball:DESCRIPTION", null, "ru-RU"), ru: client.translate("fun/8ball:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -25,6 +26,15 @@ class Eightball extends BaseCommand {
ru: client.translate("fun/8ball:QUESTION", null, "ru-RU"), ru: client.translate("fun/8ball:QUESTION", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -37,7 +47,7 @@ class Eightball extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply(); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const question = interaction.options.getString("question"); const question = interaction.options.getString("question");
const embed = client.embed({ const embed = client.embed({

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
fetch = require("node-fetch"); fetch = require("node-fetch");
@ -16,7 +16,17 @@ class Cat extends BaseCommand {
uk: client.translate("fun/cat:DESCRIPTION", null, "uk-UA"), uk: client.translate("fun/cat:DESCRIPTION", null, "uk-UA"),
ru: client.translate("fun/cat:DESCRIPTION", null, "ru-RU"), ru: client.translate("fun/cat:DESCRIPTION", null, "ru-RU"),
}) })
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
}); });
@ -28,7 +38,7 @@ class Cat extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply(); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const res = await fetch("https://api.thecatapi.com/v1/images/search").then(r => r.json()); const res = await fetch("https://api.thecatapi.com/v1/images/search").then(r => r.json());
const cat = res[0].url; const cat = res[0].url;

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
fetch = require("node-fetch"); fetch = require("node-fetch");
@ -16,7 +16,17 @@ class Dog extends BaseCommand {
uk: client.translate("fun/dog:DESCRIPTION", null, "uk-UA"), uk: client.translate("fun/dog:DESCRIPTION", null, "uk-UA"),
ru: client.translate("fun/dog:DESCRIPTION", null, "ru-RU"), ru: client.translate("fun/dog:DESCRIPTION", null, "ru-RU"),
}) })
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
}); });
@ -28,7 +38,7 @@ class Dog extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply(); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const res = await fetch("https://dog.ceo/api/breeds/image/random").then(r => r.json()); const res = await fetch("https://dog.ceo/api/breeds/image/random").then(r => r.json());
const dog = res.message; const dog = res.message;

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
fetch = require("node-fetch"); fetch = require("node-fetch");
@ -16,6 +16,7 @@ class LMGTFY extends BaseCommand {
uk: client.translate("fun/lmgtfy:DESCRIPTION", null, "uk-UA"), uk: client.translate("fun/lmgtfy:DESCRIPTION", null, "uk-UA"),
ru: client.translate("fun/lmgtfy:DESCRIPTION", null, "ru-RU"), ru: client.translate("fun/lmgtfy:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -36,6 +37,15 @@ class LMGTFY extends BaseCommand {
ru: client.translate("fun/lmgtfy:SHORT", null, "ru-RU"), ru: client.translate("fun/lmgtfy:SHORT", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -48,7 +58,7 @@ class LMGTFY extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true }); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const query = interaction.options.getString("query").replace(/[' '_]/g, "+"), const query = interaction.options.getString("query").replace(/[' '_]/g, "+"),
short = interaction.options.getBoolean("short"), short = interaction.options.getBoolean("short"),

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
md5 = require("md5"); md5 = require("md5");
@ -16,6 +16,7 @@ class Lovecalc extends BaseCommand {
uk: client.translate("fun/lovecalc:DESCRIPTION", null, "uk-UA"), uk: client.translate("fun/lovecalc:DESCRIPTION", null, "uk-UA"),
ru: client.translate("fun/lovecalc:DESCRIPTION", null, "ru-RU"), ru: client.translate("fun/lovecalc:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, MessageCollector, ButtonBuilder, ActionRowBuilder, ButtonStyle, ThreadAutoArchiveDuration, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, MessageCollector, ButtonBuilder, ActionRowBuilder, ButtonStyle, ThreadAutoArchiveDuration, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
currentGames = {}; currentGames = {};
@ -16,7 +16,8 @@ class Number extends BaseCommand {
uk: client.translate("fun/number:DESCRIPTION", null, "uk-UA"), uk: client.translate("fun/number:DESCRIPTION", null, "uk-UA"),
ru: client.translate("fun/number:DESCRIPTION", null, "ru-RU"), ru: client.translate("fun/number:DESCRIPTION", null, "ru-RU"),
}) })
.setContexts([InteractionContextType.Guild, InteractionContextType.PrivateChannel]), .setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
}); });

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
tictactoe = require("../../helpers/tictactoe"); tictactoe = require("../../helpers/tictactoe");
@ -16,6 +16,7 @@ class TicTacToe extends BaseCommand {
uk: client.translate("fun/tictactoe:DESCRIPTION", null, "uk-UA"), uk: client.translate("fun/tictactoe:DESCRIPTION", null, "uk-UA"),
ru: client.translate("fun/tictactoe:DESCRIPTION", null, "ru-RU"), ru: client.translate("fun/tictactoe:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.Guild, InteractionContextType.PrivateChannel]) .setContexts([InteractionContextType.Guild, InteractionContextType.PrivateChannel])
.addUserOption(option => .addUserOption(option =>
option option
@ -38,13 +39,13 @@ class TicTacToe extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
tictactoe(interaction, { const winner = await tictactoe(interaction, {
resultBtn: true, resultBtn: true,
embedColor: client.config.embed.color, embedColor: client.config.embed.color,
embedFoot: client.config.embed.footer, embedFoot: client.config.embed.footer,
}).then(async winner => { });
const memberData = await client.getMemberData(winner.id, interaction.guildId);
const memberData = await client.getMemberData(winner.id, interaction.guildId);
memberData.money += 100; memberData.money += 100;
const info = { const info = {
@ -57,7 +58,6 @@ class TicTacToe extends BaseCommand {
memberData.transactions.push(info); memberData.transactions.push(info);
await memberData.save(); await memberData.save();
});
} }
} }

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType, escapeEscape, escapeCodeBlock, escapeInlineCode } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Afk extends BaseCommand { class Afk extends BaseCommand {
@ -15,6 +15,7 @@ class Afk extends BaseCommand {
uk: client.translate("general/afk:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/afk:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/afk:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/afk:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -25,6 +26,15 @@ class Afk extends BaseCommand {
ru: client.translate("common:MESSAGE", null, "ru-RU"), ru: client.translate("common:MESSAGE", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -37,17 +47,19 @@ class Afk extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true }); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const userData = interaction.data.user, const userData = interaction.data.user,
reason = interaction.options.getString("message"); message = interaction.options.getString("message");
userData.afk = reason; if (message.length > 150) return interaction.error("misc:MAX_150_CHARS", null, { edit: true });
userData.afk = escapeEscape(escapeCodeBlock(escapeInlineCode(message))).replace("@", "@\u200b");
await userData.save(); await userData.save();
interaction.success("general/afk:SUCCESS", { interaction.success("general/afk:SUCCESS", {
reason, message,
}, { edit: true }); }, { edit: true });
} }
} }

View file

@ -1,4 +1,4 @@
const { ContextMenuCommandBuilder, ApplicationCommandType, InteractionContextType } = require("discord.js"); const { ContextMenuCommandBuilder, ApplicationCommandType, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class AvatarContext extends BaseCommand { class AvatarContext extends BaseCommand {
@ -11,6 +11,7 @@ class AvatarContext extends BaseCommand {
command: new ContextMenuCommandBuilder() command: new ContextMenuCommandBuilder()
.setName("Get Avatar") .setName("Get Avatar")
.setType(ApplicationCommandType.User) .setType(ApplicationCommandType.User)
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Avatar extends BaseCommand { class Avatar extends BaseCommand {
@ -15,6 +15,7 @@ class Avatar extends BaseCommand {
uk: client.translate("general/avatar:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/avatar:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/avatar:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/avatar:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option
@ -33,6 +34,15 @@ class Avatar extends BaseCommand {
uk: client.translate("general/avatar:SERVER", null, "uk-UA"), uk: client.translate("general/avatar:SERVER", null, "uk-UA"),
ru: client.translate("general/avatar:SERVER", null, "ru-RU"), ru: client.translate("general/avatar:SERVER", null, "ru-RU"),
}), }),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -45,11 +55,13 @@ class Avatar extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const user = interaction.options.getUser("user") || interaction.user; const user = interaction.options.getUser("user") || interaction.user;
const avatarURL = interaction.options.getBoolean("server") ? user.displayAvatarURL({ size: 2048 }) : user.avatarURL({ size: 2048 }); const avatarURL = interaction.options.getBoolean("server") ? user.displayAvatarURL({ size: 2048 }) : user.avatarURL({ size: 2048 });
const embed = client.embed({ image: avatarURL }); const embed = client.embed({ image: avatarURL });
interaction.reply({ interaction.editReply({
embeds: [embed], embeds: [embed],
}); });
} }

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Boosters extends BaseCommand { class Boosters extends BaseCommand {
@ -15,6 +15,7 @@ class Boosters extends BaseCommand {
uk: client.translate("general/boosters:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/boosters:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/boosters:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/boosters:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]), .setContexts([InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, parseEmoji, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, parseEmoji, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Emoji extends BaseCommand { class Emoji extends BaseCommand {
@ -15,6 +15,7 @@ class Emoji extends BaseCommand {
uk: client.translate("general/emoji:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/emoji:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/emoji:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/emoji:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -25,6 +26,15 @@ class Emoji extends BaseCommand {
ru: client.translate("common:EMOJI", null, "ru-RU"), ru: client.translate("common:EMOJI", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -37,9 +47,10 @@ class Emoji extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const rawEmoji = interaction.options.getString("emoji"); const rawEmoji = interaction.options.getString("emoji");
const parsedEmoji = parseEmoji(rawEmoji); const parsedEmoji = parseEmoji(rawEmoji);
const embed = client.embed({ const embed = client.embed({
author: { author: {
name: interaction.translate("general/emoji:TITLE", { name: interaction.translate("general/emoji:TITLE", {
@ -66,7 +77,7 @@ class Emoji extends BaseCommand {
], ],
}); });
interaction.reply({ interaction.editReply({
embeds: [embed], embeds: [embed],
}); });
} }

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, StringSelectMenuBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, ActionRowBuilder, StringSelectMenuBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Help extends BaseCommand { class Help extends BaseCommand {
@ -15,6 +15,7 @@ class Help extends BaseCommand {
uk: client.translate("general/help:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/help:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/help:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/help:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -25,6 +26,15 @@ class Help extends BaseCommand {
ru: client.translate("common:COMMAND", null, "ru-RU"), ru: client.translate("common:COMMAND", null, "ru-RU"),
}) })
.setAutocomplete(true), .setAutocomplete(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -80,7 +90,7 @@ class Help extends BaseCommand {
* @param {Object} data * @param {Object} data
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply(); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const commands = [...new Map(client.commands.map(v => [v.constructor.name, v])).values()]; const commands = [...new Map(client.commands.map(v => [v.constructor.name, v])).values()];
const categories = [... new Set(commands.map(c => c.category))]; const categories = [... new Set(commands.map(c => c.category))];

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ChannelType, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, ChannelType, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Info extends BaseCommand { class Info extends BaseCommand {
@ -15,6 +15,7 @@ class Info extends BaseCommand {
uk: client.translate("general/info:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/info:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/info:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/info:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
gamedig = require("gamedig"); gamedig = require("gamedig");
@ -16,6 +16,7 @@ class Minecraft extends BaseCommand {
uk: client.translate("general/minecraft:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/minecraft:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/minecraft:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/minecraft:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -26,6 +27,15 @@ class Minecraft extends BaseCommand {
ru: client.translate("common:IP", null, "ru-RU"), ru: client.translate("common:IP", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -38,7 +48,7 @@ class Minecraft extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply(); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const ip = interaction.options.getString("ip"); const ip = interaction.options.getString("ip");
const options = { const options = {

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Ping extends BaseCommand { class Ping extends BaseCommand {
@ -15,7 +15,17 @@ class Ping extends BaseCommand {
uk: client.translate("general/ping:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/ping:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/ping:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/ping:DESCRIPTION", null, "ru-RU"),
}) })
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
}); });
@ -27,6 +37,8 @@ class Ping extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const embed = client.embed({ const embed = client.embed({
author: { author: {
name: interaction.translate("general/ping:PONG"), name: interaction.translate("general/ping:PONG"),
@ -36,7 +48,7 @@ class Ping extends BaseCommand {
}), }),
}); });
interaction.reply({ interaction.editReply({
embeds: [embed], embeds: [embed],
}); });
} }

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
ms = require("ms"); ms = require("ms");
@ -16,6 +16,7 @@ class Remindme extends BaseCommand {
uk: client.translate("general/remindme:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/remindme:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/remindme:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/remindme:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -36,6 +37,15 @@ class Remindme extends BaseCommand {
ru: client.translate("common:MESSAGE", null, "ru-RU"), ru: client.translate("common:MESSAGE", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -48,7 +58,13 @@ class Remindme extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true }); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const conditions = ["s", "m", "h", "d", "w", "y"],
time = interaction.options.getString("time"),
message = interaction.options.getString("message");
if (!conditions.some(s => time.includes(s))) return interaction.error("general/remindme:TIME", null, { edit: true });
const userData = interaction.data.user; const userData = interaction.data.user;
@ -57,9 +73,9 @@ class Remindme extends BaseCommand {
const dateNow = Date.now(); const dateNow = Date.now();
const reminder = { const reminder = {
message: interaction.options.getString("message"), message: message,
createdAt: Math.floor(dateNow / 1000), createdAt: Math.floor(dateNow / 1000),
sendAt: Math.floor((dateNow + ms(interaction.options.getString("time"))) / 1000), sendAt: Math.floor((dateNow + ms(time)) / 1000),
}; };
userData.reminds.push(reminder); userData.reminds.push(reminder);

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Reminds extends BaseCommand { class Reminds extends BaseCommand {
@ -15,7 +15,17 @@ class Reminds extends BaseCommand {
uk: client.translate("general/reminds:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/reminds:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/reminds:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/reminds:DESCRIPTION", null, "ru-RU"),
}) })
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
}); });
@ -160,7 +170,7 @@ class Reminds extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true }); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const reminds = interaction.data.user.reminds; const reminds = interaction.data.user.reminds;
if (reminds.length === 0) return interaction.error("general/reminds:NO_REMINDS", null, { edit: true }); if (reminds.length === 0) return interaction.error("general/reminds:NO_REMINDS", null, { edit: true });

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, parseEmoji, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, parseEmoji, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Report extends BaseCommand { class Report extends BaseCommand {
@ -15,6 +15,7 @@ class Report extends BaseCommand {
uk: client.translate("general/report:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/report:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/report:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/report:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addUserOption(option => .addUserOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
fetch = require("node-fetch"); fetch = require("node-fetch");
@ -16,6 +16,7 @@ class Shorturl extends BaseCommand {
uk: client.translate("general/shorturl:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/shorturl:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/shorturl:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/shorturl:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -26,6 +27,15 @@ class Shorturl extends BaseCommand {
ru: client.translate("common:URL", null, "ru-RU"), ru: client.translate("common:URL", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -38,7 +48,7 @@ class Shorturl extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true }); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const url = interaction.options.getString("url"); const url = interaction.options.getString("url");
const res = await fetch("https://i.jonnybro.ru/api/shorten", { const res = await fetch("https://i.jonnybro.ru/api/shorten", {

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, version: discordJsVersion, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, version: discordJsVersion, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Stats extends BaseCommand { class Stats extends BaseCommand {
@ -15,7 +15,17 @@ class Stats extends BaseCommand {
uk: client.translate("general/stats:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/stats:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/stats:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/stats:DESCRIPTION", null, "ru-RU"),
}) })
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
}); });
@ -27,6 +37,8 @@ class Stats extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const servers = client.guilds.cache.size; const servers = client.guilds.cache.size;
let users = 0; let users = 0;
client.guilds.cache.forEach(g => { client.guilds.cache.forEach(g => {
@ -88,7 +100,7 @@ class Stats extends BaseCommand {
], ],
}); });
interaction.reply({ interaction.editReply({
embeds: [embed], embeds: [embed],
}); });
} }

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, parseEmoji, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, parseEmoji, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Suggest extends BaseCommand { class Suggest extends BaseCommand {
@ -15,6 +15,7 @@ class Suggest extends BaseCommand {
uk: client.translate("general/suggest:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/suggest:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/suggest:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/suggest:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
fetch = require("node-fetch"); fetch = require("node-fetch");
@ -16,6 +16,7 @@ class Whois extends BaseCommand {
uk: client.translate("general/whois:DESCRIPTION", null, "uk-UA"), uk: client.translate("general/whois:DESCRIPTION", null, "uk-UA"),
ru: client.translate("general/whois:DESCRIPTION", null, "ru-RU"), ru: client.translate("general/whois:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -26,6 +27,15 @@ class Whois extends BaseCommand {
ru: client.translate("common:IP", null, "ru-RU"), ru: client.translate("common:IP", null, "ru-RU"),
}) })
.setRequired(true), .setRequired(true),
)
.addBooleanOption(option =>
option
.setName("ephemeral")
.setDescription(client.translate("misc:EPHEMERAL_RESPONSE"))
.setDescriptionLocalizations({
uk: client.translate("misc:EPHEMERAL_RESPONSE", null, "uk-UA"),
ru: client.translate("misc:EPHEMERAL_RESPONSE", null, "ru-RU"),
}),
), ),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -38,12 +48,12 @@ class Whois extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply(); await interaction.deferReply({ ephemeral: interaction.options.getBoolean("ephemeral") || false });
const ip = interaction.options.getString("ip"), const ip = interaction.options.getString("ip"),
whois = await fetch(`http://ip-api.com/json/${ip}?fields=status,message,continent,continentCode,country,countryCode,region,regionName,city,zip,timezone,currency,isp,org,as,mobile,proxy,hosting,query`).then(response => response.json()); whois = await fetch(`http://ip-api.com/json/${ip}?fields=status,message,continent,continentCode,country,countryCode,region,regionName,city,zip,timezone,currency,isp,org,as,mobile,proxy,hosting,query`).then(response => response.json());
if (whois.status === "fail") return interaction.editReply({ content: interaction.translate("general/whois:ERROR", { ip }) }); if (whois.status === "fail") return interaction.error("general/whois:ERROR", { ip }, { edit: true });
const embed = client.embed({ const embed = client.embed({
title: interaction.translate("general/whois:INFO_ABOUT", { title: interaction.translate("general/whois:INFO_ABOUT", {

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
fetch = require("node-fetch"), fetch = require("node-fetch"),
moment = require("moment"); moment = require("moment");
@ -17,6 +17,7 @@ class Checkjar extends BaseCommand {
uk: client.translate("iat/checkjar:DESCRIPTION", null, "uk-UA"), uk: client.translate("iat/checkjar:DESCRIPTION", null, "uk-UA"),
ru: client.translate("iat/checkjar:DESCRIPTION", null, "ru-RU"), ru: client.translate("iat/checkjar:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]), .setContexts([InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Clear extends BaseCommand { class Clear extends BaseCommand {
@ -15,6 +15,7 @@ class Clear extends BaseCommand {
uk: client.translate("moderation/clear:DESCRIPTION", null, "uk-UA"), uk: client.translate("moderation/clear:DESCRIPTION", null, "uk-UA"),
ru: client.translate("moderation/clear:DESCRIPTION", null, "ru-RU"), ru: client.translate("moderation/clear:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages)
.addStringOption(option => .addStringOption(option =>
@ -117,7 +118,7 @@ class Clear extends BaseCommand {
} }
}); });
} else { } else {
if (isNaN(option) || parseInt(option) < 1) return interaction.error("misc:OPTION_NAN_ALL", null, { ephemeral: true }); if (isNaN(option) || parseInt(option) < 1) return interaction.error("misc:OPTION_NAN_ALL", null, { edit: true });
let messages = await interaction.channel.messages.fetch({ limit: option }); let messages = await interaction.channel.messages.fetch({ limit: option });

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Clearwarns extends BaseCommand { class Clearwarns extends BaseCommand {
@ -15,6 +15,7 @@ class Clearwarns extends BaseCommand {
uk: client.translate("moderation/clearwarns:DESCRIPTION", null, "uk-UA"), uk: client.translate("moderation/clearwarns:DESCRIPTION", null, "uk-UA"),
ru: client.translate("moderation/clearwarns:DESCRIPTION", null, "ru-RU"), ru: client.translate("moderation/clearwarns:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages)
.addUserOption(option => .addUserOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
ms = require("ms"); ms = require("ms");
@ -16,6 +16,7 @@ class Giveaway extends BaseCommand {
uk: client.translate("moderation/giveaway:DESCRIPTION", null, "uk-UA"), uk: client.translate("moderation/giveaway:DESCRIPTION", null, "uk-UA"),
ru: client.translate("moderation/giveaway:DESCRIPTION", null, "ru-RU"), ru: client.translate("moderation/giveaway:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages)
.addSubcommand(subcommand => .addSubcommand(subcommand =>

View file

@ -1,119 +0,0 @@
const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, PermissionsBitField, parseEmoji, InteractionContextType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand");
class Poll extends BaseCommand {
/**
*
* @param {import("../../base/Client")} client
*/
constructor(client) {
super({
command: new SlashCommandBuilder()
.setName("poll")
.setDescription(client.translate("moderation/poll:DESCRIPTION"))
.setDescriptionLocalizations({
uk: client.translate("moderation/poll:DESCRIPTION", null, "uk-UA"),
ru: client.translate("moderation/poll:DESCRIPTION", null, "ru-RU"),
})
.setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages)
.addStringOption(option =>
option
.setName("question")
.setDescription(client.translate("moderation/poll:QUESTION"))
.setDescriptionLocalizations({
uk: client.translate("moderation/poll:QUESTION", null, "uk-UA"),
ru: client.translate("moderation/poll:QUESTION", null, "ru-RU"),
})
.setRequired(true),
),
dirname: __dirname,
ownerOnly: false,
});
}
/**
*
* @param {import("../../base/Client")} client
* @param {import("discord.js").ChatInputCommandInteraction} interaction
*/
async execute(client, interaction) {
const question = interaction.options.getString("question");
const row = new ActionRowBuilder().addComponents(
new ButtonBuilder().setCustomId("poll_everyone").setLabel("@everyone").setStyle(ButtonStyle.Primary),
new ButtonBuilder().setCustomId("poll_here").setLabel("@here").setStyle(ButtonStyle.Primary),
new ButtonBuilder().setCustomId("poll_nothing").setLabel(interaction.translate("moderation/poll:NOTHING")).setStyle(ButtonStyle.Primary),
new ButtonBuilder().setCustomId("poll_cancel").setLabel(interaction.translate("common:CANCEL")).setStyle(ButtonStyle.Danger),
);
await interaction.reply({
content: interaction.translate("moderation/poll:SELECT_MENTION"),
ephemeral: true,
components: [row],
});
let mention = null;
const filter = i => i.user.id === interaction.user.id;
const collector = interaction.channel.createMessageComponentCollector({ filter, idle: 15 * 1000 });
collector.on("collect", async i => {
if (i.isButton()) {
if (i.customId === "poll_everyone") {
mention = "||@everyone||";
i.update({
content: interaction.translate("moderation/poll:POLL_SENDED"),
components: [],
});
} else if (i.customId === "poll_here") {
mention = "||@here||";
i.update({
content: interaction.translate("moderation/poll:POLL_SENDED"),
components: [],
});
} else if (i.customId === "poll_nothing") {
mention = null;
i.update({
content: interaction.translate("moderation/poll:POLL_SENDED"),
components: [],
});
} else if (i.customId === "poll_cancel") {
return i.update({
content: interaction.translate("misc:SELECT_CANCELED"),
components: [],
});
}
const cool = parseEmoji(client.customEmojis.cool).id;
const notcool = parseEmoji(client.customEmojis.notcool).id;
const embed = client.embed({
author: interaction.translate("moderation/poll:TITLE"),
fields: [
{
name: "\u200B",
value: question,
},
{
name: "\u200B",
value: interaction.translate("moderation/poll:REACT", {
success: cool.toString(),
error: notcool.toString(),
}),
},
],
});
return interaction.channel.send({
content: mention,
embeds: [embed],
}).then(async m => {
await m.react(cool);
await m.react(notcool);
});
}
});
}
}
module.exports = Poll;

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Unban extends BaseCommand { class Unban extends BaseCommand {
@ -15,6 +15,7 @@ class Unban extends BaseCommand {
uk: client.translate("moderation/unban:DESCRIPTION", null, "uk-UA"), uk: client.translate("moderation/unban:DESCRIPTION", null, "uk-UA"),
ru: client.translate("moderation/unban:DESCRIPTION", null, "ru-RU"), ru: client.translate("moderation/unban:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages)
.addStringOption(option => .addStringOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Ban extends BaseCommand { class Ban extends BaseCommand {
@ -15,6 +15,7 @@ class Ban extends BaseCommand {
uk: client.translate("moderation/untimeout:DESCRIPTION", null, "uk-UA"), uk: client.translate("moderation/untimeout:DESCRIPTION", null, "uk-UA"),
ru: client.translate("moderation/untimeout:DESCRIPTION", null, "ru-RU"), ru: client.translate("moderation/untimeout:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ModerateMembers) .setDefaultMemberPermissions(PermissionsBitField.Flags.ModerateMembers)
.addUserOption(option => .addUserOption(option =>

View file

@ -1,4 +1,4 @@
const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, ApplicationCommandType, PermissionsBitField, TextInputStyle, InteractionContextType } = require("discord.js"); const { ContextMenuCommandBuilder, ModalBuilder, ActionRowBuilder, TextInputBuilder, ApplicationCommandType, PermissionsBitField, TextInputStyle, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class WarnContext extends BaseCommand { class WarnContext extends BaseCommand {
@ -11,6 +11,7 @@ class WarnContext extends BaseCommand {
command: new ContextMenuCommandBuilder() command: new ContextMenuCommandBuilder()
.setName("Give Warn") .setName("Give Warn")
.setType(ApplicationCommandType.User) .setType(ApplicationCommandType.User)
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages), .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages),
dirname: __dirname, dirname: __dirname,
@ -66,11 +67,6 @@ class WarnContext extends BaseCommand {
if (submitted) { if (submitted) {
const reason = submitted.fields.getTextInputValue("warn_reason"); const reason = submitted.fields.getTextInputValue("warn_reason");
// const sanctions = memberData.sanctions.filter(s => s.type === "warn").length;
// const banCount = data.guildData.plugins.warnsSanctions.ban;
// const kickCount = data.guildData.plugins.warnsSanctions.kick;
const caseInfo = { const caseInfo = {
moderator: interaction.member.id, moderator: interaction.member.id,
date: Date.now(), date: Date.now(),
@ -97,67 +93,6 @@ class WarnContext extends BaseCommand {
], ],
}); });
/*
if (banCount) {
if (sanctions >= banCount) {
member.send({
content: interaction.translate("moderation/ban:BANNED_DM", {
user: member.user,
moderator: interaction.user.getUsername(),
server: interaction.guild.name,
reason,
}),
});
caseInfo.type = "ban";
embed
.setAuthor({
name: interaction.translate("moderation/warn:BAN"),
})
.setColor(client.config.embed.color);
interaction.guild.members.ban(member).catch(() => {});
interaction.followUp({
content: interaction.translate("moderation/setwarns:AUTO_BAN", {
user: member.user.getUsername(),
count: `${banCount} ${client.functions.getNoun(banCount, interaction.translate("misc:NOUNS:WARNS:1"), interaction.translate("misc:NOUNS:WARNS:2"), interaction.translate("misc:NOUNS:WARNS:5"))}`,
}),
});
}
}
if (kickCount) {
if (sanctions >= kickCount) {
member.send({
content: interaction.translate("moderation/kick:KICKED_DM", {
user: member.user,
moderator: interaction.user.getUsername(),
server: interaction.guild.name,
reason,
}),
});
caseInfo.type = "kick";
embed
.setAuthor({
name: interaction.translate("moderation/warn:KICK"),
})
.setColor(client.config.embed.color);
member.kick().catch(() => {});
interaction.followUp({
content: interaction.translate("moderation/setwarns:AUTO_KICK", {
user: member.user.getUsername(),
count: `${kickCount} ${client.functions.getNoun(kickCount, interaction.translate("misc:NOUNS:WARNS:1"), interaction.translate("misc:NOUNS:WARNS:2"), interaction.translate("misc:NOUNS:WARNS:5"))}`,
}),
});
}
} */
try { try {
await member.send({ await member.send({
content: interaction.translate("moderation/warn:WARNED_DM", { content: interaction.translate("moderation/warn:WARNED_DM", {

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Warns extends BaseCommand { class Warns extends BaseCommand {
@ -15,6 +15,7 @@ class Warns extends BaseCommand {
uk: client.translate("moderation/warns:DESCRIPTION", null, "uk-UA"), uk: client.translate("moderation/warns:DESCRIPTION", null, "uk-UA"),
ru: client.translate("moderation/warns:DESCRIPTION", null, "ru-RU"), ru: client.translate("moderation/warns:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages)
.addUserOption(option => .addUserOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Back extends BaseCommand { class Back extends BaseCommand {
@ -15,6 +15,7 @@ class Back extends BaseCommand {
uk: client.translate("music/back:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/back:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/back:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/back:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"), const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js"),
{ QueryType } = require("discord-player"); { QueryType } = require("discord-player");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
fs = require("fs"); fs = require("fs");
@ -17,6 +17,7 @@ class Clips extends BaseCommand {
uk: client.translate("music/clips:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/clips:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/clips:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/clips:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"), const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js"),
{ QueueRepeatMode } = require("discord-player"); { QueueRepeatMode } = require("discord-player");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
@ -16,6 +16,7 @@ class Loop extends BaseCommand {
uk: client.translate("music/loop:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/loop:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/loop:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/loop:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, StringSelectMenuBuilder, StringSelectMenuOptionBuilder, InteractionContextType } = require("discord.js"), const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, StringSelectMenuBuilder, StringSelectMenuOptionBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js"),
{ QueueRepeatMode } = require("discord-player"); { QueueRepeatMode } = require("discord-player");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
@ -16,6 +16,7 @@ class Nowplaying extends BaseCommand {
uk: client.translate("music/nowplaying:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/nowplaying:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/nowplaying:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/nowplaying:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { ContextMenuCommandBuilder, ApplicationCommandType, PermissionsBitField, InteractionContextType } = require("discord.js"); const { ContextMenuCommandBuilder, ApplicationCommandType, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class PlayContext extends BaseCommand { class PlayContext extends BaseCommand {
@ -11,6 +11,7 @@ class PlayContext extends BaseCommand {
command: new ContextMenuCommandBuilder() command: new ContextMenuCommandBuilder()
.setName("Add to Queue") .setName("Add to Queue")
.setType(ApplicationCommandType.Message) .setType(ApplicationCommandType.Message)
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"), const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js"),
{ QueryType } = require("discord-player"); { QueryType } = require("discord-player");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
@ -16,6 +16,7 @@ class Play extends BaseCommand {
uk: client.translate("music/play:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/play:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/play:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/play:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, StringSelectMenuBuilder, StringSelectMenuOptionBuilder, ButtonBuilder, ButtonStyle, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, ActionRowBuilder, StringSelectMenuBuilder, StringSelectMenuOptionBuilder, ButtonBuilder, ButtonStyle, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Queue extends BaseCommand { class Queue extends BaseCommand {
@ -15,6 +15,7 @@ class Queue extends BaseCommand {
uk: client.translate("music/queue:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/queue:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/queue:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/queue:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Seek extends BaseCommand { class Seek extends BaseCommand {
@ -15,6 +15,7 @@ class Seek extends BaseCommand {
uk: client.translate("music/seek:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/seek:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/seek:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/seek:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addIntegerOption(option => .addIntegerOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Shuffle extends BaseCommand { class Shuffle extends BaseCommand {
@ -15,6 +15,7 @@ class Shuffle extends BaseCommand {
uk: client.translate("music/shuffle:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/shuffle:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/shuffle:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/shuffle:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Skip extends BaseCommand { class Skip extends BaseCommand {
@ -15,6 +15,7 @@ class Skip extends BaseCommand {
uk: client.translate("music/skip:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/skip:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/skip:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/skip:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addIntegerOption(option => .addIntegerOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Stop extends BaseCommand { class Stop extends BaseCommand {
@ -15,6 +15,7 @@ class Stop extends BaseCommand {
uk: client.translate("music/stop:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/stop:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/stop:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/stop:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Volume extends BaseCommand { class Volume extends BaseCommand {
@ -15,6 +15,7 @@ class Volume extends BaseCommand {
uk: client.translate("music/volume:DESCRIPTION", null, "uk-UA"), uk: client.translate("music/volume:DESCRIPTION", null, "uk-UA"),
ru: client.translate("music/volume:DESCRIPTION", null, "ru-RU"), ru: client.translate("music/volume:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addIntegerOption(option => .addIntegerOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, StringSelectMenuBuilder, AttachmentBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, ActionRowBuilder, StringSelectMenuBuilder, AttachmentBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
fetch = require("node-fetch"); fetch = require("node-fetch");
@ -16,6 +16,7 @@ class NSFW extends BaseCommand {
uk: client.translate("nsfw/nsfw:DESCRIPTION", null, "uk-UA"), uk: client.translate("nsfw/nsfw:DESCRIPTION", null, "uk-UA"),
ru: client.translate("nsfw/nsfw:DESCRIPTION", null, "ru-RU"), ru: client.translate("nsfw/nsfw:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Debug extends BaseCommand { class Debug extends BaseCommand {
@ -15,6 +15,7 @@ class Debug extends BaseCommand {
uk: client.translate("owner/debug:DESCRIPTION", null, "uk-UA"), uk: client.translate("owner/debug:DESCRIPTION", null, "uk-UA"),
ru: client.translate("owner/debug:DESCRIPTION", null, "ru-RU"), ru: client.translate("owner/debug:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Eval extends BaseCommand { class Eval extends BaseCommand {
@ -15,6 +15,7 @@ class Eval extends BaseCommand {
uk: client.translate("owner/eval:DESCRIPTION", null, "uk-UA"), uk: client.translate("owner/eval:DESCRIPTION", null, "uk-UA"),
ru: client.translate("owner/eval:DESCRIPTION", null, "ru-RU"), ru: client.translate("owner/eval:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
i18next = require("i18next"); i18next = require("i18next");
// autoUpdateDocs = require("../../helpers/autoUpdateDocs"); // autoUpdateDocs = require("../../helpers/autoUpdateDocs");
@ -17,6 +17,7 @@ class Reload extends BaseCommand {
uk: client.translate("owner/reload:DESCRIPTION", null, "uk-UA"), uk: client.translate("owner/reload:DESCRIPTION", null, "uk-UA"),
ru: client.translate("owner/reload:DESCRIPTION", null, "ru-RU"), ru: client.translate("owner/reload:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]) .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option
@ -40,6 +41,8 @@ class Reload extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true });
const command = interaction.options.getString("command"), const command = interaction.options.getString("command"),
cmd = client.commands.get(command); cmd = client.commands.get(command);
if (!cmd) return interaction.error("owner/reload:NOT_FOUND", { command }, { ephemeral: true }); if (!cmd) return interaction.error("owner/reload:NOT_FOUND", { command }, { ephemeral: true });
@ -53,7 +56,7 @@ class Reload extends BaseCommand {
interaction.success("owner/reload:SUCCESS", { interaction.success("owner/reload:SUCCESS", {
command: cmd.command.name, command: cmd.command.name,
}, { ephemeral: true }); }, { edit: true });
} }
/** /**

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Say extends BaseCommand { class Say extends BaseCommand {
@ -15,6 +15,7 @@ class Say extends BaseCommand {
uk: client.translate("owner/say:DESCRIPTION", null, "uk-UA"), uk: client.translate("owner/say:DESCRIPTION", null, "uk-UA"),
ru: client.translate("owner/say:DESCRIPTION", null, "ru-RU"), ru: client.translate("owner/say:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.addStringOption(option => .addStringOption(option =>
option option

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class Servers extends BaseCommand { class Servers extends BaseCommand {
@ -15,6 +15,7 @@ class Servers extends BaseCommand {
uk: client.translate("owner/servers:DESCRIPTION", null, "uk-UA"), uk: client.translate("owner/servers:DESCRIPTION", null, "uk-UA"),
ru: client.translate("owner/servers:DESCRIPTION", null, "ru-RU"), ru: client.translate("owner/servers:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall])
.setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]), .setContexts([InteractionContextType.BotDM, InteractionContextType.PrivateChannel, InteractionContextType.Guild]),
dirname: __dirname, dirname: __dirname,
ownerOnly: true, ownerOnly: true,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class AddUser extends BaseCommand { class AddUser extends BaseCommand {
@ -15,6 +15,7 @@ class AddUser extends BaseCommand {
uk: client.translate("tickets/adduser:DESCRIPTION", null, "uk-UA"), uk: client.translate("tickets/adduser:DESCRIPTION", null, "uk-UA"),
ru: client.translate("tickets/adduser:DESCRIPTION", null, "ru-RU"), ru: client.translate("tickets/adduser:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages)
.addUserOption(option => .addUserOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, ButtonBuilder, ButtonStyle, ActionRowBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, ButtonBuilder, ButtonStyle, ActionRowBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class CloseTicket extends BaseCommand { class CloseTicket extends BaseCommand {
@ -15,6 +15,7 @@ class CloseTicket extends BaseCommand {
uk: client.translate("tickets/closeticket:DESCRIPTION", null, "uk-UA"), uk: client.translate("tickets/closeticket:DESCRIPTION", null, "uk-UA"),
ru: client.translate("tickets/closeticket:DESCRIPTION", null, "ru-RU"), ru: client.translate("tickets/closeticket:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages), .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages),
dirname: __dirname, dirname: __dirname,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, ButtonBuilder, ButtonStyle, ActionRowBuilder, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, ButtonBuilder, ButtonStyle, ActionRowBuilder, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class CreateTicketEmbed extends BaseCommand { class CreateTicketEmbed extends BaseCommand {
@ -15,6 +15,7 @@ class CreateTicketEmbed extends BaseCommand {
uk: client.translate("tickets/createticketembed:DESCRIPTION", null, "uk-UA"), uk: client.translate("tickets/createticketembed:DESCRIPTION", null, "uk-UA"),
ru: client.translate("tickets/createticketembed:DESCRIPTION", null, "ru-RU"), ru: client.translate("tickets/createticketembed:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild), .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageGuild),
dirname: __dirname, dirname: __dirname,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, PermissionsBitField, InteractionContextType } = require("discord.js"); const { SlashCommandBuilder, PermissionsBitField, InteractionContextType, ApplicationIntegrationType } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand");
class RemoveUser extends BaseCommand { class RemoveUser extends BaseCommand {
@ -15,6 +15,7 @@ class RemoveUser extends BaseCommand {
uk: client.translate("tickets/removeuser:DESCRIPTION", null, "uk-UA"), uk: client.translate("tickets/removeuser:DESCRIPTION", null, "uk-UA"),
ru: client.translate("tickets/removeuser:DESCRIPTION", null, "ru-RU"), ru: client.translate("tickets/removeuser:DESCRIPTION", null, "ru-RU"),
}) })
.setIntegrationTypes([ApplicationIntegrationType.GuildInstall])
.setContexts([InteractionContextType.Guild]) .setContexts([InteractionContextType.Guild])
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages) .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages)
.addUserOption(option => .addUserOption(option =>

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, InteractionType } = require("discord.js"); const { InteractionType } = require("discord.js");
const BaseEvent = require("../base/BaseEvent"); const BaseEvent = require("../base/BaseEvent");
class CommandHandler extends BaseEvent { class CommandHandler extends BaseEvent {

View file

@ -108,7 +108,7 @@ class MessageCreate extends BaseEvent {
message.mentions.users.forEach(async u => { message.mentions.users.forEach(async u => {
const userData = await client.getUserData(u.id); const userData = await client.getUserData(u.id);
if (userData.afk) message.replyT("general/afk:IS_AFK", { user: u.getUsername(), reason: userData.afk }, { ephemeral: true }); if (userData.afk) message.replyT("general/afk:IS_AFK", { user: u.getUsername(), message: userData.afk }, { ephemeral: true });
}); });
} }

View file

@ -22,6 +22,7 @@ const { ButtonBuilder, ActionRowBuilder, ButtonStyle, ComponentType } = require(
* oEmoji => (Emoji ID) String * oEmoji => (Emoji ID) String
* *
* idleEmoji => (Emoji ID) String * idleEmoji => (Emoji ID) String
* @returns {Promise<import("discord.js").User>}
*/ */
async function tictactoe(interaction, options = {}) { async function tictactoe(interaction, options = {}) {
// eslint-disable-next-line no-async-promise-executor // eslint-disable-next-line no-async-promise-executor
@ -256,8 +257,8 @@ async function tictactoe(interaction, options = {}) {
if (won["<:O_:863314110560993340>"] != false) if (won["<:O_:863314110560993340>"] != false)
if (Args.user == 0) { if (Args.user == 0) {
const wonner = await client.users.fetch(fighters[1]).catch(console.error); const won = await client.users.fetch(fighters[1]).catch(console.error);
resolve(wonner); resolve(won);
if (options.resultBtn === true) if (options.resultBtn === true)
return m return m
@ -308,8 +309,8 @@ async function tictactoe(interaction, options = {}) {
m.react("⭕"); m.react("⭕");
}); });
} else if (Args.user == 1) { } else if (Args.user == 1) {
const wonner = await client.users.fetch(fighters[0]).catch(console.error); const won = await client.users.fetch(fighters[0]).catch(console.error);
resolve(wonner); resolve(won);
if (options.resultBtn === true) if (options.resultBtn === true)
return m return m
@ -370,8 +371,8 @@ async function tictactoe(interaction, options = {}) {
if (Args.c1.emoji == x_emoji && Args.c2.emoji == x_emoji && Args.c3.emoji == x_emoji) won["<:X_:863314044781723668>"] = true; if (Args.c1.emoji == x_emoji && Args.c2.emoji == x_emoji && Args.c3.emoji == x_emoji) won["<:X_:863314044781723668>"] = true;
if (won["<:X_:863314044781723668>"] != false) if (won["<:X_:863314044781723668>"] != false)
if (Args.user == 0) { if (Args.user == 0) {
const wonner = await client.users.fetch(fighters[1]).catch(console.error); const won = await client.users.fetch(fighters[1]).catch(console.error);
resolve(wonner); resolve(won);
if (options.resultBtn === true) if (options.resultBtn === true)
return m return m
@ -420,8 +421,8 @@ async function tictactoe(interaction, options = {}) {
m.react("❌"); m.react("❌");
}); });
} else if (Args.user == 1) { } else if (Args.user == 1) {
const wonner = await client.users.fetch(fighters[0]).catch(console.error); const won = await client.users.fetch(fighters[0]).catch(console.error);
resolve(wonner); resolve(won);
if (options.resultBtn === true) if (options.resultBtn === true)
return m return m

View file

@ -2,6 +2,5 @@
"DESCRIPTION": "Sets your bio", "DESCRIPTION": "Sets your bio",
"USAGE": "[text]", "USAGE": "[text]",
"EXAMPLES": "setbio text:My name is Johnny :shock:", "EXAMPLES": "setbio text:My name is Johnny :shock:",
"MAX_CHARACTERS": "Your bio should not exceed 150 characters",
"SUCCESS": "Your bio has been changed" "SUCCESS": "Your bio has been changed"
} }

View file

@ -2,7 +2,7 @@
"DESCRIPTION": "Sets AFK status (users who mention you will receive a message)", "DESCRIPTION": "Sets AFK status (users who mention you will receive a message)",
"USAGE": "[message]", "USAGE": "[message]",
"EXAMPLES": "afk message:I'm busy =)", "EXAMPLES": "afk message:I'm busy =)",
"SUCCESS": "You are now AFK with the reason: **{{reason}}**", "SUCCESS": "You are now AFK with the reason: **{{message}}**",
"DELETED": "**{{user}}**, your AFK status has been removed", "DELETED": "**{{user}}**, your AFK status has been removed",
"IS_AFK": "**{{user}}** is currently AFK, reason:\n```{{reason}}```" "IS_AFK": "**{{user}}** is currently AFK, reason:\n```{{message}}```"
} }

View file

@ -2,11 +2,13 @@
"BOT_USER": "You can't use this command on bots.", "BOT_USER": "You can't use this command on bots.",
"CANT_YOURSELF": "You can't use this command on yourself.", "CANT_YOURSELF": "You can't use this command on yourself.",
"CANT_DM": "I cannot DM you. Please check your privacy settings.", "CANT_DM": "I cannot DM you. Please check your privacy settings.",
"EPHEMERAL_RESPONSE": "Make bot's response ephemeral?",
"FORCE_STOP": "The game has been forcibly ended, {{user}}, nobody won (the number was {{number}}).", "FORCE_STOP": "The game has been forcibly ended, {{user}}, nobody won (the number was {{number}}).",
"LEVEL_UP": "You have reached the next level! Your new level is: **{{level}}**", "LEVEL_UP": "You have reached the next level! Your new level is: **{{level}}**",
"GUILD_ONLY": "This command can only be used on a server.", "GUILD_ONLY": "This command can only be used on a server.",
"HELLO_SERVER": "Hello! All my commands are available through **/**. Use </help:1029832476077596773> to get a list of commands.", "HELLO_SERVER": "Hello! All my commands are available through **/**. Use </help:1029832476077596773> to get a list of commands.",
"INVALID_NUMBER_RANGE": "Please specify a number between **{{min}}** and **{{max}}**.", "INVALID_NUMBER_RANGE": "Please specify a number between **{{min}}** and **{{max}}**.",
"MAX_150_CHARS": "No more than 150 characters!",
"MORE_THAN_ZERO": "Please specify an integer greater than 0.", "MORE_THAN_ZERO": "Please specify an integer greater than 0.",
"NO_ARGS": "No arguments required.", "NO_ARGS": "No arguments required.",
"NSFW_COMMAND": "This command can only be used in an NSFW channel.", "NSFW_COMMAND": "This command can only be used in an NSFW channel.",

View file

@ -1,11 +0,0 @@
{
"DESCRIPTION": "Starts a poll in the current channel",
"USAGE": "[question]",
"EXAMPLES": "poll question:Is the Earth flat?",
"QUESTION": "Question text",
"NOTHING": "No mention",
"SELECT_MENTION": "Select a mention:",
"POLL_SENDED": "Poll sent",
"REACT": "React with {{success}} or {{error}}!",
"TITLE": "📊 Poll:"
}

View file

@ -2,6 +2,5 @@
"DESCRIPTION": "Установить биографию", "DESCRIPTION": "Установить биографию",
"USAGE": "[text]", "USAGE": "[text]",
"EXAMPLES": "setbio text:Меня зовут Жоня :shock:", "EXAMPLES": "setbio text:Меня зовут Жоня :shock:",
"MAX_CHARACTERS": "Ваша биография не должна превышать 150 символов",
"SUCCESS": "Ваша биография изменена" "SUCCESS": "Ваша биография изменена"
} }

View file

@ -2,7 +2,7 @@
"DESCRIPTION": "Установить AFK статус (пользователь который упомянет вас получит сообщение)", "DESCRIPTION": "Установить AFK статус (пользователь который упомянет вас получит сообщение)",
"USAGE": "[message]", "USAGE": "[message]",
"EXAMPLES": "afk message:Сру =)", "EXAMPLES": "afk message:Сру =)",
"SUCCESS": "Теперь вы AFK по причине: **{{reason}}**", "SUCCESS": "Теперь вы AFK по причине: **{{message}}**",
"DELETED": "**{{user}}**, ваш AFK статус удалён", "DELETED": "**{{user}}**, ваш AFK статус удалён",
"IS_AFK": "**{{user}}** сейчас AFK, причина:\n```{{reason}}```" "IS_AFK": "**{{user}}** сейчас AFK, причина:\n```{{message}}```"
} }

View file

@ -2,7 +2,7 @@
"DESCRIPTION": "Создать напоминание", "DESCRIPTION": "Создать напоминание",
"USAGE": "[time] [message]", "USAGE": "[time] [message]",
"EXAMPLES": "remindme time:12h message:Использовать команду work\nremindme time:5m message:Достать курицу из морозилки!", "EXAMPLES": "remindme time:12h message:Использовать команду work\nremindme time:5m message:Достать курицу из морозилки!",
"TIME": "Время (Например: 10s, 5m, 2h, 1d, 3w)", "TIME": "Время (Например: 59s, 2m, 4h, 5d, 3w, 1y)",
"EMBED_SAVED": "Напоминание сохранено!", "EMBED_SAVED": "Напоминание сохранено!",
"EMBED_TIME": "Сохранено на", "EMBED_TIME": "Сохранено на",
"EMBED_TITLE": "Напоминание", "EMBED_TITLE": "Напоминание",

View file

@ -2,11 +2,13 @@
"BOT_USER": "Вы не можете использовать эту команду на боте", "BOT_USER": "Вы не можете использовать эту команду на боте",
"CANT_YOURSELF": "Вы не можете использовать эту команду на себе", "CANT_YOURSELF": "Вы не можете использовать эту команду на себе",
"CANT_DM": "Я не могу отправить Вам личное сообщение, проверьте настройки конфиденциальности", "CANT_DM": "Я не могу отправить Вам личное сообщение, проверьте настройки конфиденциальности",
"EPHEMERAL_RESPONSE": "Сделать ответ временным?",
"FORCE_STOP": "Игра принудительно окончена {{user}}, никто не победил (загаданное число - {{number}})", "FORCE_STOP": "Игра принудительно окончена {{user}}, никто не победил (загаданное число - {{number}})",
"LEVEL_UP": "Вы достигли следующего уровня! Ваш новый уровень: **{{level}}**", "LEVEL_UP": "Вы достигли следующего уровня! Ваш новый уровень: **{{level}}**",
"GUILD_ONLY": "Данную команду можно использовать только на сервере", "GUILD_ONLY": "Данную команду можно использовать только на сервере",
"HELLO_SERVER": "Привет! Все мои команды доступны через **/** Используйте </help:1029832476077596773>, чтобы получить список команд", "HELLO_SERVER": "Привет! Все мои команды доступны через **/** Используйте </help:1029832476077596773>, чтобы получить список команд",
"INVALID_NUMBER_RANGE": "Укажите число от **{{min}}** до **{{max}}**", "INVALID_NUMBER_RANGE": "Укажите число от **{{min}}** до **{{max}}**",
"MAX_150_CHARS": "Не больше 150 знаков!",
"MORE_THAN_ZERO": "Укажите целое число больше 0", "MORE_THAN_ZERO": "Укажите целое число больше 0",
"NO_ARGS": "Агрументы не требуются", "NO_ARGS": "Агрументы не требуются",
"NSFW_COMMAND": "Данную команду можно использовать только в NSFW канале", "NSFW_COMMAND": "Данную команду можно использовать только в NSFW канале",

View file

@ -1,11 +0,0 @@
{
"DESCRIPTION": "Запустить опрос в текущем канале",
"USAGE": "[question]",
"EXAMPLES": "poll question:Земля плоская?",
"QUESTION": "Текст вопроса",
"NOTHING": "Без упоминания",
"SELECT_MENTION": "Выберите упоминание:",
"POLL_SENDED": "Опрос отправлен",
"REACT": "Отреагируйте {{success}} или {{error}}!",
"TITLE": "📊 Опрос:"
}

View file

@ -2,6 +2,5 @@
"DESCRIPTION": "Встановити біографію", "DESCRIPTION": "Встановити біографію",
"USAGE": "[text]", "USAGE": "[text]",
"EXAMPLES": "setbio text:Мене звуть Жоня :shock:", "EXAMPLES": "setbio text:Мене звуть Жоня :shock:",
"MAX_CHARACTERS": "Ваша біографія не повинна перевищувати 150 символів",
"SUCCESS": "Ваша біографія змінена" "SUCCESS": "Ваша біографія змінена"
} }

View file

@ -2,7 +2,7 @@
"DESCRIPTION": "Встановити статус AFK (користувач, який згадає вас отримає повідомлення)", "DESCRIPTION": "Встановити статус AFK (користувач, який згадає вас отримає повідомлення)",
"USAGE": "[message]", "USAGE": "[message]",
"EXAMPLES": "afk message:Пісяю =)", "EXAMPLES": "afk message:Пісяю =)",
"SUCCESS": "Тепер ви AFK через: **{{reason}}**", "SUCCESS": "Тепер ви AFK через: **{{message}}**",
"DELETED": "**{{user}}**, ваш статус AFK видалено", "DELETED": "**{{user}}**, ваш статус AFK видалено",
"IS_AFK": "**{{user}}** зараз AFK, причина:\n```{{reason}}```" "IS_AFK": "**{{user}}** зараз AFK, причина:\n```{{message}}```"
} }

View file

@ -2,11 +2,13 @@
"BOT_USER": "Ви не можете використовувати цю команду на роботі", "BOT_USER": "Ви не можете використовувати цю команду на роботі",
"CANT_YOURSELF": "Ви не можете використовувати цю команду на собі", "CANT_YOURSELF": "Ви не можете використовувати цю команду на собі",
"CANT_DM": "Я не можу надіслати Вам особисте повідомлення, перевірте налаштування конфіденційності", "CANT_DM": "Я не можу надіслати Вам особисте повідомлення, перевірте налаштування конфіденційності",
"EPHEMERAL_RESPONSE": "Зробити відповідь тимчасовою?",
"FORCE_STOP": "Гра примусово закінчена, {{user}}, ніхто не переміг (загадане число - {{number}})", "FORCE_STOP": "Гра примусово закінчена, {{user}}, ніхто не переміг (загадане число - {{number}})",
"LEVEL_UP": "Ви досягли наступного рівня! Ваш новий рівень: **{{level}}**", "LEVEL_UP": "Ви досягли наступного рівня! Ваш новий рівень: **{{level}}**",
"GUILD_ONLY": "Цю команду можна використовувати лише на сервері", "GUILD_ONLY": "Цю команду можна використовувати лише на сервері",
"HELLO_SERVER": "Привіт! Всі мої команди доступні через **/** Використовуйте </help:1029832476077596773>, щоб отримати список команд", "HELLO_SERVER": "Привіт! Всі мої команди доступні через **/** Використовуйте </help:1029832476077596773>, щоб отримати список команд",
"INVALID_NUMBER_RANGE": "Вкажіть число від **{{min}}** до **{{max}}**", "INVALID_NUMBER_RANGE": "Вкажіть число від **{{min}}** до **{{max}}**",
"MAX_150_CHARS": "Не більше 150 знаків!",
"MORE_THAN_ZERO": "Вкажіть ціле число більше 0", "MORE_THAN_ZERO": "Вкажіть ціле число більше 0",
"NO_ARGS": "Агрументи не потрібні", "NO_ARGS": "Агрументи не потрібні",
"NSFW_COMMAND": "Цю команду можна використовувати тільки в NSFW каналі", "NSFW_COMMAND": "Цю команду можна використовувати тільки в NSFW каналі",

View file

@ -1,11 +0,0 @@
{
"DESCRIPTION": "Запустити опитування в поточному каналі",
"USAGE": "[question]",
"EXAMPLES": "poll question:Земля плоска?",
"QUESTION": "Текст питання",
"NOTHING": "Без згадки",
"SELECT_MENTION": "Виберіть згадку:",
"POLL_SENDED": "Опитування надіслано",
"REACT": "Відреагуйте {{success}} або {{error}}!",
"TITLE": "📊 Опитування:"
}

View file

@ -1,6 +1,6 @@
{ {
"name": "jaba", "name": "jaba",
"version": "4.6.5", "version": "4.6.6",
"description": "My Discord Bot", "description": "My Discord Bot",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -30,7 +30,7 @@
"node-fetch": "^2.7.0" "node-fetch": "^2.7.0"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^9.10.0" "eslint": "^8.57.1"
}, },
"eslintConfig": { "eslintConfig": {
"extends": "eslint:recommended", "extends": "eslint:recommended",

View file

@ -70,8 +70,8 @@ importers:
version: 2.7.0 version: 2.7.0
devDependencies: devDependencies:
eslint: eslint:
specifier: ^9.10.0 specifier: ^8.57.1
version: 9.10.0 version: 8.57.1
packages: packages:
@ -144,37 +144,30 @@ packages:
resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
'@eslint/config-array@0.18.0': '@eslint/eslintrc@2.1.4':
resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@eslint/eslintrc@3.1.0': '@eslint/js@8.57.1':
resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@eslint/js@9.10.0':
resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.4':
resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/plugin-kit@0.1.0':
resolution: {integrity: sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@fastify/busboy@2.1.1': '@fastify/busboy@2.1.1':
resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
engines: {node: '>=14'} engines: {node: '>=14'}
'@humanwhocodes/config-array@0.13.0':
resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
engines: {node: '>=10.10.0'}
deprecated: Use @eslint/config-array instead
'@humanwhocodes/module-importer@1.0.1': '@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'} engines: {node: '>=12.22'}
'@humanwhocodes/retry@0.3.0': '@humanwhocodes/object-schema@2.0.3':
resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
engines: {node: '>=18.18'} deprecated: Use @eslint/object-schema instead
'@mongodb-js/saslprep@1.1.9': '@mongodb-js/saslprep@1.1.9':
resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==} resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==}
@ -299,6 +292,9 @@ packages:
'@types/ws@8.5.12': '@types/ws@8.5.12':
resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==}
'@ungap/structured-clone@1.2.0':
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
'@vladfrangu/async_event_emitter@2.4.6': '@vladfrangu/async_event_emitter@2.4.6':
resolution: {integrity: sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==} resolution: {integrity: sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==}
engines: {node: '>=v14.0.0', npm: '>=7.0.0'} engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
@ -509,6 +505,10 @@ packages:
resolution: {integrity: sha512-VGNi9WE2dZIxYM8/r/iatQQ+3LT8STW4hhczJOwm+DBeHq66vsKDCk8trChNCB01sMO9crslYuEMeZl2d7r3xw==} resolution: {integrity: sha512-VGNi9WE2dZIxYM8/r/iatQQ+3LT8STW4hhczJOwm+DBeHq66vsKDCk8trChNCB01sMO9crslYuEMeZl2d7r3xw==}
engines: {node: '>=18'} engines: {node: '>=18'}
doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
dom-serializer@1.4.1: dom-serializer@1.4.1:
resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
@ -549,31 +549,22 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'} engines: {node: '>=10'}
eslint-scope@8.0.2: eslint-scope@7.2.2:
resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint-visitor-keys@3.4.3: eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint-visitor-keys@4.0.0: eslint@8.57.1:
resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint@9.10.0:
resolution: {integrity: sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true hasBin: true
peerDependencies:
jiti: '*'
peerDependenciesMeta:
jiti:
optional: true
espree@10.1.0: espree@9.6.1:
resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
esquery@1.6.0: esquery@1.6.0:
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
@ -611,9 +602,9 @@ packages:
resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
engines: {node: ^12.20 || >= 14.13} engines: {node: ^12.20 || >= 14.13}
file-entry-cache@8.0.0: file-entry-cache@6.0.1:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: '>=16.0.0'} engines: {node: ^10.12.0 || >=12.0.0}
file-type@16.5.4: file-type@16.5.4:
resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==}
@ -623,9 +614,9 @@ packages:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'} engines: {node: '>=10'}
flat-cache@4.0.1: flat-cache@3.2.0:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
engines: {node: '>=16'} engines: {node: ^10.12.0 || >=12.0.0}
flatted@3.3.1: flatted@3.3.1:
resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
@ -677,14 +668,17 @@ packages:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported deprecated: Glob versions prior to v9 are no longer supported
globals@14.0.0: globals@13.24.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=18'} engines: {node: '>=8'}
got@12.1.0: got@12.1.0:
resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==} resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==}
engines: {node: '>=14.16'} engines: {node: '>=14.16'}
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
has-flag@4.0.0: has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -1241,6 +1235,10 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
type-fest@0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
undici-types@6.19.8: undici-types@6.19.8:
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
@ -1444,27 +1442,19 @@ snapshots:
- bufferutil - bufferutil
- utf-8-validate - utf-8-validate
'@eslint-community/eslint-utils@4.4.0(eslint@9.10.0)': '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)':
dependencies: dependencies:
eslint: 9.10.0 eslint: 8.57.1
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.11.0': {} '@eslint-community/regexpp@4.11.0': {}
'@eslint/config-array@0.18.0': '@eslint/eslintrc@2.1.4':
dependencies:
'@eslint/object-schema': 2.1.4
debug: 4.3.7
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
'@eslint/eslintrc@3.1.0':
dependencies: dependencies:
ajv: 6.12.6 ajv: 6.12.6
debug: 4.3.7 debug: 4.3.7
espree: 10.1.0 espree: 9.6.1
globals: 14.0.0 globals: 13.24.0
ignore: 5.3.2 ignore: 5.3.2
import-fresh: 3.3.0 import-fresh: 3.3.0
js-yaml: 4.1.0 js-yaml: 4.1.0
@ -1473,19 +1463,21 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@eslint/js@9.10.0': {} '@eslint/js@8.57.1': {}
'@eslint/object-schema@2.1.4': {}
'@eslint/plugin-kit@0.1.0':
dependencies:
levn: 0.4.1
'@fastify/busboy@2.1.1': {} '@fastify/busboy@2.1.1': {}
'@humanwhocodes/config-array@0.13.0':
dependencies:
'@humanwhocodes/object-schema': 2.0.3
debug: 4.3.7
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
'@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/module-importer@1.0.1': {}
'@humanwhocodes/retry@0.3.0': {} '@humanwhocodes/object-schema@2.0.3': {}
'@mongodb-js/saslprep@1.1.9': '@mongodb-js/saslprep@1.1.9':
dependencies: dependencies:
@ -1594,6 +1586,8 @@ snapshots:
dependencies: dependencies:
'@types/node': 22.5.5 '@types/node': 22.5.5
'@ungap/structured-clone@1.2.0': {}
'@vladfrangu/async_event_emitter@2.4.6': {} '@vladfrangu/async_event_emitter@2.4.6': {}
'@web-scrobbler/metadata-filter@3.2.0': {} '@web-scrobbler/metadata-filter@3.2.0': {}
@ -1832,6 +1826,10 @@ snapshots:
- bufferutil - bufferutil
- utf-8-validate - utf-8-validate
doctrine@3.0.0:
dependencies:
esutils: 2.0.3
dom-serializer@1.4.1: dom-serializer@1.4.1:
dependencies: dependencies:
domelementtype: 2.3.0 domelementtype: 2.3.0
@ -1878,45 +1876,47 @@ snapshots:
escape-string-regexp@4.0.0: {} escape-string-regexp@4.0.0: {}
eslint-scope@8.0.2: eslint-scope@7.2.2:
dependencies: dependencies:
esrecurse: 4.3.0 esrecurse: 4.3.0
estraverse: 5.3.0 estraverse: 5.3.0
eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@3.4.3: {}
eslint-visitor-keys@4.0.0: {} eslint@8.57.1:
eslint@9.10.0:
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1)
'@eslint-community/regexpp': 4.11.0 '@eslint-community/regexpp': 4.11.0
'@eslint/config-array': 0.18.0 '@eslint/eslintrc': 2.1.4
'@eslint/eslintrc': 3.1.0 '@eslint/js': 8.57.1
'@eslint/js': 9.10.0 '@humanwhocodes/config-array': 0.13.0
'@eslint/plugin-kit': 0.1.0
'@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.3.0
'@nodelib/fs.walk': 1.2.8 '@nodelib/fs.walk': 1.2.8
'@ungap/structured-clone': 1.2.0
ajv: 6.12.6 ajv: 6.12.6
chalk: 4.1.2 chalk: 4.1.2
cross-spawn: 7.0.3 cross-spawn: 7.0.3
debug: 4.3.7 debug: 4.3.7
doctrine: 3.0.0
escape-string-regexp: 4.0.0 escape-string-regexp: 4.0.0
eslint-scope: 8.0.2 eslint-scope: 7.2.2
eslint-visitor-keys: 4.0.0 eslint-visitor-keys: 3.4.3
espree: 10.1.0 espree: 9.6.1
esquery: 1.6.0 esquery: 1.6.0
esutils: 2.0.3 esutils: 2.0.3
fast-deep-equal: 3.1.3 fast-deep-equal: 3.1.3
file-entry-cache: 8.0.0 file-entry-cache: 6.0.1
find-up: 5.0.0 find-up: 5.0.0
glob-parent: 6.0.2 glob-parent: 6.0.2
globals: 13.24.0
graphemer: 1.4.0
ignore: 5.3.2 ignore: 5.3.2
imurmurhash: 0.1.4 imurmurhash: 0.1.4
is-glob: 4.0.3 is-glob: 4.0.3
is-path-inside: 3.0.3 is-path-inside: 3.0.3
js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1 json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2 lodash.merge: 4.6.2
minimatch: 3.1.2 minimatch: 3.1.2
natural-compare: 1.4.0 natural-compare: 1.4.0
@ -1926,11 +1926,11 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
espree@10.1.0: espree@9.6.1:
dependencies: dependencies:
acorn: 8.12.1 acorn: 8.12.1
acorn-jsx: 5.3.2(acorn@8.12.1) acorn-jsx: 5.3.2(acorn@8.12.1)
eslint-visitor-keys: 4.0.0 eslint-visitor-keys: 3.4.3
esquery@1.6.0: esquery@1.6.0:
dependencies: dependencies:
@ -1961,9 +1961,9 @@ snapshots:
node-domexception: 1.0.0 node-domexception: 1.0.0
web-streams-polyfill: 3.3.3 web-streams-polyfill: 3.3.3
file-entry-cache@8.0.0: file-entry-cache@6.0.1:
dependencies: dependencies:
flat-cache: 4.0.1 flat-cache: 3.2.0
file-type@16.5.4: file-type@16.5.4:
dependencies: dependencies:
@ -1976,10 +1976,11 @@ snapshots:
locate-path: 6.0.0 locate-path: 6.0.0
path-exists: 4.0.0 path-exists: 4.0.0
flat-cache@4.0.1: flat-cache@3.2.0:
dependencies: dependencies:
flatted: 3.3.1 flatted: 3.3.1
keyv: 4.5.4 keyv: 4.5.4
rimraf: 3.0.2
flatted@3.3.1: {} flatted@3.3.1: {}
@ -2051,7 +2052,9 @@ snapshots:
once: 1.4.0 once: 1.4.0
path-is-absolute: 1.0.1 path-is-absolute: 1.0.1
globals@14.0.0: {} globals@13.24.0:
dependencies:
type-fest: 0.20.2
got@12.1.0: got@12.1.0:
dependencies: dependencies:
@ -2069,6 +2072,8 @@ snapshots:
p-cancelable: 3.0.0 p-cancelable: 3.0.0
responselike: 2.0.1 responselike: 2.0.1
graphemer@1.4.0: {}
has-flag@4.0.0: {} has-flag@4.0.0: {}
has-unicode@2.0.1: {} has-unicode@2.0.1: {}
@ -2569,6 +2574,8 @@ snapshots:
dependencies: dependencies:
prelude-ls: 1.2.1 prelude-ls: 1.2.1
type-fest@0.20.2: {}
undici-types@6.19.8: {} undici-types@6.19.8: {}
undici@5.28.4: undici@5.28.4: