add pagination on long response

This commit is contained in:
The Foxon 2023-07-01 01:31:13 +12:00
parent 09b56bb998
commit f05f7c8f82
10 changed files with 288 additions and 61 deletions

View File

@ -19,22 +19,20 @@ export default {
await interaction.deferReply({ ephemeral: true }) await interaction.deferReply({ ephemeral: true })
try { try {
await interaction.followUp(`Отправка уведомления`);
if (!message) { if (!message) {
await interaction.editReply(`Ошибка отправки уведомления`); await interaction.followUp(`Ошибка отправки уведомления`);
return return
} }
const status = await ecoManager.Alert(message) const status = await ecoManager.Alert(message)
if (!!status && !status.Errored) { if (!!status && !status.Errored) {
await interaction.editReply("Уведомление отправлено") await interaction.followUp("Уведомление отправлено")
} else { } else {
await interaction.editReply("Ошибка отправки уведомления") await interaction.followUp("Ошибка отправки уведомления")
} }
return return
} catch (error) { } catch (error) {
await interaction.editReply("Ошибка отправки уведомления") await interaction.followUp("Ошибка отправки уведомления")
console.log(error) console.log(error)
} }
}, },

View File

@ -1,7 +1,9 @@
import { CacheType, ChatInputCommandInteraction, Message, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js'; import { CacheType, ChatInputCommandInteraction, Message, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js';
import ConfigManager from '../controller/ConfigManager'; import ConfigManager from '../controller/ConfigManager';
import EcoManager from '../controller/EcoManager'; import EcoManager from '../controller/EcoManager';
import { Pagination } from "pagination.djs"
// const { Pagination } = require('pagination.djs');
// const adminPermissions = new PermissionsBitField('Administrator'); // const adminPermissions = new PermissionsBitField('Administrator');
@ -11,7 +13,7 @@ export default {
.setDescription('Exec command') .setDescription('Exec command')
.addStringOption(opt => opt.setName("command").setDescription("Command").setRequired(true)) .addStringOption(opt => opt.setName("command").setDescription("Command").setRequired(true))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator), .setDefaultMemberPermissions(PermissionFlagsBits.Administrator),
async execute(interaction: ChatInputCommandInteraction<CacheType>, config: ConfigManager) { async execute(interaction: ChatInputCommandInteraction<"cached">, config: ConfigManager) {
const ecoManager = new EcoManager(config) const ecoManager = new EcoManager(config)
const command = interaction.options.getString('command') const command = interaction.options.getString('command')
@ -20,25 +22,39 @@ export default {
try { try {
if (!command) { if (!command) {
await interaction.followUp(`Ошибка выполнения команды.`); await interaction.followUp(`Ошибка выполнения команды. 0`);
return return
} }
const status = await ecoManager.Exec(command) const status = await ecoManager.Exec(command)
const pagination = new Pagination(interaction)
pagination.setLimit(20)
if (!!status && !status.Errored) { if (!!status && !status.Errored) {
if (status.CommandMessages.filter(e => e.Type === "Notifications-Chat").length > 0) { 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 } else
await interaction.followUp("Команда выполнена.\n" + JSON.stringify(status)) await interaction.followUp(JSON.stringify(status).substring(0, 2000))
} else { } else {
if (!!status && status.CommandMessages.filter(e => e.Type === "Notifications-Chat").length > 0) 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 else
await interaction.followUp("Ошибка выполнения команды.\n" + JSON.stringify(status)) await interaction.followUp(JSON.stringify(status).substring(0, 2000))
} }
return return
} catch (error) { } catch (error) {
await interaction.followUp("Ошибка выполнения команды.") await interaction.followUp("Ошибка выполнения команды. 1")
console.log(error) console.log(error)
} }
}, },

View File

@ -23,18 +23,16 @@ export default {
await interaction.deferReply({ ephemeral: true }) await interaction.deferReply({ ephemeral: true })
try { try {
await interaction.followUp(`Отправка сообщения`);
if (!message || !from || !to) { if (!message || !from || !to) {
await interaction.editReply(`Ошибка отправки сообщения`); await interaction.followUp(`Ошибка отправки сообщения`);
return return
} }
const status = await ecoManager.Message(message, from, to) const status = await ecoManager.Message(message, from, to)
if (!!status && status.Success) { if (!!status && status.Success) {
await interaction.editReply("Сообщение отправлено") await interaction.followUp("Сообщение отправлено")
} else { } else {
await interaction.editReply("Ошибка отправки сообщения") await interaction.followUp("Ошибка отправки сообщения")
} }
return return
} catch (error) { } catch (error) {

View File

@ -16,16 +16,18 @@ export default {
await interaction.deferReply({ ephemeral: true }) await interaction.deferReply({ ephemeral: true })
try { try {
await interaction.followUp(`Начало синхронизации`);
const sync = await userManager.sync() const sync = await userManager.sync()
if (sync) { if (sync) {
await interaction.editReply("Успешно") await interaction.followUp("Успешно")
} else { } else {
await interaction.editReply("Ошибка синхронизации") await interaction.followUp("Ошибка синхронизации")
} }
return return
} catch (error) { } catch (error) {
if (interaction.replied)
await interaction.editReply("Ошибка синхронизации") await interaction.editReply("Ошибка синхронизации")
else
await interaction.followUp("Ошибка синхронизации")
console.log(error) console.log(error)
} }
}, },

View File

@ -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<MessageI[]>(`${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<MessageI[]>(`${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
}
}

View File

@ -1,25 +1,36 @@
import path from "path"; import path from "path";
import fs from "fs"; import fs from "fs";
import UserI from "../types/UserI"; 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 { export default class ConfigManager {
configPath = path.join(process.env.STORAGE || "/app/storage", "config.json") configPath = path.join(process.env.STORAGE || "/app/storage", "config.json")
public userManager: { public userManager: {
users: UserI[]; users: UserI[];
discord: String[];
authCodes: Date[]; authCodes: Date[];
} = { } = {
users: [], users: [],
discord: [],
authCodes: [], authCodes: [],
} }
public messages: MessageI[] = []
public serverInfo?: ServerInfoI = undefined
constructor() { constructor() {
this.load() this.load()
setInterval(() => this.save(), 10000) setInterval(() => this.save(), 10000)
} }
save() { 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)) fs.writeFileSync(this.configPath, JSON.stringify(r))
} }
load() { load() {
@ -28,9 +39,13 @@ export default class ConfigManager {
fs.writeFileSync(this.configPath, JSON.stringify(r)) fs.writeFileSync(this.configPath, JSON.stringify(r))
} }
try { try {
const t: ConfigManager = JSON.parse(String(fs.readFileSync(this.configPath))) const t: ConfigManagerI = JSON.parse(String(fs.readFileSync(this.configPath)))
if (!!t?.userManager) if (!!t?.userManager)
this.userManager = { ...this.userManager, ...t.userManager } this.userManager = { ...this.userManager, ...t.userManager }
if (!!t?.messages)
this.messages = t.messages
if (!!t?.serverInfo)
this.serverInfo = t.serverInfo
} catch (error) { } catch (error) {
console.log(error) console.log(error)
} }

View File

@ -4,6 +4,7 @@ import axios from 'axios';
import ConfigManager from './controller/ConfigManager'; import ConfigManager from './controller/ConfigManager';
import updateCommands from './updateCommands'; import updateCommands from './updateCommands';
import commands from './commands'; import commands from './commands';
import { ServerInfoI } from './types/ServerInfoI';
dotenv.config() dotenv.config()
@ -31,13 +32,14 @@ client.on('ready', () => {
async function updateServerData() { async function updateServerData() {
try { try {
const { data } = await axios.get<any>(`${process.env.ECO_API_BASE || "https://eco.kamgames.xyz"}/info`, { const { data } = await axios.get<ServerInfoI>(`${process.env.ECO_API_BASE || "https://eco.kamgames.xyz"}/info`, {
timeout: 6000, timeout: 6000,
}); });
client.user?.setActivity({ client.user?.setActivity({
name: `${data.OnlinePlayers}/${data.TotalPlayers}`, name: `${data.OnlinePlayers}/${data.TotalPlayers}`,
type: ActivityType.Playing type: ActivityType.Playing
}) })
config.serverInfo = data
} catch (e) { } catch (e) {
client.user?.setActivity({ client.user?.setActivity({
name: `Сервер офлайн`, name: `Сервер офлайн`,

42
src/types/ServerInfoI.ts Normal file
View File

@ -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 {
}

View File

@ -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":[]}}

168
yarn.lock
View File

@ -9,24 +9,37 @@
dependencies: dependencies:
"@jridgewell/trace-mapping" "0.3.9" "@jridgewell/trace-mapping" "0.3.9"
"@discordjs/builders@^1.4.0": "@discordjs/builders@^1.6.3":
version "1.4.0" version "1.6.3"
resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.4.0.tgz#b951b5e6ce4e459cd06174ce50dbd51c254c1d47" resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.6.3.tgz#994b4fe57e77b47096f74bb5a1f664870a930a43"
integrity sha512-nEeTCheTTDw5kO93faM1j8ZJPonAX86qpq/QVoznnSa8WWcCgJpjlu6GylfINTDW6o7zZY0my2SYdxx2mfNwGA== integrity sha512-CTCh8NqED3iecTNuiz49mwSsrc2iQb4d0MjMdmS/8pb69Y4IlzJ/DIy/p5GFlgOrFbNO2WzMHkWKQSiJ3VNXaw==
dependencies: dependencies:
"@discordjs/util" "^0.1.0" "@discordjs/formatters" "^0.3.1"
"@sapphire/shapeshift" "^3.7.1" "@discordjs/util" "^0.3.1"
discord-api-types "^0.37.20" "@sapphire/shapeshift" "^3.8.2"
discord-api-types "^0.37.41"
fast-deep-equal "^3.1.3" fast-deep-equal "^3.1.3"
ts-mixer "^6.0.2" ts-mixer "^6.0.3"
tslib "^2.4.1" tslib "^2.5.0"
"@discordjs/collection@^1.3.0": "@discordjs/collection@^1.3.0":
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.3.0.tgz#65bf9674db72f38c25212be562bb28fa0dba6aa3" resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.3.0.tgz#65bf9674db72f38c25212be562bb28fa0dba6aa3"
integrity sha512-ylt2NyZ77bJbRij4h9u/wVy7qYw/aDqQLWnadjvDqW/WoWCxrsX6M3CIw9GVP5xcGCDxsrKj5e0r5evuFYwrKg== 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" version "1.5.0"
resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-1.5.0.tgz#dc15474ab98cf6f31291bf61bbc72bcf4f30cea2" resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-1.5.0.tgz#dc15474ab98cf6f31291bf61bbc72bcf4f30cea2"
integrity sha512-lXgNFqHnbmzp5u81W0+frdXN6Etf4EUi8FAPcWpSykKd8hmlWh1xy6BmE0bsJypU1pxohaA8lQCgp70NUI3uzA== integrity sha512-lXgNFqHnbmzp5u81W0+frdXN6Etf4EUi8FAPcWpSykKd8hmlWh1xy6BmE0bsJypU1pxohaA8lQCgp70NUI3uzA==
@ -40,11 +53,30 @@
tslib "^2.4.1" tslib "^2.4.1"
undici "^5.13.0" 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": "@discordjs/util@^0.1.0":
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-0.1.0.tgz#e42ca1bf407bc6d9adf252877d1b206e32ba369a" resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-0.1.0.tgz#e42ca1bf407bc6d9adf252877d1b206e32ba369a"
integrity sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ== 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": "@discordjs/ws@^0.6.0":
version "0.6.0" version "0.6.0"
resolved "https://registry.yarnpkg.com/@discordjs/ws/-/ws-0.6.0.tgz#bd479c65c469552530cc0c54908d6c4722731272" resolved "https://registry.yarnpkg.com/@discordjs/ws/-/ws-0.6.0.tgz#bd479c65c469552530cc0c54908d6c4722731272"
@ -60,6 +92,21 @@
tslib "^2.4.1" tslib "^2.4.1"
ws "^8.11.0" 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": "@esbuild/android-arm64@0.16.10":
version "0.16.10" version "0.16.10"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.10.tgz#d784d8f13dbef50492ea55456fb50651e4036fbf" 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" resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.5.0.tgz#2f255a3f186635c4fb5a2381e375d3dfbc5312d8"
integrity sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA== integrity sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==
"@sapphire/shapeshift@^3.7.1": "@sapphire/shapeshift@^3.8.2":
version "3.8.1" version "3.9.2"
resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz#b98dc6a7180f9b38219267917b2e6fa33f9ec656" resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.9.2.tgz#a9c12cd51e1bc467619bb56df804450dd14871ac"
integrity sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw== integrity sha512-YRbCXWy969oGIdqR/wha62eX8GNHsvyYi0Rfd4rNW6tSVVa8p0ELiMEuOH/k8rgtvRoM+EMV7Csqz77YdwiDpA==
dependencies: dependencies:
fast-deep-equal "^3.1.3" fast-deep-equal "^3.1.3"
lodash "^4.17.21" lodash "^4.17.21"
@ -206,6 +253,11 @@
resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.3.0.tgz#247413e4d7924a9f508c6a5c8d427e4105ac0fe6" resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.3.0.tgz#247413e4d7924a9f508c6a5c8d427e4105ac0fe6"
integrity sha512-Hec5N6zEkZuZFLybVKyLFLlcSgYmR6C1/+9NkIhxPwOf6tgX52ndJCSz8ADejmbrNE0VuNCNkpzhRZzenEC9vA== 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": "@tokenizer/token@^0.3.0":
version "0.3.0" version "0.3.0"
resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
@ -243,11 +295,23 @@
dependencies: dependencies:
"@types/node" "*" "@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": "@vladfrangu/async_event_emitter@^2.1.2":
version "2.1.2" version "2.1.2"
resolved "https://registry.yarnpkg.com/@vladfrangu/async_event_emitter/-/async_event_emitter-2.1.2.tgz#85f04380d474edd1e1e5bd380dee04bc933fe995" resolved "https://registry.yarnpkg.com/@vladfrangu/async_event_emitter/-/async_event_emitter-2.1.2.tgz#85f04380d474edd1e1e5bd380dee04bc933fe995"
integrity sha512-s/L3xf+BPb8EUOcVeqQ1pUwZNaWGl0br/GCCsdui5DTqn8bpGGu1S2JRTO3cyAytWObieetgTzOPuDN8nwNtGA== 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: abbrev@1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 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" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 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" version "0.37.24"
resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.24.tgz#f3ee0ad6b2b70925b5225f9beac6e24bc4de6e46" resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.24.tgz#f3ee0ad6b2b70925b5225f9beac6e24bc4de6e46"
integrity sha512-1+Fb4huJCihdbkJLcq2p7nBmtlmAryNwjefT8wwJnL8c7bc7WA87Oaa5mbLe96QvZyfwnwRCDX40H0HhcVV50g== integrity sha512-1+Fb4huJCihdbkJLcq2p7nBmtlmAryNwjefT8wwJnL8c7bc7WA87Oaa5mbLe96QvZyfwnwRCDX40H0HhcVV50g==
discord.js@^14.7.1: discord-api-types@^0.37.41:
version "14.7.1" version "0.37.47"
resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.7.1.tgz#26079d0ff4d27daf02480a403c456121f0682bd9" resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.47.tgz#d622d5f5629a71ca2cd534442ae2800844e1888d"
integrity sha512-1FECvqJJjjeYcjSm0IGMnPxLqja/pmG1B0W2l3lUY2Gi4KXiyTeQmU1IxWcbXHn2k+ytP587mMWqva2IA87EbA== 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: dependencies:
"@discordjs/builders" "^1.4.0" "@discordjs/builders" "^1.6.3"
"@discordjs/collection" "^1.3.0" "@discordjs/collection" "^1.5.1"
"@discordjs/rest" "^1.4.0" "@discordjs/formatters" "^0.3.1"
"@discordjs/util" "^0.1.0" "@discordjs/rest" "^1.7.1"
"@sapphire/snowflake" "^3.2.2" "@discordjs/util" "^0.3.1"
"@types/ws" "^8.5.3" "@discordjs/ws" "^0.8.3"
discord-api-types "^0.37.20" "@sapphire/snowflake" "^3.4.2"
"@types/ws" "^8.5.4"
discord-api-types "^0.37.41"
fast-deep-equal "^3.1.3" fast-deep-equal "^3.1.3"
lodash.snakecase "^4.1.1" lodash.snakecase "^4.1.1"
tslib "^2.4.1" tslib "^2.5.0"
undici "^5.13.0" undici "^5.22.0"
ws "^8.11.0" ws "^8.13.0"
dotenv@^16.0.3: dotenv@^16.0.3:
version "16.0.3" version "16.0.3"
@ -457,6 +528,15 @@ file-type@^18.0.0:
strtok3 "^7.0.0" strtok3 "^7.0.0"
token-types "^5.0.1" 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: fill-range@^7.0.1:
version "7.0.1" version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 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" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 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: path-key@^3.1.0:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
@ -760,10 +845,10 @@ touch@^3.1.0:
dependencies: dependencies:
nopt "~1.0.10" nopt "~1.0.10"
ts-mixer@^6.0.2: ts-mixer@^6.0.3:
version "6.0.2" version "6.0.3"
resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.2.tgz#3e4e4bb8daffb24435f6980b15204cb5b287e016" resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.3.tgz#69bd50f406ff39daa369885b16c77a6194c7cae6"
integrity sha512-zvHx3VM83m2WYCE8XL99uaM7mFwYSkjR2OZti98fabHrwkjsCvgwChda5xctein3xGOyaQhtTeDq/1H/GNvF3A== integrity sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==
ts-node@^10.9.1: ts-node@^10.9.1:
version "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" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== 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: typescript@^4.9.4:
version "4.9.4" version "4.9.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78"
@ -806,6 +896,13 @@ undici@^5.13.0:
dependencies: dependencies:
busboy "^1.6.0" 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: util-deprecate@^1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 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" resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143"
integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== 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: yarn@^1.22.19:
version "1.22.19" version "1.22.19"
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447"