diff --git a/src/commands/Alert.ts b/src/commands/Alert.ts index c451fe9..7d704f0 100644 --- a/src/commands/Alert.ts +++ b/src/commands/Alert.ts @@ -19,22 +19,20 @@ export default { await interaction.deferReply({ ephemeral: true }) try { - await interaction.followUp(`Отправка уведомления`); - if (!message) { - await interaction.editReply(`Ошибка отправки уведомления`); + await interaction.followUp(`Ошибка отправки уведомления`); return } const status = await ecoManager.Alert(message) if (!!status && !status.Errored) { - await interaction.editReply("Уведомление отправлено") + await interaction.followUp("Уведомление отправлено") } else { - await interaction.editReply("Ошибка отправки уведомления") + await interaction.followUp("Ошибка отправки уведомления") } return } catch (error) { - await interaction.editReply("Ошибка отправки уведомления") + await interaction.followUp("Ошибка отправки уведомления") console.log(error) } }, diff --git a/src/commands/Exec.ts b/src/commands/Exec.ts index 986fb0c..6497c4f 100644 --- a/src/commands/Exec.ts +++ b/src/commands/Exec.ts @@ -1,7 +1,9 @@ import { CacheType, ChatInputCommandInteraction, Message, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js'; import ConfigManager from '../controller/ConfigManager'; import EcoManager from '../controller/EcoManager'; +import { Pagination } from "pagination.djs" +// const { Pagination } = require('pagination.djs'); // const adminPermissions = new PermissionsBitField('Administrator'); @@ -11,7 +13,7 @@ export default { .setDescription('Exec command') .addStringOption(opt => opt.setName("command").setDescription("Command").setRequired(true)) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), - async execute(interaction: ChatInputCommandInteraction, config: ConfigManager) { + async execute(interaction: ChatInputCommandInteraction<"cached">, config: ConfigManager) { const ecoManager = new EcoManager(config) const command = interaction.options.getString('command') @@ -20,25 +22,39 @@ export default { try { if (!command) { - await interaction.followUp(`Ошибка выполнения команды.`); + await interaction.followUp(`Ошибка выполнения команды. 0`); return } const status = await ecoManager.Exec(command) + + const pagination = new Pagination(interaction) + pagination.setLimit(20) + if (!!status && !status.Errored) { if (status.CommandMessages.filter(e => e.Type === "Notifications-Chat").length > 0) { - await interaction.followUp(status.CommandMessages.filter(e => e.Type === "Notifications-Chat")[0].Message) + if (status.CommandMessages.filter(e => e.Type === "Notifications-Chat")[0].Message.length <= 2000) + await interaction.followUp(status.CommandMessages.filter(e => e.Type === "Notifications-Chat")[0].Message.substring(0, 2000) || "Команда выполнена") + else { + pagination.setDescriptions(status.CommandMessages.filter(e => e.Type === "Notifications-Chat")[0].Message.split("\n")) + pagination.render(); + } } else - await interaction.followUp("Команда выполнена.\n" + JSON.stringify(status)) + await interaction.followUp(JSON.stringify(status).substring(0, 2000)) } else { if (!!status && status.CommandMessages.filter(e => e.Type === "Notifications-Chat").length > 0) - await interaction.followUp(status.CommandMessages.filter(e => e.Type === "Notifications-Chat")[0].Message) + if (status.CommandMessages.filter(e => e.Type === "Notifications-Chat")[0].Message.length <= 2000) + await interaction.followUp(status.CommandMessages.filter(e => e.Type === "Notifications-Chat")[0].Message.substring(0, 2000) || "Команда выполнена") + else { + pagination.setDescriptions(status.CommandMessages.filter(e => e.Type === "Notifications-Chat")[0].Message.split("\n")) + pagination.render(); + } else - await interaction.followUp("Ошибка выполнения команды.\n" + JSON.stringify(status)) + await interaction.followUp(JSON.stringify(status).substring(0, 2000)) } return } catch (error) { - await interaction.followUp("Ошибка выполнения команды.") + await interaction.followUp("Ошибка выполнения команды. 1") console.log(error) } }, diff --git a/src/commands/Message.ts b/src/commands/Message.ts index c7b370d..e25c187 100644 --- a/src/commands/Message.ts +++ b/src/commands/Message.ts @@ -23,18 +23,16 @@ export default { await interaction.deferReply({ ephemeral: true }) try { - await interaction.followUp(`Отправка сообщения`); - if (!message || !from || !to) { - await interaction.editReply(`Ошибка отправки сообщения`); + await interaction.followUp(`Ошибка отправки сообщения`); return } const status = await ecoManager.Message(message, from, to) if (!!status && status.Success) { - await interaction.editReply("Сообщение отправлено") + await interaction.followUp("Сообщение отправлено") } else { - await interaction.editReply("Ошибка отправки сообщения") + await interaction.followUp("Ошибка отправки сообщения") } return } catch (error) { diff --git a/src/commands/syncUsers.ts b/src/commands/syncUsers.ts index c65f806..1bca83b 100644 --- a/src/commands/syncUsers.ts +++ b/src/commands/syncUsers.ts @@ -16,16 +16,18 @@ export default { await interaction.deferReply({ ephemeral: true }) try { - await interaction.followUp(`Начало синхронизации`); const sync = await userManager.sync() if (sync) { - await interaction.editReply("Успешно") + await interaction.followUp("Успешно") } else { - await interaction.editReply("Ошибка синхронизации") + await interaction.followUp("Ошибка синхронизации") } return } catch (error) { - await interaction.editReply("Ошибка синхронизации") + if (interaction.replied) + await interaction.editReply("Ошибка синхронизации") + else + await interaction.followUp("Ошибка синхронизации") console.log(error) } }, diff --git a/src/controller/ChatController.ts b/src/controller/ChatController.ts new file mode 100644 index 0000000..9da024e --- /dev/null +++ b/src/controller/ChatController.ts @@ -0,0 +1,53 @@ +import { ActionRowBuilder, ButtonBuilder, ButtonStyle, CacheType, ChatInputCommandInteraction, Message } from "discord.js"; +import ConfigManager from "./ConfigManager"; +import axios from "axios"; +import UserI from "../types/UserI"; +import MessageI from "../types/MessageI"; + +export default class UserManager { + config: ConfigManager + public constructor(config: ConfigManager) { + this.config = config + } + public async getMessages() { + try { + const { data, status } = await axios.get(`${process.env.ECO_API_BASE || "https://eco.kamgames.xyz"}/api/v1/chat`, { + timeout: 5000, + headers: { + "X-API-Key": process.env.ECO_API_KEY + } + }); + + if (status !== 200) return false + + console.log(data) + + return true + } catch (error) { + console.log(error) + } + return false + } + public async syncMessageWithDiscord() { + if (!process.env.CHAT_CHANNEL_ID || !this.config.serverInfo) return false + + try { + const { data, status } = await axios.get(`${process.env.ECO_API_BASE || "https://eco.kamgames.xyz"}/api/v1/chat?startDay=${(this.config.serverInfo.TimeSinceStart / 3600 - 10).toFixed(5)}`, { + timeout: 5000, + headers: { + "X-API-Key": process.env.ECO_API_KEY + } + }); + + if (status !== 200) return false + + console.log(data) + + return true + } catch (error) { + console.log(error) + } + + return false + } +} \ No newline at end of file diff --git a/src/controller/ConfigManager.ts b/src/controller/ConfigManager.ts index d0d4c32..3280abe 100644 --- a/src/controller/ConfigManager.ts +++ b/src/controller/ConfigManager.ts @@ -1,25 +1,36 @@ import path from "path"; import fs from "fs"; import UserI from "../types/UserI"; +import { ServerInfoI } from "../types/ServerInfoI"; +import MessageI from "../types/MessageI"; + +interface ConfigManagerI { + userManager?: { + users: UserI[]; + authCodes: Date[]; + }; + messages?: MessageI[]; + serverInfo?: ServerInfoI; +} export default class ConfigManager { configPath = path.join(process.env.STORAGE || "/app/storage", "config.json") public userManager: { users: UserI[]; - discord: String[]; authCodes: Date[]; } = { users: [], - discord: [], authCodes: [], } + public messages: MessageI[] = [] + public serverInfo?: ServerInfoI = undefined constructor() { this.load() setInterval(() => this.save(), 10000) } save() { - const r = { userManager: this.userManager } + const r: ConfigManagerI = { userManager: this.userManager, messages: this.messages, serverInfo: this.serverInfo } fs.writeFileSync(this.configPath, JSON.stringify(r)) } load() { @@ -28,9 +39,13 @@ export default class ConfigManager { fs.writeFileSync(this.configPath, JSON.stringify(r)) } try { - const t: ConfigManager = JSON.parse(String(fs.readFileSync(this.configPath))) + const t: ConfigManagerI = JSON.parse(String(fs.readFileSync(this.configPath))) if (!!t?.userManager) this.userManager = { ...this.userManager, ...t.userManager } + if (!!t?.messages) + this.messages = t.messages + if (!!t?.serverInfo) + this.serverInfo = t.serverInfo } catch (error) { console.log(error) } diff --git a/src/index.ts b/src/index.ts index 03ceda9..760a6de 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,7 @@ import axios from 'axios'; import ConfigManager from './controller/ConfigManager'; import updateCommands from './updateCommands'; import commands from './commands'; +import { ServerInfoI } from './types/ServerInfoI'; dotenv.config() @@ -31,13 +32,14 @@ client.on('ready', () => { async function updateServerData() { try { - const { data } = await axios.get(`${process.env.ECO_API_BASE || "https://eco.kamgames.xyz"}/info`, { + const { data } = await axios.get(`${process.env.ECO_API_BASE || "https://eco.kamgames.xyz"}/info`, { timeout: 6000, }); client.user?.setActivity({ name: `${data.OnlinePlayers}/${data.TotalPlayers}`, type: ActivityType.Playing }) + config.serverInfo = data } catch (e) { client.user?.setActivity({ name: `Сервер офлайн`, diff --git a/src/types/ServerInfoI.ts b/src/types/ServerInfoI.ts new file mode 100644 index 0000000..5895962 --- /dev/null +++ b/src/types/ServerInfoI.ts @@ -0,0 +1,42 @@ +export interface ServerInfoI { + Id: ID; + External: boolean; + GamePort: number; + WebPort: number; + IsLAN: boolean; + Description: string; + DetailedDescription: string; + Category: string; + OnlinePlayers: number; + TotalPlayers: number; + OnlinePlayersNames: string[]; + AdminOnline: boolean; + TimeSinceStart: number; + TimeLeft: number; + Animals: number; + Plants: number; + Laws: number; + WorldSize: string; + Version: string; + EconomyDesc: string; + SkillSpecializationSetting: string; + Language: string; + HasPassword: boolean; + HasMeteor: boolean; + DistributionStationItems: string; + Playtimes: string; + IsPaused: boolean; + ActiveAndOnlinePlayers: number; + PeakActivePlayers: number; + MaxActivePlayers: number; + ShelfLifeMultiplier: number; + ExhaustionAfterHours: number; + IsLimitingHours: boolean; + ServerAchievements: string[]; + RelayAddress: string; + Access: string; + JoinUrl: string; +} + +export interface ID { +} diff --git a/storage/config.json b/storage/config.json deleted file mode 100644 index aafa801..0000000 --- a/storage/config.json +++ /dev/null @@ -1 +0,0 @@ -{"userManager":{"users":[{"Name":"The Foxon","SlgId":"slg228303","SteamId":"76561198815942994"},{"Name":"New Horizon","SlgId":"1f4c47eb-36d2-40cd-950e-cbca060172bd","SteamId":"1f4c47eb-36d2-40cd-950e-cbca060172bd"},{"Name":"Admin","SlgId":"d6a49268-230a-4e9a-92a7-da38db78f006","SteamId":"d6a49268-230a-4e9a-92a7-da38db78f006"},{"Name":"xxx","SlgId":"bf3b78db-d298-47e3-b695-fa5e7e1398a1","SteamId":"bf3b78db-d298-47e3-b695-fa5e7e1398a1"}],"discord":[],"authCodes":[]}} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 32e8428..1bb0f2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,24 +9,37 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@discordjs/builders@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.4.0.tgz#b951b5e6ce4e459cd06174ce50dbd51c254c1d47" - integrity sha512-nEeTCheTTDw5kO93faM1j8ZJPonAX86qpq/QVoznnSa8WWcCgJpjlu6GylfINTDW6o7zZY0my2SYdxx2mfNwGA== +"@discordjs/builders@^1.6.3": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.6.3.tgz#994b4fe57e77b47096f74bb5a1f664870a930a43" + integrity sha512-CTCh8NqED3iecTNuiz49mwSsrc2iQb4d0MjMdmS/8pb69Y4IlzJ/DIy/p5GFlgOrFbNO2WzMHkWKQSiJ3VNXaw== dependencies: - "@discordjs/util" "^0.1.0" - "@sapphire/shapeshift" "^3.7.1" - discord-api-types "^0.37.20" + "@discordjs/formatters" "^0.3.1" + "@discordjs/util" "^0.3.1" + "@sapphire/shapeshift" "^3.8.2" + discord-api-types "^0.37.41" fast-deep-equal "^3.1.3" - ts-mixer "^6.0.2" - tslib "^2.4.1" + ts-mixer "^6.0.3" + tslib "^2.5.0" "@discordjs/collection@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.3.0.tgz#65bf9674db72f38c25212be562bb28fa0dba6aa3" integrity sha512-ylt2NyZ77bJbRij4h9u/wVy7qYw/aDqQLWnadjvDqW/WoWCxrsX6M3CIw9GVP5xcGCDxsrKj5e0r5evuFYwrKg== -"@discordjs/rest@^1.4.0", "@discordjs/rest@^1.5.0": +"@discordjs/collection@^1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.5.1.tgz#bc7ca557838dc29247bf19860426637f103bc383" + integrity sha512-aWEc9DCf3TMDe9iaJoOnO2+JVAjeRNuRxPZQA6GVvBf+Z3gqUuWYBy2NWh4+5CLYq5uoc3MOvUQ5H5m8CJBqOA== + +"@discordjs/formatters@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@discordjs/formatters/-/formatters-0.3.1.tgz#81393cf25e6e3223361061629752ea727475e842" + integrity sha512-M7X4IGiSeh4znwcRGcs+49B5tBkNDn4k5bmhxJDAUhRxRHTiFAOTVUNQ6yAKySu5jZTnCbSvTYHW3w0rAzV1MA== + dependencies: + discord-api-types "^0.37.41" + +"@discordjs/rest@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-1.5.0.tgz#dc15474ab98cf6f31291bf61bbc72bcf4f30cea2" integrity sha512-lXgNFqHnbmzp5u81W0+frdXN6Etf4EUi8FAPcWpSykKd8hmlWh1xy6BmE0bsJypU1pxohaA8lQCgp70NUI3uzA== @@ -40,11 +53,30 @@ tslib "^2.4.1" undici "^5.13.0" +"@discordjs/rest@^1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-1.7.1.tgz#eeef0e71a37c95fa27962129729b2aa9de8e3752" + integrity sha512-Ofa9UqT0U45G/eX86cURQnX7gzOJLG2oC28VhIk/G6IliYgQF7jFByBJEykPSHE4MxPhqCleYvmsrtfKh1nYmQ== + dependencies: + "@discordjs/collection" "^1.5.1" + "@discordjs/util" "^0.3.0" + "@sapphire/async-queue" "^1.5.0" + "@sapphire/snowflake" "^3.4.2" + discord-api-types "^0.37.41" + file-type "^18.3.0" + tslib "^2.5.0" + undici "^5.22.0" + "@discordjs/util@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-0.1.0.tgz#e42ca1bf407bc6d9adf252877d1b206e32ba369a" integrity sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ== +"@discordjs/util@^0.3.0", "@discordjs/util@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-0.3.1.tgz#4e8737e1dcff7e9f5eccc3116fb44755b65b1e97" + integrity sha512-HxXKYKg7vohx2/OupUN/4Sd02Ev3PBJ5q0gtjdcvXb0ErCva8jNHWfe/v5sU3UKjIB/uxOhc+TDOnhqffj9pRA== + "@discordjs/ws@^0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@discordjs/ws/-/ws-0.6.0.tgz#bd479c65c469552530cc0c54908d6c4722731272" @@ -60,6 +92,21 @@ tslib "^2.4.1" ws "^8.11.0" +"@discordjs/ws@^0.8.3": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@discordjs/ws/-/ws-0.8.3.tgz#77db8d563b731a2198c1b40f63b1ef8d230504f7" + integrity sha512-hcYtppanjHecbdNyCKQNH2I4RP9UrphDgmRgLYrATEQF1oo4sYSve7ZmGsBEXSzH72MO2tBPdWSThunbxUVk0g== + dependencies: + "@discordjs/collection" "^1.5.1" + "@discordjs/rest" "^1.7.1" + "@discordjs/util" "^0.3.1" + "@sapphire/async-queue" "^1.5.0" + "@types/ws" "^8.5.4" + "@vladfrangu/async_event_emitter" "^2.2.1" + discord-api-types "^0.37.41" + tslib "^2.5.0" + ws "^8.13.0" + "@esbuild/android-arm64@0.16.10": version "0.16.10" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.10.tgz#d784d8f13dbef50492ea55456fb50651e4036fbf" @@ -193,10 +240,10 @@ resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.5.0.tgz#2f255a3f186635c4fb5a2381e375d3dfbc5312d8" integrity sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA== -"@sapphire/shapeshift@^3.7.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz#b98dc6a7180f9b38219267917b2e6fa33f9ec656" - integrity sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw== +"@sapphire/shapeshift@^3.8.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.9.2.tgz#a9c12cd51e1bc467619bb56df804450dd14871ac" + integrity sha512-YRbCXWy969oGIdqR/wha62eX8GNHsvyYi0Rfd4rNW6tSVVa8p0ELiMEuOH/k8rgtvRoM+EMV7Csqz77YdwiDpA== dependencies: fast-deep-equal "^3.1.3" lodash "^4.17.21" @@ -206,6 +253,11 @@ resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.3.0.tgz#247413e4d7924a9f508c6a5c8d427e4105ac0fe6" integrity sha512-Hec5N6zEkZuZFLybVKyLFLlcSgYmR6C1/+9NkIhxPwOf6tgX52ndJCSz8ADejmbrNE0VuNCNkpzhRZzenEC9vA== +"@sapphire/snowflake@^3.4.2": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.5.1.tgz#254521c188b49e8b2d4cc048b475fb2b38737fec" + integrity sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA== + "@tokenizer/token@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" @@ -243,11 +295,23 @@ dependencies: "@types/node" "*" +"@types/ws@^8.5.4": + version "8.5.5" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" + integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== + dependencies: + "@types/node" "*" + "@vladfrangu/async_event_emitter@^2.1.2": version "2.1.2" resolved "https://registry.yarnpkg.com/@vladfrangu/async_event_emitter/-/async_event_emitter-2.1.2.tgz#85f04380d474edd1e1e5bd380dee04bc933fe995" integrity sha512-s/L3xf+BPb8EUOcVeqQ1pUwZNaWGl0br/GCCsdui5DTqn8bpGGu1S2JRTO3cyAytWObieetgTzOPuDN8nwNtGA== +"@vladfrangu/async_event_emitter@^2.2.1": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz#84c5a3f8d648842cec5cc649b88df599af32ed88" + integrity sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -387,28 +451,35 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -discord-api-types@^0.37.20, discord-api-types@^0.37.23: +discord-api-types@^0.37.23: version "0.37.24" resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.24.tgz#f3ee0ad6b2b70925b5225f9beac6e24bc4de6e46" integrity sha512-1+Fb4huJCihdbkJLcq2p7nBmtlmAryNwjefT8wwJnL8c7bc7WA87Oaa5mbLe96QvZyfwnwRCDX40H0HhcVV50g== -discord.js@^14.7.1: - version "14.7.1" - resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.7.1.tgz#26079d0ff4d27daf02480a403c456121f0682bd9" - integrity sha512-1FECvqJJjjeYcjSm0IGMnPxLqja/pmG1B0W2l3lUY2Gi4KXiyTeQmU1IxWcbXHn2k+ytP587mMWqva2IA87EbA== +discord-api-types@^0.37.41: + version "0.37.47" + resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.47.tgz#d622d5f5629a71ca2cd534442ae2800844e1888d" + integrity sha512-rNif8IAv6duS2z47BMXq/V9kkrLfkAoiwpFY3sLxxbyKprk065zqf3HLTg4bEoxRSmi+Lhc7yqGDrG8C3j8GFA== + +discord.js@14: + version "14.11.0" + resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.11.0.tgz#6529d49f30d10fc5a9ff8e6796661aa998769afe" + integrity sha512-CkueWYFQ28U38YPR8HgsBR/QT35oPpMbEsTNM30Fs8loBIhnA4s70AwQEoy6JvLcpWWJO7GY0y2BUzZmuBMepQ== dependencies: - "@discordjs/builders" "^1.4.0" - "@discordjs/collection" "^1.3.0" - "@discordjs/rest" "^1.4.0" - "@discordjs/util" "^0.1.0" - "@sapphire/snowflake" "^3.2.2" - "@types/ws" "^8.5.3" - discord-api-types "^0.37.20" + "@discordjs/builders" "^1.6.3" + "@discordjs/collection" "^1.5.1" + "@discordjs/formatters" "^0.3.1" + "@discordjs/rest" "^1.7.1" + "@discordjs/util" "^0.3.1" + "@discordjs/ws" "^0.8.3" + "@sapphire/snowflake" "^3.4.2" + "@types/ws" "^8.5.4" + discord-api-types "^0.37.41" fast-deep-equal "^3.1.3" lodash.snakecase "^4.1.1" - tslib "^2.4.1" - undici "^5.13.0" - ws "^8.11.0" + tslib "^2.5.0" + undici "^5.22.0" + ws "^8.13.0" dotenv@^16.0.3: version "16.0.3" @@ -457,6 +528,15 @@ file-type@^18.0.0: strtok3 "^7.0.0" token-types "^5.0.1" +file-type@^18.3.0: + version "18.5.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-18.5.0.tgz#604a001ba0d32577d4c3fa420ee104d656b914d2" + integrity sha512-yvpl5U868+V6PqXHMmsESpg6unQ5GfnPssl4dxdJudBrr9qy7Fddt7EVX1VLlddFfe8Gj9N7goCZH22FXuSQXQ== + dependencies: + readable-web-to-node-stream "^3.0.2" + strtok3 "^7.0.0" + token-types "^5.0.1" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -611,6 +691,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +pagination.djs@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/pagination.djs/-/pagination.djs-4.0.10.tgz#b487a36de10fd5f89fddea0f9358ae13cfe2cf5e" + integrity sha512-a+ko2x8UdspKHcCkOUZ6IoZ8Ly65tMvrrazl99NOCIjDuy/MpFeBATc4NbH0ywbLlkiJGPnr1HrAW32EW79m8Q== + path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -760,10 +845,10 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -ts-mixer@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.2.tgz#3e4e4bb8daffb24435f6980b15204cb5b287e016" - integrity sha512-zvHx3VM83m2WYCE8XL99uaM7mFwYSkjR2OZti98fabHrwkjsCvgwChda5xctein3xGOyaQhtTeDq/1H/GNvF3A== +ts-mixer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.3.tgz#69bd50f406ff39daa369885b16c77a6194c7cae6" + integrity sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ== ts-node@^10.9.1: version "10.9.1" @@ -789,6 +874,11 @@ tslib@^2.4.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tslib@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + typescript@^4.9.4: version "4.9.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" @@ -806,6 +896,13 @@ undici@^5.13.0: dependencies: busboy "^1.6.0" +undici@^5.22.0: + version "5.22.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.1.tgz#877d512effef2ac8be65e695f3586922e1a57d7b" + integrity sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw== + dependencies: + busboy "^1.6.0" + util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -835,6 +932,11 @@ ws@^8.11.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== +ws@^8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + yarn@^1.22.19: version "1.22.19" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447"