From 3fbb0c39f37c70ab28b4add2607233e201c1daa5 Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Sun, 13 Dec 2020 12:16:49 +0200 Subject: [PATCH] add resolver --- calendar/plugin.json | 2 +- calendar/plugin.ts | 6 +- debug/plugin.json | 2 +- debug/plugin.ts | 6 +- diction/plugin.json | 2 +- diction/plugin.ts | 4 +- gamedig/plugin.json | 2 +- gamedig/plugin.ts | 70 ++++-- jukebox/plugin.json | 2 +- jukebox/plugin.ts | 16 +- package-lock.json | 574 +++++++++++++++++++++++++++++++++++++++++++ package.json | 6 +- squeebot.repo.json | 14 +- timezone/plugin.json | 2 +- timezone/plugin.ts | 4 +- utility/plugin.json | 2 +- utility/plugin.ts | 38 +-- 17 files changed, 679 insertions(+), 73 deletions(-) diff --git a/calendar/plugin.json b/calendar/plugin.json index a6bfd86..80de5bc 100644 --- a/calendar/plugin.json +++ b/calendar/plugin.json @@ -2,7 +2,7 @@ "main": "plugin.js", "name": "calendar", "description": "Plugin for iCalendar/VCS room events", - "version": "1.0.0", + "version": "1.1.0", "tags": ["commands", "utility", "calendar"], "dependencies": ["simplecommands"], "npmDependencies": ["node-ical@^0.12.3"] diff --git a/calendar/plugin.ts b/calendar/plugin.ts index 9b2d398..e312eb2 100644 --- a/calendar/plugin.ts +++ b/calendar/plugin.ts @@ -8,7 +8,7 @@ import { import { async as ical } from 'node-ical'; import { logger } from '@squeebot/core/lib/core'; -import { Formatter, IMessage } from '@squeebot/core/lib/types'; +import { Formatter, IMessage, MessageResolver } from '@squeebot/core/lib/types'; import { fullIDMatcher, readableTime } from '@squeebot/core/lib/common'; let calendarTimeout: NodeJS.Timeout; @@ -216,7 +216,7 @@ class CalendarPlugin extends Plugin { { name: 'events', plugin: this.name, - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (simplified[0] && simplified[0] === 'refresh') { await fetchCalendars(this.config.get('updateInterval', 1800)); } @@ -247,7 +247,7 @@ class CalendarPlugin extends Plugin { { name: 'event', plugin: this.name, - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { let evt = simplified[0]; let countdown = true; let slice = 0; diff --git a/debug/plugin.json b/debug/plugin.json index c3e0e34..efc59d7 100644 --- a/debug/plugin.json +++ b/debug/plugin.json @@ -2,7 +2,7 @@ "main": "plugin.js", "name": "debug", "description": "In-chat debugging tools", - "version": "1.0.0", + "version": "1.1.0", "tags": ["commands", "tools"], "dependencies": ["simplecommands"], "npmDependencies": [] diff --git a/debug/plugin.ts b/debug/plugin.ts index e6c9893..f74e47b 100644 --- a/debug/plugin.ts +++ b/debug/plugin.ts @@ -8,7 +8,7 @@ import { DependencyLoad } from '@squeebot/core/lib/plugin'; -import { IMessage } from '@squeebot/core/lib/types'; +import { IMessage, MessageResolver } from '@squeebot/core/lib/types'; import { ISqueebotCore, logger } from '@squeebot/core/lib/core'; @@ -16,7 +16,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { const cmds = [{ plugin: plugin.manifest.name, name: 'evaljs', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (!simplified[0]) { return true; } @@ -59,7 +59,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ plugin: plugin.manifest.name, name: 'sh', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { const stripnl = (simplified[0] !== '-n'); const cmd = simplified.slice(stripnl ? 0 : 1).join(' '); if (!cmd) { diff --git a/diction/plugin.json b/diction/plugin.json index 50e564d..4527f30 100644 --- a/diction/plugin.json +++ b/diction/plugin.json @@ -2,7 +2,7 @@ "main": "plugin.js", "name": "diction", "description": "Find definitions for words", - "version": "1.0.0", + "version": "1.1.0", "tags": ["commands", "utility", "dictionary"], "dependencies": ["simplecommands"], "npmDependencies": [] diff --git a/diction/plugin.ts b/diction/plugin.ts index 8e300a3..141c2b4 100644 --- a/diction/plugin.ts +++ b/diction/plugin.ts @@ -6,7 +6,7 @@ import { EventListener, DependencyLoad } from '@squeebot/core/lib/plugin'; -import { IMessage } from '@squeebot/core/lib/types'; +import { IMessage, MessageResolver } from '@squeebot/core/lib/types'; const poslist = [ 'noun', @@ -54,7 +54,7 @@ class DictionPlugin extends Plugin { cmd.registerCommand({ name: 'define', plugin: this.name, - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (lastQuery > Date.now() - rate * 1000) { msg.resolve('You\'re doing that too fast!'); return true; diff --git a/gamedig/plugin.json b/gamedig/plugin.json index 44031f7..bca1cac 100644 --- a/gamedig/plugin.json +++ b/gamedig/plugin.json @@ -2,7 +2,7 @@ "main": "plugin.js", "name": "gamedig", "description": "Game server status string", - "version": "1.0.0", + "version": "1.1.0", "tags": ["commands", "games"], "dependencies": ["simplecommands"], "npmDependencies": ["gamedig@^2.0.23"] diff --git a/gamedig/plugin.ts b/gamedig/plugin.ts index 4380a61..94a28cc 100644 --- a/gamedig/plugin.ts +++ b/gamedig/plugin.ts @@ -5,9 +5,9 @@ import { DependencyLoad } from '@squeebot/core/lib/plugin'; -import { IMessage } from '@squeebot/core/lib/types'; +import { IMessage, MessageResolver } from '@squeebot/core/lib/types'; -import { query } from 'gamedig'; +import { query, QueryResult } from 'gamedig'; interface IMinecraftType { vanilla: { @@ -30,6 +30,42 @@ interface IMinecraftType { }; } +interface ICommonResponse { + name: string; + connect: string; + description: string; + players: string[]; + maxPlayers: number; + version: string; +} + +class Parsers { + public static parseMinecraftStatus(response: QueryResult): ICommonResponse | null { + const result: ICommonResponse = { + name: 'Minecraft', + connect: response.connect, + description: '', + players: [], + maxPlayers: 0, + version: '' + }; + + result.players = response.players.map((player) => player.name) as string[]; + const raw = response.raw as IMinecraftType; + if (!raw) { + return null; + } + + result.description = raw.vanilla.raw.description.extra[0].text + .replace(/§./g, '').replace(/\n/g, ' '); + + result.maxPlayers = response.maxplayers; + result.version = raw.vanilla.raw.version.name; + + return result; + } +} + @Configurable({ games: [] }) @@ -50,7 +86,7 @@ class GamePlugin extends Plugin { const command: any = { plugin: this.name, name: 'minecraft', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { const keys: any[] = []; let inclPlayers = false; if (simplified[0] === 'players' || simplified[0] === 'online') { @@ -60,13 +96,17 @@ class GamePlugin extends Plugin { keys.push(['field', 'Minecraft', { type: 'title' }]); let state; + let parsed; try { state = await query({ type: 'minecraftping', host: game.host, port, }); - if (!state) { + + parsed = Parsers.parseMinecraftStatus(state); + + if (!state || !parsed) { throw new Error(); } } catch (e) { @@ -75,26 +115,16 @@ class GamePlugin extends Plugin { } if (inclPlayers) { - const players = []; - if (state.players.length > 0) { - for (const j in state.players) { - players.push(state.players[j].name); - } - } - keys.push(['field', players.length ? players.join(', ') : 'No players', { label: 'Players online' }]); + keys.push(['field', parsed.players.length ? + parsed.players.join(', ') : 'No players', { label: 'Players online' }]); msg.resolve(keys); return true; } - keys.push(['field', state.connect, { label: 'Address' }]); - - const raw = state.raw as IMinecraftType; - if (raw && raw.vanilla && raw.vanilla.raw) { - keys.push(['field', raw.vanilla.raw.description.extra[0].text - .replace(/§./g, '').replace(/\n/g, ' '), { label: 'MOTD', type: 'description' }]); - keys.push(['field', state.players.length + '/' + state.maxplayers, { label: 'Players' }]); - keys.push(['field', raw.vanilla.raw.version.name, { label: 'Version' }]); - } + keys.push(['field', parsed.connect, { label: 'Address' }]); + keys.push(['field', parsed.description, { label: 'MOTD', type: 'description' }]); + keys.push(['field', parsed.players.length + '/' + parsed.maxPlayers, { label: 'Players' }]); + keys.push(['field', parsed.version, { label: 'Version' }]); msg.resolve(keys); return true; diff --git a/jukebox/plugin.json b/jukebox/plugin.json index 67e8b87..4f1b074 100644 --- a/jukebox/plugin.json +++ b/jukebox/plugin.json @@ -2,7 +2,7 @@ "main": "plugin.js", "name": "jukebox", "description": "Jukebox plugin for Icecast/Discord", - "version": "1.0.0", + "version": "1.1.0", "tags": ["commands", "jukebox", "music"], "dependencies": ["simplecommands"], "npmDependencies": ["ytdl-core@^4.1.3","@discordjs/opus@^0.3.3","discord.js@^12.5.1","ytsr@1.0.4"] diff --git a/jukebox/plugin.ts b/jukebox/plugin.ts index e0d2aad..bbeeda7 100644 --- a/jukebox/plugin.ts +++ b/jukebox/plugin.ts @@ -7,7 +7,7 @@ import { DependencyLoad } from '@squeebot/core/lib/plugin'; -import { IMessage } from '@squeebot/core/lib/types'; +import { IMessage, MessageResolver } from '@squeebot/core/lib/types'; import { Readable } from 'stream'; import ytdl from 'ytdl-core'; @@ -112,9 +112,7 @@ class JukeboxPlugin extends Plugin { const vc = await (channel as VoiceChannel).join(); const str = await this.getStream(link); - vc.play(str); - - str.on('end', () => setTimeout(() => { + vc.play(str).on('finish', () => { str.destroy(); const cacheCurrent = this.getCachedConfig(cfg); @@ -135,7 +133,7 @@ class JukeboxPlugin extends Plugin { logger.error('[%s] Autoplay threw an error:', this.name, e.stack); msg.resolve('Playing of the next track in the queue failed.'); }); - }, 5000)); + }); if (cached) { cached.playing = true; @@ -161,7 +159,7 @@ class JukeboxPlugin extends Plugin { cmd.registerCommand([{ name: 'play', plugin: this.name, - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (!simplified[0]) { msg.resolve('Please provide an URL or search term to play!'); return true; @@ -193,7 +191,7 @@ class JukeboxPlugin extends Plugin { { name: 'stop', plugin: this.name, - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { const vcConfig = this.getConfigByMessage(msg); if (!vcConfig) { msg.resolve('This channel has no configuration for jukeboxes.'); @@ -219,7 +217,7 @@ class JukeboxPlugin extends Plugin { { name: 'enqueue', plugin: this.name, - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (!simplified[0]) { msg.resolve('Please provide an URL or search term to play!'); return true; @@ -258,7 +256,7 @@ class JukeboxPlugin extends Plugin { { name: 'skip', plugin: this.name, - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { const vcConfig = this.getConfigByMessage(msg); if (!vcConfig) { msg.resolve('This channel has no configuration for jukeboxes.'); diff --git a/package-lock.json b/package-lock.json index a0cbd40..4ca3a12 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,47 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@discordjs/collection": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz", + "integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==" + }, + "@discordjs/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "@discordjs/node-pre-gyp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.1.0.tgz", + "integrity": "sha512-6u3EbK2x+j9bM3iK9/pE7BWLxOXZ1PvcsbDo3ZBdPocu95qPHj8zCVsBBk3Cao7V6o8QpwxUyJl6oVJ6T3ZgAg==", + "requires": { + "detect-libc": "^1.0.3", + "mkdirp": "^0.5.5", + "needle": "^2.4.1", + "nopt": "^4.0.3", + "npm-packlist": "^1.4.8", + "npmlog": "^4.1.2", + "rc": "^1.2.8", + "rimraf": "^3.0.2", + "semver": "^7.3.0", + "tar": "^6.0.2" + } + }, + "@discordjs/opus": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.3.3.tgz", + "integrity": "sha512-n3hUs4RY0K8cz8vJ2GiZE4EdJlexoxs1vGsaft5lZlAnU6wsZfncpv4px+HVOMKN8ddtjriGfsrG4lVkAyZcmQ==", + "requires": { + "@discordjs/node-pre-gyp": "^0.1.0", + "node-addon-api": "^3.0.2" + } + }, "@sindresorhus/is": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", @@ -531,6 +572,19 @@ "@types/node": "*" } }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -547,11 +601,64 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, "any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -580,6 +687,11 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, "barse": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/barse/-/barse-0.4.3.tgz", @@ -619,6 +731,15 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "cacheable-lookup": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz", @@ -656,6 +777,11 @@ "parse5": "^3.0.1" } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -664,6 +790,11 @@ "mimic-response": "^1.0.0" } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -694,6 +825,16 @@ "commander": "~2.8.1" } }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "convert-units": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/convert-units/-/convert-units-2.3.4.tgz", @@ -732,6 +873,14 @@ "assert-plus": "^1.0.0" } }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, "decimal.js": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", @@ -752,6 +901,11 @@ } } }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, "defer-to-connect": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", @@ -762,6 +916,38 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "discord.js": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.1.tgz", + "integrity": "sha512-VwZkVaUAIOB9mKdca0I5MefPMTQJTNg0qdgi1huF3iwsFwJ0L5s/Y69AQe+iPmjuV6j9rtKoG0Ta0n9vgEIL6w==", + "requires": { + "@discordjs/collection": "^0.1.6", + "@discordjs/form-data": "^3.0.1", + "abort-controller": "^3.0.0", + "node-fetch": "^2.6.1", + "prism-media": "^1.2.2", + "setimmediate": "^1.0.5", + "tweetnacl": "^1.0.3", + "ws": "^7.3.1" + }, + "dependencies": { + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + } + } + }, "dom-serializer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", @@ -820,6 +1006,11 @@ "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, "event-to-promise": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.7.0.tgz", @@ -865,6 +1056,19 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.12.tgz", "integrity": "sha512-8Z1K0VTG4hzYY7kA/1sj4/r1/RWLBD3xwReT/RCrUCbzPszjNQCCsy3ktkU/eaEqX3MYa4pY37a52eiBlPMlhA==" }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, "gamedig": { "version": "2.0.23", "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-2.0.23.tgz", @@ -882,6 +1086,21 @@ "varint": "^5.0.0" } }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, "gbxremote": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/gbxremote/-/gbxremote-0.2.1.tgz", @@ -910,6 +1129,19 @@ "assert-plus": "^1.0.0" } }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "got": { "version": "11.8.0", "resolved": "https://registry.npmjs.org/got/-/got-11.8.0.tgz", @@ -947,6 +1179,16 @@ "har-schema": "^2.0.0" } }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" + }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", @@ -992,11 +1234,41 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -1230,12 +1502,29 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "luxon": { "version": "1.25.0", "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.25.0.tgz", "integrity": "sha512-hEgLurSH8kQRjY6i4YLey+mcKVAWXbDNlZRmM6AgWDJ1cY3atl8Ztf5wEY7VBReFbmGnwQPz7KYJblL8B2k0jQ==", "optional": true }, + "m3u8stream": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.3.tgz", + "integrity": "sha512-0nAcdrF8YJKUkb6PzWdvGftTPyCVWgoiot1AkNVbPKTeIGsWs6DrOjifrJ0Zi8WQfQmD2SuVCjkYIOip12igng==", + "requires": { + "miniget": "^4.0.0", + "sax": "^1.2.4" + } + }, "mathjs": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-8.0.1.tgz", @@ -1269,11 +1558,49 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, + "miniget": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.1.0.tgz", + "integrity": "sha512-kzhrNv5L7LlomwGmPGQsLQ2PnT1LeJJWfB0wNFGyv426gEM1gsfziBQmfkr6XOBA8EusZg9nowlNT5CbuKTjZg==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, "moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -1287,6 +1614,41 @@ "moment": ">= 2.9.0" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "needle": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", + "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "node-addon-api": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz", + "integrity": "sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==" + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, "node-ical": { "version": "0.12.3", "resolved": "https://registry.npmjs.org/node-ical/-/node-ical-0.12.3.tgz", @@ -1298,11 +1660,54 @@ "uuid": "^8.3.1" } }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, "normalize-url": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -1311,11 +1716,21 @@ "boolbase": "~1.0.0" } }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1324,6 +1739,25 @@ "wrappy": "1" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-cancelable": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", @@ -1337,11 +1771,21 @@ "@types/node": "*" } }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "prism-media": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", + "integrity": "sha512-fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==" + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -1376,6 +1820,17 @@ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -1433,6 +1888,14 @@ "lowercase-keys": "^2.0.0" } }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, "rrule": { "version": "2.6.6", "resolved": "https://registry.npmjs.org/rrule/-/rrule-2.6.6.tgz", @@ -1462,6 +1925,29 @@ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -1521,6 +2007,16 @@ } } }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -1529,6 +2025,39 @@ "safe-buffer": "~5.2.0" } }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "tar": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", + "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, "tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -1604,11 +2133,24 @@ "extsprintf": "^1.2.0" } }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "ws": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz", + "integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==" + }, "xmlbuilder": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", @@ -1622,6 +2164,38 @@ "sax": "1.2.x", "xmlbuilder": "8.2.x" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "ytdl-core": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.1.3.tgz", + "integrity": "sha512-bhQ40qZX6ak0YsS6nS1wfOO7zs5+jxIG4c7aLJkw9j5mlxBQppHe1qxJuRdHFQWPKxC4K10S6kfLuqIwzp15eg==", + "requires": { + "html-entities": "^1.3.1", + "m3u8stream": "^0.8.3", + "miniget": "^4.0.0", + "sax": "^1.1.3" + } + }, + "ytsr": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/ytsr/-/ytsr-1.0.4.tgz", + "integrity": "sha512-wI58LREviYnlsCgB0R+NC3kqsbQpH/C42shbAaq1tlAZN2zBqr2JONE+eGimygpU/fdiJSB9XLFaXe6AgCG5Uw==", + "requires": { + "html-entities": "^1.3.1", + "miniget": "^2.0.1" + }, + "dependencies": { + "miniget": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-2.1.0.tgz", + "integrity": "sha512-fy9x3d/0oOIhkwAms6kgxTYkHwdELhMfgj+9a/aYZpJdTWIIWGta9aXHUtnzUn+LjBmRoTdPRQSi2hkmEvXk3A==" + } + } } } } diff --git a/package.json b/package.json index 735a71d..7497d37 100644 --- a/package.json +++ b/package.json @@ -11,13 +11,17 @@ "author": "", "license": "ISC", "dependencies": { + "@discordjs/opus": "^0.3.3", "@squeebot/core": "file:../core", "cheerio": "^1.0.0-rc.3", "convert-units": "^2.3.4", + "discord.js": "^12.5.1", "gamedig": "^2.0.23", "mathjs": "^8.0.1", "node-ical": "^0.12.3", - "typescript": "^4.1.2" + "typescript": "^4.1.2", + "ytdl-core": "^4.1.3", + "ytsr": "^1.0.4" }, "devDependencies": { "@types/cheerio": "^0.22.22", diff --git a/squeebot.repo.json b/squeebot.repo.json index 1fa1c37..91aca11 100644 --- a/squeebot.repo.json +++ b/squeebot.repo.json @@ -3,15 +3,15 @@ "plugins": [ { "name": "calendar", - "version": "1.0.0" + "version": "1.1.0" }, { "name": "debug", - "version": "1.0.0" + "version": "1.1.0" }, { "name": "diction", - "version": "1.0.0" + "version": "1.1.0" }, { "name": "fun", @@ -19,15 +19,15 @@ }, { "name": "gamedig", - "version": "1.0.0" + "version": "1.1.0" }, { "name": "jukebox", - "version": "1.0.0" + "version": "1.1.0" }, { "name": "timezone", - "version": "1.0.0" + "version": "1.1.0" }, { "name": "url-fediverse", @@ -39,7 +39,7 @@ }, { "name": "utility", - "version": "3.0.0" + "version": "3.1.0" } ], "typescript": true diff --git a/timezone/plugin.json b/timezone/plugin.json index 24d3bff..ae6acd8 100644 --- a/timezone/plugin.json +++ b/timezone/plugin.json @@ -2,7 +2,7 @@ "main": "plugin.js", "name": "timezone", "description": "Show time from different time zones", - "version": "1.0.0", + "version": "1.1.0", "tags": ["commands", "utility", "time"], "dependencies": ["simplecommands"], "npmDependencies": [] diff --git a/timezone/plugin.ts b/timezone/plugin.ts index 601872e..675ce7a 100644 --- a/timezone/plugin.ts +++ b/timezone/plugin.ts @@ -4,7 +4,7 @@ import { EventListener, DependencyLoad } from '@squeebot/core/lib/plugin'; -import { IMessage } from '@squeebot/core/lib/types'; +import { IMessage, MessageResolver } from '@squeebot/core/lib/types'; const tz: {[key: string]: number} = {'UTC-12': -12, 'UTC-11': -11, 'UTC-10': -10, 'UTC-9': -9, 'UTC-9:30': -9.5, 'UTC-8': -8, 'UTC-7': -7, 'UTC-6': -6, 'UTC-5': -5, 'UTC-4': -4, 'UTC-3': -3, 'UTC-3:30': -3.5, 'UTC-2': -2, 'UTC-1': -1, UTC: 0, 'UTC+1': 1, 'UTC+2': 2, 'UTC+3': 3, 'UTC+4': 4, 'UTC+4:30': 4.5, 'UTC+5': 5, 'UTC+5:30': 5.5, 'UTC+5:45': 5.75, 'UTC+6': 6, 'UTC+6:30': 6.5, 'UTC+7': 7, 'UTC+8': 8, 'UTC+8:30': 8.5, 'UTC+8:45': 8.75, 'UTC+9': 9, 'UTC+9:30': 9.5, 'UTC+10': 10, 'UTC+10:30': 10.5, 'UTC+11': 11, 'UTC+12': 12, 'UTC+12:45': 12.75, 'UTC+13': 13, 'UTC+13:45': 13.75, 'UTC+14': 14, BST: 1, CET: 1, DFT: 1, IST: 1, MET: 1, WAT: 1, WEST: 1, CAT: 2, CEST: 2, EET: 2, HAEC: 2, MEST: 2, SAST: 2, USZ1: 2, WAST: 2, AST: 3, EAT: 3, EEST: 3, FET: 3, IDT: 3, IOT: 3, MSK: 3, SYOT: 3, TRT: 3, IRST: 3.5, AMT: 4, AZT: 4, GET: 4, GST: 4, MUT: 4, RET: 4, SAMT: 4, SCT: 4, VOLT: 4, AFT: 4.5, IRDT: 4.5, MAWT: 5, MVT: 5, ORAT: 5, PKT: 5, TFT: 5, TJT: 5, TMT: 5, UZT: 5, YEKT: 5, IndianST: 5.5, SLST: 5.5, NPT: 5.75, BIOT: 6, BTT: 6, KGT: 6, OMST: 6, VOST: 6, CCT: 6.5, MMT: 6.5, ACT: 6.5, CXT: 7, DAVT: 7, HOVT: 7, ICT: 7, KRAT: 7, THA: 7, WIT: 7, AWST: 8, BDT: 8, CHOT: 8, CIT: 8, CT: 8, HKT: 8, HOVST: 8, IRKT: 8, MST: 8, MYT: 8, PHT: 8, SGT: 8, SST: 8, ULAT: 8, WST: 8, CWST: 8.5, CHOST: 9, EIT: 9, JST: 9, KST: 9, TLT: 9, ULAST: 9, YAKT: 9, ACST: 9.5, AEST: 10, CHST: 10, CHUT: 10, DDUT: 10, PGT: 10, VLAT: 10, ACDT: 10.5, LHST: 10.5, AEDT: 11, KOST: 11, MIST: 11, NCT: 11, NFT: 11, PONT: 11, SAKT: 11, SBT: 11, SRET: 11, VUT: 11, FJT: 12, GILT: 12, MAGT: 12, MHT: 12, NZST: 12, PETT: 12, TVT: 12, WAKT: 12, CHAST: 12.75, NZDT: 13, PHOT: 13, TKT: 13, TOT: 13, CHADT: 13.75, LINT: 14, AZOT: -1, CVT: -1, EGT: -1, BRST: -2, FNT: -2, PMDT: -2, UYST: -2, NDT: -2.5, ADT: -3, AMST: -3, ART: -3, BRT: -3, CLST: -3, FKST: -3, GFT: -3, PMST: -3, PYST: -3, ROTT: -3, UYT: -3, NST: -3.5, NT: -3.5, AtST: -4, BOT: -4, CLT: -4, COST: -4, ECT: -4, EDT: -4, FKT: -4, GYT: -4, PYT: -4, VET: -4, CDT: -5, COT: -5, EASST: -5, EST: -5, PET: -5, CST: -6, EAST: -6, GALT: -6, MDT: -6, PDT: -7, AKDT: -8, CIST: -8, PST: -8, AKST: -9, GAMT: -9, GIT: -9, HADT: -9, MART: -9.5, MIT: -9.5, CKT: -10, HAST: -10, TAHT: -10, NUT: -11, BIT: -12, GMT: 0, WET: 0}; @@ -43,7 +43,7 @@ class TZPlugin extends Plugin { cmd.registerCommand({ name: 'timezone', plugin: this.name, - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { const cfg = this.config.get('timezone', 'UTC'); const tn = timeNow(simplified[0] || cfg); if (!tn) { diff --git a/utility/plugin.json b/utility/plugin.json index c515340..6454369 100644 --- a/utility/plugin.json +++ b/utility/plugin.json @@ -2,7 +2,7 @@ "main": "plugin.js", "name": "utility", "description": "Utility commands and math operations", - "version": "3.0.0", + "version": "3.1.0", "tags": ["commands", "tools"], "dependencies": ["simplecommands"], "npmDependencies": [ diff --git a/utility/plugin.ts b/utility/plugin.ts index fc26c77..259c75a 100644 --- a/utility/plugin.ts +++ b/utility/plugin.ts @@ -10,7 +10,7 @@ import { DependencyLoad } from '@squeebot/core/lib/plugin'; -import { IMessage } from '@squeebot/core/lib/types'; +import { IMessage, MessageResolver } from '@squeebot/core/lib/types'; import { httpGET, parseTimeToSeconds, readableTime } from '@squeebot/core/lib/common'; import { logger } from '@squeebot/core/lib/core'; @@ -227,7 +227,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'binary', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { let response = ''; let strArr; let i; @@ -271,7 +271,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'hexstr', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { let response = ''; let i; let text = msg.text.split(' ').slice(2).join(' '); @@ -307,7 +307,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'base64', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { let response = ''; const text = msg.text.split(' ').slice(2).join(' '); @@ -334,7 +334,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'numsys', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (simplified.length < 3) { msg.resolve('Too few arguments!'); return true; @@ -365,7 +365,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'convertseconds', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { msg.resolve(readableTime(parseInt(simplified[0], 10))); return true; }, @@ -376,7 +376,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'converttime', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { const str = msg.text.split(' ').slice(1).join(' '); if (!str) { @@ -394,7 +394,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'reconverttime', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { const str = msg.text.split(' ').slice(1).join(' '); if (!str) { @@ -412,7 +412,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'eval', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (!simplified[0]) { return true; } @@ -435,7 +435,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'userid', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { msg.resolve('Your userId is %s.', msg.fullSenderID); return true; }, @@ -445,7 +445,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'roomid', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { msg.resolve('Current roomId is %s.', msg.fullRoomID); return true; }, @@ -455,7 +455,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'serverid', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (msg.target && msg.target.server) { msg.resolve('Current server ID is s:%s.', msg.target.server); return true; @@ -472,7 +472,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'rgb2hex', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (!simplified[0]) { return true; } @@ -502,7 +502,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'rgb2hsl', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (!simplified[0]) { return true; } @@ -533,7 +533,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'hex2rgb', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (!simplified[0]) { return true; } @@ -563,7 +563,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'isup', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (!simplified[0]) { msg.resolve('Please specify host name!'); return true; @@ -606,7 +606,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'convert', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { const tqnt = parseFloat(simplified[0]); if (isNaN(tqnt)) { msg.resolve('Please specify a quantity, either an integer or a float!'); @@ -658,7 +658,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'currency', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { let ctw: CEXResponse | null = cexCache.cache as CEXResponse; if (cexCache.expiry < Date.now()) { let fetched; @@ -736,7 +736,7 @@ function addCommands(plugin: UtilityPlugin, commands: any): void { cmds.push({ name: 'randomnumber', - execute: async (msg: IMessage, spec: any, prefix: string, ...simplified: any[]): Promise => { + execute: async (msg: IMessage, msr: MessageResolver, spec: any, prefix: string, ...simplified: any[]): Promise => { if (simplified.length < 2) { msg.resolve('Too few arguments!'); return true;