refactor: use dysnomia, remove node-fetch, misc changes

This commit is contained in:
Snazzah 2023-02-03 21:59:15 -06:00
parent cba02ccacf
commit b4bbcce67d
No known key found for this signature in database
GPG key ID: EA479766A94CEB61
16 changed files with 81 additions and 128 deletions

View file

@ -12,11 +12,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Install Node v16 - name: Install Node v18
uses: actions/setup-node@v1 uses: actions/setup-node@v1v3
with: with:
node-version: 16.x node-version: 18
- name: Install Yarn - name: Install Yarn
run: npm install -g yarn run: npm install -g yarn
- name: Install dependencies - name: Install dependencies
@ -24,7 +24,7 @@ jobs:
- name: Run ESLint - name: Run ESLint
run: yarn run eslint:fix run: yarn run eslint:fix
- name: Commit changes - name: Commit changes
uses: EndBug/add-and-commit@v4 uses: EndBug/add-and-commit@v9
with: with:
add: src add: src
message: "chore(lint): Auto-fix linting errors" message: "chore(lint): Auto-fix linting errors"

3
.gitignore vendored
View file

@ -3,4 +3,5 @@ config/default.js
config/production.js config/production.js
config/curate.sqlite config/curate.sqlite
package-lock.json package-lock.json
.idea/ .idea/
yarn-error.log

View file

@ -7,7 +7,7 @@ This bot allows the community of LBRY to support eachother through the [LBRY Fou
## Installation ## Installation
* Pull the repo * Pull the repo
* Install [Node.JS LTS](https://nodejs.org/) (Currently Node v12.x) * Install [Node.JS LTS](https://nodejs.org/) (Currently Node v18.x)
* Install [Yarn](https://yarnpkg.com/) (`npm install yarn -g`) * Install [Yarn](https://yarnpkg.com/) (`npm install yarn -g`)
* Install [Redis](https://redis.io/) ([quickstart](https://redis.io/topics/quickstart)) * Install [Redis](https://redis.io/) ([quickstart](https://redis.io/topics/quickstart))
* Install LBRY-SDK * Install LBRY-SDK
@ -19,7 +19,7 @@ This bot allows the community of LBRY to support eachother through the [LBRY Fou
This bot would not be possible without the following people/software: This bot would not be possible without the following people/software:
* LBRY Inc. and the LBRY SDK * LBRY Inc. and the LBRY SDK
* Eris - NodeJS Library for Discord * Dysnomia - NodeJS Library for Discord, fork of Eris
* LBRY Foundation * LBRY Foundation
* Snazzah - Creator of the Faux command base and developer of the bot * Snazzah - Creator of the Faux command base and developer of the bot
* Coolguy3289 - Developer of the bot and command flow * Coolguy3289 - Developer of the bot and command flow

View file

@ -1,4 +1,6 @@
module.exports = { module.exports = {
// [string] The token for the bot
token: "",
// [string] The prefix for the bot // [string] The prefix for the bot
prefix: "!", prefix: "!",
// [Array<string>] An array of elevated IDs, giving them access to developer commands // [Array<string>] An array of elevated IDs, giving them access to developer commands
@ -25,30 +27,25 @@ module.exports = {
walletBackupFolder: "~/.lbryum_backup/", walletBackupFolder: "~/.lbryum_backup/",
// [string] Amount to auto-fund upon account creation // [string] Amount to auto-fund upon account creation
startingBalance: "", startingBalance: "",
// [Object] Oceanic client options (https://docs.oceanic.ws/v1.3.0/interfaces/Types_Client.ClientOptions.html) // [Object] Dysnomia client options (subset of https://abal.moe/Eris/docs/Client)
discordConfig: { discordConfig: {
// [string] The token for the bot
auth: "Bot <token>",
gateway: {
autoReconnect: true,
maxShards: "auto",
messageLimit: 0,
intents: [
"GUILDS",
"GUILD_EMOJIS_AND_STICKERS",
"GUILD_MESSAGES",
"GUILD_MESSAGE_REACTIONS",
"DIRECT_MESSAGES",
"DIRECT_MESSAGE_REACTIONS"
]
},
collectionLimits: {
messages: 0
},
allowedMentions: { allowedMentions: {
everyone: false, everyone: false,
roles: false, roles: false,
users: true users: true
},
messageLimit: 0,
gateway: {
autoreconnect: true,
maxShards: "auto",
intents: [
"guilds",
"guildMessages",
"guildMessageReactions",
"directMessages",
"directMessageReactions",
"messageContent"
]
} }
}, },
// [Object] Redis config // [Object] Redis config

View file

@ -9,15 +9,15 @@
"eslint:fix": "eslint ./src --fix" "eslint:fix": "eslint ./src --fix"
}, },
"dependencies": { "dependencies": {
"@projectdysnomia/dysnomia": "github:projectdysnomia/dysnomia#dev",
"abort-controller": "^3.0.0", "abort-controller": "^3.0.0",
"cat-loggr": "^1.2.2", "cat-loggr": "^1.2.2",
"config": "^3.3.9", "config": "^3.3.9",
"eventemitter3": "^5.0.0", "eventemitter3": "^5.0.0",
"fuzzy": "^0.1.3", "fuzzy": "^0.1.3",
"ioredis": "^5.3.0", "ioredis": "^5.3.0",
"just-clone": "^6.2.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"node-fetch": "2",
"oceanic.js": "^1.3.2",
"require-reload": "^0.2.2", "require-reload": "^0.2.2",
"sequelize": "^6.28.0", "sequelize": "^6.28.0",
"sqlite3": "^5.1.4" "sqlite3": "^5.1.4"

View file

@ -1,4 +1,4 @@
const Oceanic = require('oceanic.js'); const Dysnomia = require('@projectdysnomia/dysnomia');
const Database = require('./database'); const Database = require('./database');
const EventHandler = require('./events'); const EventHandler = require('./events');
const CommandLoader = require('./commandloader'); const CommandLoader = require('./commandloader');
@ -8,12 +8,13 @@ const path = require('path');
const CatLoggr = require('cat-loggr'); const CatLoggr = require('cat-loggr');
const config = require('config'); const config = require('config');
const LBRY = require('./structures/LBRY'); const LBRY = require('./structures/LBRY');
const clone = require('just-clone');
class CurateBot extends Oceanic.Client { class CurateBot extends Dysnomia.Client {
constructor({ packagePath, mainDir } = {}) { constructor({ packagePath, mainDir } = {}) {
// Initialization // Initialization
const pkg = require(packagePath || `${mainDir}/package.json`); const pkg = require(packagePath || `${mainDir}/package.json`);
super(JSON.parse(JSON.stringify(config.discordConfig))); super(`Bot ${config.token}`, clone(config.discordConfig));
this.dir = mainDir; this.dir = mainDir;
this.pkg = pkg; this.pkg = pkg;
this.logger = new CatLoggr({ this.logger = new CatLoggr({
@ -23,10 +24,8 @@ class CurateBot extends Oceanic.Client {
{ name: 'error', color: CatLoggr._chalk.black.bgRed, err: true }, { name: 'error', color: CatLoggr._chalk.black.bgRed, err: true },
{ name: 'warn', color: CatLoggr._chalk.black.bgYellow, err: true }, { name: 'warn', color: CatLoggr._chalk.black.bgYellow, err: true },
{ name: 'init', color: CatLoggr._chalk.black.bgGreen }, { name: 'init', color: CatLoggr._chalk.black.bgGreen },
{ name: 'webserv', color: CatLoggr._chalk.black.bgBlue },
{ name: 'info', color: CatLoggr._chalk.black.bgCyan }, { name: 'info', color: CatLoggr._chalk.black.bgCyan },
{ name: 'assert', color: CatLoggr._chalk.cyan.bgBlack }, { name: 'assert', color: CatLoggr._chalk.cyan.bgBlack },
{ name: 'poster', color: CatLoggr._chalk.yellow.bgBlack },
{ name: 'debug', color: CatLoggr._chalk.magenta.bgBlack, aliases: ['log', 'dir'] }, { name: 'debug', color: CatLoggr._chalk.magenta.bgBlack, aliases: ['log', 'dir'] },
{ name: 'limiter', color: CatLoggr._chalk.gray.bgBlack }, { name: 'limiter', color: CatLoggr._chalk.gray.bgBlack },
{ name: 'fileload', color: CatLoggr._chalk.white.bgBlack } { name: 'fileload', color: CatLoggr._chalk.white.bgBlack }
@ -113,7 +112,7 @@ class CurateBot extends Oceanic.Client {
/** /**
* Start typing in a channel * Start typing in a channel
* @param {Oceanic.TextableChannel} channel The channel to start typing in * @param {Dysnomia.TextableChannel} channel The channel to start typing in
*/ */
async startTyping(channel) { async startTyping(channel) {
if (this.isTyping(channel)) return; if (this.isTyping(channel)) return;
@ -125,7 +124,7 @@ class CurateBot extends Oceanic.Client {
/** /**
* Whether the bot is currently typing in a channel * Whether the bot is currently typing in a channel
* @param {Oceanic.TextableChannel} channel * @param {Dysnomia.TextableChannel} channel
*/ */
isTyping(channel) { isTyping(channel) {
return this.typingIntervals.has(channel.id); return this.typingIntervals.has(channel.id);
@ -133,7 +132,7 @@ class CurateBot extends Oceanic.Client {
/** /**
* Stops typing in a channel * Stops typing in a channel
* @param {Oceanic.TextableChannel} channel * @param {Dysnomia.TextableChannel} channel
*/ */
stopTyping(channel) { stopTyping(channel) {
if (!this.isTyping(channel)) return; if (!this.isTyping(channel)) return;

View file

@ -13,12 +13,12 @@ module.exports = class AdminBalance extends Command {
const response = await this.client.lbry.walletBalance(); const response = await this.client.lbry.walletBalance();
const wallet = await response.json(); const wallet = await response.json();
if (await this.handleResponse(message, response, wallet)) return; if (await this.handleResponse(message, response, wallet)) return;
return message.channel.createMessage({ embed: { return message.channel.createMessage({ embeds: [{
color: config.embedColor, color: config.embedColor,
description: `**Available:** ${wallet.result.available} LBC\n\n` + description: `**Available:** ${wallet.result.available} LBC\n\n` +
`Reserved in Supports: ${wallet.result.reserved_subtotals.supports} LBC\n` + `Reserved in Supports: ${wallet.result.reserved_subtotals.supports} LBC\n` +
`Total: ${wallet.result.total} LBC` `Total: ${wallet.result.total} LBC`
} }); }] });
} }
get metadata() { return { get metadata() { return {

View file

@ -30,25 +30,25 @@ module.exports = class Balance extends Command {
const response = await this.client.lbry.accountBalance(account.accountID); const response = await this.client.lbry.accountBalance(account.accountID);
const wallet = await response.json(); const wallet = await response.json();
if (await this.handleResponse(message, response, wallet)) return; if (await this.handleResponse(message, response, wallet)) return;
return message.channel.createMessage({ embed: { return message.channel.createMessage({ embeds: [{
color: config.embedColor, color: config.embedColor,
description: `<@${discordID}> has **${wallet.result.available}** LBC available.\n\n` + description: `<@${discordID}> has **${wallet.result.available}** LBC available.\n\n` +
`Reserved in Supports: ${wallet.result.reserved_subtotals.supports} LBC\n` + `Reserved in Supports: ${wallet.result.reserved_subtotals.supports} LBC\n` +
`Total: ${wallet.result.total} LBC` `Total: ${wallet.result.total} LBC`
} }); }] });
} else { } else {
const account = await Util.LBRY.findOrCreateAccount(this.client, message.author.id); const account = await Util.LBRY.findOrCreateAccount(this.client, message.author.id);
const response = await this.client.lbry.accountBalance(account.accountID); const response = await this.client.lbry.accountBalance(account.accountID);
const wallet = await response.json(); const wallet = await response.json();
if (await this.handleResponse(message, response, wallet)) return; if (await this.handleResponse(message, response, wallet)) return;
return message.channel.createMessage({ embed: { return message.channel.createMessage({ embeds: [{
color: config.embedColor, color: config.embedColor,
description: `You have **${wallet.result.available}** LBC available.\n\n` + description: `You have **${wallet.result.available}** LBC available.\n\n` +
`Reserved in Supports: ${wallet.result.reserved_subtotals.supports} LBC\n` + `Reserved in Supports: ${wallet.result.reserved_subtotals.supports} LBC\n` +
`Total: ${wallet.result.total} LBC` + `Total: ${wallet.result.total} LBC` +
(account.newAccount ? '\n\n:warning: This account was just created. ' + (account.newAccount ? '\n\n:warning: This account was just created. ' +
'Please wait a few seconds, and run the command again to get an accurate balance.' : '') 'Please wait a few seconds, and run the command again to get an accurate balance.' : '')
} }); }] });
} }
} }

View file

@ -60,7 +60,7 @@ module.exports = class Help extends Command {
value: command.metadata.note value: command.metadata.note
}); });
return message.channel.createMessage({ embed }); return message.channel.createMessage({ embeds: [embed] });
} }
} else { } else {
// Display general help command // Display general help command
@ -89,7 +89,7 @@ module.exports = class Help extends Command {
inline: true inline: true
}); });
}); });
return message.channel.createMessage({ embed }); return message.channel.createMessage({ embeds: [embed] });
} }
} }

View file

@ -15,12 +15,12 @@ module.exports = class TBalance extends Command {
const response = await this.client.lbry.accountBalance(account.id); const response = await this.client.lbry.accountBalance(account.id);
const wallet = await response.json(); const wallet = await response.json();
if (await this.handleResponse(message, response, wallet)) return; if (await this.handleResponse(message, response, wallet)) return;
return message.channel.createMessage({ embed: { return message.channel.createMessage({ embeds: [{
color: config.embedColor, color: config.embedColor,
description: `**${wallet.result.available}** LBC is available in the trusted account.\n\n` + description: `**${wallet.result.available}** LBC is available in the trusted account.\n\n` +
`Reserved in Supports: ${wallet.result.reserved_subtotals.supports} LBC\n` + `Reserved in Supports: ${wallet.result.reserved_subtotals.supports} LBC\n` +
`Total: ${wallet.result.total} LBC` `Total: ${wallet.result.total} LBC`
} }); }] });
} }
get metadata() { return { get metadata() { return {

View file

@ -1,7 +1,6 @@
const ArgumentInterpreter = require('./structures/ArgumentInterpreter'); const ArgumentInterpreter = require('./structures/ArgumentInterpreter');
const Util = require('./util'); const Util = require('./util');
const config = require('config'); const config = require('config');
const { Permissions } = require('oceanic.js');
module.exports = class Events { module.exports = class Events {
constructor(client) { constructor(client) {
@ -15,7 +14,7 @@ module.exports = class Events {
// Check to see if bot can send messages // Check to see if bot can send messages
if (message.channel.type !== 1 && if (message.channel.type !== 1 &&
!message.channel.permissionsOf(this.client.user.id).has(Permissions.SEND_MESSAGES)) return; !message.channel.permissionsOf(this.client.user.id).has('sendMessages')) return;
// Message awaiter // Message awaiter
if (this.client.messageAwaiter.processHalt(message)) return; if (this.client.messageAwaiter.processHalt(message)) return;

View file

@ -1,7 +1,6 @@
const Paginator = require('./Paginator'); const Paginator = require('./Paginator');
const lodash = require('lodash'); const lodash = require('lodash');
const config = require('config'); const config = require('config');
const { Permissions } = require('oceanic.js');
/** /**
* A generic pager that shows a list of items * A generic pager that shows a list of items
@ -39,7 +38,7 @@ class GenericPager extends Paginator {
*/ */
canEmbed() { canEmbed() {
return this.message.channel.type === 1 || return this.message.channel.type === 1 ||
this.message.channel.permissionsOf(this.client.user.id).has(Permissions.EMBED_LINKS); this.message.channel.permissionsOf(this.client.user.id).has('embedLinks');
} }
/** /**
@ -71,7 +70,7 @@ class GenericPager extends Paginator {
value: displayPage.join('\n') value: displayPage.join('\n')
}); });
return { embed }; return { embeds: [embed] };
} else { } else {
const top = `${this.itemTitle} ` + const top = `${this.itemTitle} ` +
`(${this.items.length}, Page ${this.pageNumber}/${this.maxPages})`; `(${this.items.length}, Page ${this.pageNumber}/${this.maxPages})`;

View file

@ -1,4 +1,3 @@
const fetch = require('node-fetch');
const AbortController = require('abort-controller'); const AbortController = require('abort-controller');
const config = require('config'); const config = require('config');
const Util = require('../util'); const Util = require('../util');

View file

@ -1,5 +1,4 @@
const EventEmitter = require('eventemitter3'); const EventEmitter = require('eventemitter3');
const { Permissions } = require('oceanic.js');
/** /**
* A class that creates a paging process for messages * A class that creates a paging process for messages
@ -88,7 +87,7 @@ class Paginator extends EventEmitter {
*/ */
canPaginate() { canPaginate() {
return this.message.channel.type === 1 || return this.message.channel.type === 1 ||
this.message.channel.permissionsOf(this.client.user.id).has(Permissions.ADD_REACTIONS); this.message.channel.permissionsOf(this.client.user.id).has('addReactions');
} }
/** /**
@ -97,7 +96,7 @@ class Paginator extends EventEmitter {
*/ */
canManage() { canManage() {
return this.message.channel.type !== 1 && return this.message.channel.type !== 1 &&
this.message.channel.permissionsOf(this.client.user.id).has(Permissions.MANAGE_MESSAGES); this.message.channel.permissionsOf(this.client.user.id).has('manageMessages');
} }
/** /**

View file

@ -1,8 +1,6 @@
const fetch = require('node-fetch');
const config = require('config'); const config = require('config');
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const { Permissions } = require('oceanic.js');
/** /**
* Represents the utilities for the bot * Represents the utilities for the bot
@ -51,7 +49,7 @@ Util.Prefix = {
Util.Prefix.regex(client, prefixes), '$2').replace(/\s\s+/g, ' ').trim(); Util.Prefix.regex(client, prefixes), '$2').replace(/\s\s+/g, ' ').trim();
}, },
escapeRegex(s) { escapeRegex(s) {
return s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'); return s.replace(/[-/\\^$*+?.()|[\]{}!]/g, '\\$&');
} }
}; };
@ -61,11 +59,11 @@ Util.Prefix = {
*/ */
Util.CommandPermissions = { Util.CommandPermissions = {
attach: (client, message) => message.channel.type === 1 || attach: (client, message) => message.channel.type === 1 ||
message.channel.permissionsOf(client.user.id).has(Permissions.ATTACH_FILES), message.channel.permissionsOf(client.user.id).has('attachFiles'),
embed: (client, message) => message.channel.type === 1 || embed: (client, message) => message.channel.type === 1 ||
message.channel.permissionsOf(client.user.id).has(Permissions.EMBED_LINKS), message.channel.permissionsOf(client.user.id).has('embedLinks'),
emoji: (client, message) => message.channel.type === 1 || emoji: (client, message) => message.channel.type === 1 ||
message.channel.permissionsOf(client.user.id).has(Permissions.USE_EXTERNAL_EMOJIS), message.channel.permissionsOf(client.user.id).has('externalEmojis'),
guild: (_, message) => !!message.guildID, guild: (_, message) => !!message.guildID,
elevated: (_, message) => config.elevated.includes(message.author.id), elevated: (_, message) => config.elevated.includes(message.author.id),
curator: (client, message) => { curator: (client, message) => {

View file

@ -2,17 +2,6 @@
# yarn lockfile v1 # yarn lockfile v1
"@discordjs/voice@^0.13.0":
version "0.13.0"
resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.13.0.tgz#dd7eb490246ce00ccdad486859b9ccc4ef275ac9"
integrity sha512-ZzwDmVINaLgkoDUeTJfpN9TkjINMLfTVoLMtEygm0YC5jTTw7AvKGqhc+Ae/2kNLywd0joyFVNrLp94yCkQ9SA==
dependencies:
"@types/ws" "^8.5.3"
discord-api-types "^0.37.12"
prism-media "^1.3.4"
tslib "^2.4.0"
ws "^8.9.0"
"@eslint/eslintrc@^1.4.1": "@eslint/eslintrc@^1.4.1":
version "1.4.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e"
@ -109,6 +98,15 @@
mkdirp "^1.0.4" mkdirp "^1.0.4"
rimraf "^3.0.2" rimraf "^3.0.2"
"@projectdysnomia/dysnomia@github:projectdysnomia/dysnomia#dev":
version "0.1.0-dev"
resolved "https://codeload.github.com/projectdysnomia/dysnomia/tar.gz/15ebb0c9e9a6d7ec28340e69ff71ebbcea9d5bce"
dependencies:
ws "^8.2.3"
optionalDependencies:
opusscript "^0.0.8"
tweetnacl "^1.0.3"
"@tootallnate/once@1": "@tootallnate/once@1":
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
@ -141,13 +139,6 @@
resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.7.1.tgz#cdab1b4779f6b1718a08de89d92d2603b71950cb" resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.7.1.tgz#cdab1b4779f6b1718a08de89d92d2603b71950cb"
integrity sha512-I6OUIZ5cYRk5lp14xSOAiXjWrfVoMZVjDuevBYgQDYzZIjsf2CAISpEcXOkFAtpAHbmWIDLcZObejqny/9xq5Q== integrity sha512-I6OUIZ5cYRk5lp14xSOAiXjWrfVoMZVjDuevBYgQDYzZIjsf2CAISpEcXOkFAtpAHbmWIDLcZObejqny/9xq5Q==
"@types/ws@^8.5.3":
version "8.5.3"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d"
integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==
dependencies:
"@types/node" "*"
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"
@ -263,13 +254,6 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0" balanced-match "^1.0.0"
concat-map "0.0.1" concat-map "0.0.1"
busboy@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
dependencies:
streamsearch "^1.1.0"
cacache@^15.2.0: cacache@^15.2.0:
version "15.3.0" version "15.3.0"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb"
@ -431,11 +415,6 @@ detect-libc@^2.0.0:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
discord-api-types@^0.37.12:
version "0.37.17"
resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.17.tgz#314e4225fdff31b08b83ba5104d46564bc02303c"
integrity sha512-5ZIw1VtkmToBy8ziketjHkZnW1FoLevyXdK/TslNFLozijug2RnB3MyBNtSGzML1c72koU3neeGkvFZ8OiU0tQ==
doctrine@^3.0.0: doctrine@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@ -918,6 +897,11 @@ json5@^2.2.3:
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
just-clone@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/just-clone/-/just-clone-6.2.0.tgz#a4614d9bf7e4bbdcae7f9ba904aea5ea9cae8ae5"
integrity sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==
levn@^0.4.1: levn@^0.4.1:
version "0.4.1" version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@ -1092,7 +1076,7 @@ node-addon-api@^4.2.0:
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
node-fetch@2, node-fetch@^2.6.7: node-fetch@^2.6.7:
version "2.6.7" version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
@ -1147,16 +1131,6 @@ object-assign@^4.1.1:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
oceanic.js@^1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/oceanic.js/-/oceanic.js-1.3.2.tgz#30d3bdeeb2b07dbd36a576f7f1b4837e75015306"
integrity sha512-nLedv0gmtMTnAVJQWIePWf7nz/7fRzYpoQndiwsn8X9CGRDAYDgtmdCtUD+EylkIN5zRNg+aWm6EcriKEXCZUg==
dependencies:
undici "^5.12.0"
ws "^8.11.0"
optionalDependencies:
"@discordjs/voice" "^0.13.0"
once@^1.3.0: once@^1.3.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@ -1176,6 +1150,11 @@ optionator@^0.9.1:
type-check "^0.4.0" type-check "^0.4.0"
word-wrap "^1.2.3" word-wrap "^1.2.3"
opusscript@^0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/opusscript/-/opusscript-0.0.8.tgz#00b49e81281b4d99092d013b1812af8654bd0a87"
integrity sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==
p-limit@^3.0.2: p-limit@^3.0.2:
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
@ -1229,11 +1208,6 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prism-media@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-1.3.4.tgz#7951f26a9186b791dc8c820ff07310ec46a8a5f1"
integrity sha512-eW7LXORkTCQznZs+eqe9VjGOrLBxcBPXgNyHXMTSRVhphvd/RrxgIR7WaWt4fkLuhshcdT5KHL88LAfcvS3f5g==
promise-inflight@^1.0.1: promise-inflight@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
@ -1443,11 +1417,6 @@ standard-as-callback@^2.1.0:
resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45"
integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==
streamsearch@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3:
version "4.2.3" version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@ -1517,10 +1486,10 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
tslib@^2.4.0: tweetnacl@^1.0.3:
version "2.4.1" version "1.0.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
type-check@^0.4.0, type-check@~0.4.0: type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0" version "0.4.0"
@ -1534,13 +1503,6 @@ type-fest@^0.20.2:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
undici@^5.12.0:
version "5.12.0"
resolved "https://registry.yarnpkg.com/undici/-/undici-5.12.0.tgz#c758ffa704fbcd40d506e4948860ccaf4099f531"
integrity sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==
dependencies:
busboy "^1.6.0"
unique-filename@^1.1.1: unique-filename@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
@ -1621,10 +1583,10 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
ws@^8.11.0, ws@^8.9.0: ws@^8.2.3:
version "8.11.0" version "8.12.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8"
integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==
yallist@^4.0.0: yallist@^4.0.0:
version "4.0.0" version "4.0.0"