From 61e587ca27fcbfce7e678bd4e03cbf4a35baf776 Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 2 Nov 2021 18:52:27 +0000 Subject: [PATCH 1/5] Add ioredis package --- package-lock.json | 173 ++++++++++++++++++++++++++++- package.json | 1 + src/commands/Queue.ts | 3 +- src/eventHandlers/PlayerHandler.ts | 1 - 4 files changed, 169 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index f390fc6..6067e7e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "discord.js": "^13.1.0", "dotenv": "^10.0.0", "erela.js": "^2.3.3", + "ioredis": "^4.28.0", "node-fetch": "^2.6.5", "utf-8-validate": "^5.0.6", "zlib-sync": "^0.1.7" @@ -774,6 +775,14 @@ "wrap-ansi": "^6.2.0" } }, + "node_modules/cluster-key-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", + "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -847,7 +856,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -883,6 +891,14 @@ "node": ">=0.4.0" } }, + "node_modules/denque": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", + "engines": { + "node": ">=0.10" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -1621,6 +1637,31 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ioredis": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.0.tgz", + "integrity": "sha512-I+zkeeWp3XFgPT2CtJKxvaF5FjGBGt4yGYljRjQecdQKteThuAsKqffeF1lgHVlYnuNeozRbPOCDNZ7tDWPeig==", + "dependencies": { + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.1", + "denque": "^1.1.0", + "lodash.defaults": "^4.2.0", + "lodash.flatten": "^4.4.0", + "lodash.isarguments": "^3.1.0", + "p-map": "^2.1.0", + "redis-commands": "1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1742,6 +1783,21 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -1833,8 +1889,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nan": { "version": "2.15.0", @@ -1951,6 +2006,14 @@ "node": ">=8" } }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "engines": { + "node": ">=6" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -2075,6 +2138,30 @@ } ] }, + "node_modules/redis-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -2263,6 +2350,11 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -3222,6 +3314,11 @@ "wrap-ansi": "^6.2.0" } }, + "cluster-key-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", + "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==" + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3285,7 +3382,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -3307,6 +3403,11 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "denque": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" + }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -3851,6 +3952,24 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "ioredis": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.0.tgz", + "integrity": "sha512-I+zkeeWp3XFgPT2CtJKxvaF5FjGBGt4yGYljRjQecdQKteThuAsKqffeF1lgHVlYnuNeozRbPOCDNZ7tDWPeig==", + "requires": { + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.1", + "denque": "^1.1.0", + "lodash.defaults": "^4.2.0", + "lodash.flatten": "^4.4.0", + "lodash.isarguments": "^3.1.0", + "p-map": "^2.1.0", + "redis-commands": "1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3948,6 +4067,21 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -4021,8 +4155,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nan": { "version": "2.15.0", @@ -4109,6 +4242,11 @@ "p-limit": "^2.2.0" } }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -4183,6 +4321,24 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "redis-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + }, + "redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=" + }, + "redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", + "requires": { + "redis-errors": "^1.0.0" + } + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -4305,6 +4461,11 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", diff --git a/package.json b/package.json index 45846cd..1cf4d72 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "discord.js": "^13.1.0", "dotenv": "^10.0.0", "erela.js": "^2.3.3", + "ioredis": "^4.28.0", "node-fetch": "^2.6.5", "utf-8-validate": "^5.0.6", "zlib-sync": "^0.1.7" diff --git a/src/commands/Queue.ts b/src/commands/Queue.ts index ea9742e..abb196e 100644 --- a/src/commands/Queue.ts +++ b/src/commands/Queue.ts @@ -19,7 +19,6 @@ export const Queue = new (class extends Command { const guildPlayer = soup.manager.players.get(interaction.guild.id) if (!guildPlayer) return interaction.reply({ embeds: [Error('A player doesn\'t exist for this guild.')] }) - if (!guildPlayer.queue) return interaction.reply({ embeds: [Error('No tracks in queue')] }) const currentTrack = guildPlayer.queue.current @@ -73,4 +72,4 @@ export const Queue = new (class extends Command { return embed } -})() \ No newline at end of file +})() diff --git a/src/eventHandlers/PlayerHandler.ts b/src/eventHandlers/PlayerHandler.ts index 1fa0825..52ee4a8 100644 --- a/src/eventHandlers/PlayerHandler.ts +++ b/src/eventHandlers/PlayerHandler.ts @@ -28,7 +28,6 @@ export class PlayerHandler { private async onTrackStart(player: Player, track: Track) { const textChannel = this.soup.channels.cache.get(player.textChannel) as TextChannel - const nowPlayingMessage = await textChannel.send({ embeds: [GuildTrack('Now Playing', track)] }) this.nowPlayingMessages.set(textChannel.id, nowPlayingMessage.id) From ec613259766eead3b8f781caf480d63a75446e3f Mon Sep 17 00:00:00 2001 From: Dylan Ogle Date: Tue, 2 Nov 2021 12:09:31 -0700 Subject: [PATCH 2/5] Update build.yml --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 92f649a..d59b7d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,5 +18,5 @@ jobs: - name: Build the Soup Docker image run: | - docker build . --tag ghcr.io/delxhq/soup:latest - docker push ghcr.io/delxhq/soup:latest + docker build . --tag ghcr.io/delxhq/soup:${{ github.ref }} + docker push ghcr.io/delxhq/soup:${{ github.ref }} From f1b02867a79445b17066b5e04038dbd762c4e3a6 Mon Sep 17 00:00:00 2001 From: Dylan Ogle Date: Tue, 2 Nov 2021 12:17:59 -0700 Subject: [PATCH 3/5] Update build.yml --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d59b7d9..c0d145c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,5 +18,5 @@ jobs: - name: Build the Soup Docker image run: | - docker build . --tag ghcr.io/delxhq/soup:${{ github.ref }} - docker push ghcr.io/delxhq/soup:${{ github.ref }} + docker build . --tag ghcr.io/delxhq/soup:${{ github.head_ref }} + docker push ghcr.io/delxhq/soup:${{ github.head_ref }} From 211bf50efdf9a867451dd1c1bf485d37528c7c8e Mon Sep 17 00:00:00 2001 From: Dylan Ogle Date: Tue, 2 Nov 2021 12:22:55 -0700 Subject: [PATCH 4/5] Update build.yml --- .github/workflows/build.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c0d145c..f541dff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,8 +15,13 @@ jobs: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.CR_PAT }} + + - name: Extract branch name + shell: bash + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + id: extract_branch - name: Build the Soup Docker image run: | - docker build . --tag ghcr.io/delxhq/soup:${{ github.head_ref }} - docker push ghcr.io/delxhq/soup:${{ github.head_ref }} + docker build . --tag ghcr.io/delxhq/soup:${{ steps.extract_branch.outputs.branch }} + docker push ghcr.io/delxhq/soup:${{ steps.extract_branch.outputs.branch }} From 0eb38fd05e36fbd63a423d9e1940eb8164767da3 Mon Sep 17 00:00:00 2001 From: Dylan Date: Fri, 5 Nov 2021 01:02:40 +0000 Subject: [PATCH 5/5] Connected to Redis. --- package-lock.json | 17 +++++++++++++++++ package.json | 1 + src/Redis.ts | 30 ++++++++++++++++++++++++++++++ src/Soup.ts | 19 +++++++++++-------- src/commands/Play.ts | 6 +++++- 5 files changed, 64 insertions(+), 9 deletions(-) create mode 100644 src/Redis.ts diff --git a/package-lock.json b/package-lock.json index 6067e7e..e133a35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "@bwatton/logger": "^1.0.6", + "@types/ioredis": "^4.28.1", "better-erela.js-spotify": "^1.1.3", "bufferutil": "^4.0.4", "discord.js": "^13.1.0", @@ -331,6 +332,14 @@ "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", "dev": true }, + "node_modules/@types/ioredis": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.1.tgz", + "integrity": "sha512-raYHPqRWrfnEoym94BY28mG1+tcZqh3dsp2q7x5IyMAAEvIdu+H0X8diASMpncIm+oHyH9dalOeOnGOL/YnuOA==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", @@ -3009,6 +3018,14 @@ "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", "dev": true }, + "@types/ioredis": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.1.tgz", + "integrity": "sha512-raYHPqRWrfnEoym94BY28mG1+tcZqh3dsp2q7x5IyMAAEvIdu+H0X8diASMpncIm+oHyH9dalOeOnGOL/YnuOA==", + "requires": { + "@types/node": "*" + } + }, "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", diff --git a/package.json b/package.json index 1cf4d72..e29719f 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "private": false, "dependencies": { "@bwatton/logger": "^1.0.6", + "@types/ioredis": "^4.28.1", "better-erela.js-spotify": "^1.1.3", "bufferutil": "^4.0.4", "discord.js": "^13.1.0", diff --git a/src/Redis.ts b/src/Redis.ts new file mode 100644 index 0000000..baca4ad --- /dev/null +++ b/src/Redis.ts @@ -0,0 +1,30 @@ +import { Player } from 'erela.js' +import ioredis from 'ioredis' + +export class Redis { + + public redis = new ioredis({ + port: parseInt(process.env.REDIS_PORT) || 6379, + host: process.env.REDIS_HOST, + family: 4, + password: 'auth', + db: 0, + }) + + private playersKey = 'players' // players + private playerQueueKey = 'playersQueue' // queue for all players + + // public async init(): Promise { + // await this.redis.connect() + // } + + public async fetchPlayers(): Promise { + return await this.redis.smembers(this.playersKey) + } + + public async addPlayer(player: Player): Promise { + await this.redis.sadd(this.playersKey, JSON.stringify({ + player: player.options, + })) + } +} diff --git a/src/Soup.ts b/src/Soup.ts index e42d6c9..acbc7c5 100644 --- a/src/Soup.ts +++ b/src/Soup.ts @@ -2,7 +2,8 @@ import { Client, ClientUser, Guild, GuildChannel, GuildMember, Intents, Interact import { Command } from './Command' import * as cmdList from './commands' import Logger from '@bwatton/logger' -import { Manager, NodeOptions } from 'erela.js' +import { Manager, NodeOptions, Player, PlayerOptions } from 'erela.js' +import { Redis } from './Redis' import Spotify from 'better-erela.js-spotify' import { PlayerHandler } from './eventHandlers/PlayerHandler' import { Error as ErrorEmbed, RichEmbed } from './util' @@ -18,6 +19,8 @@ export class Soup extends Client { private logger: Logger = new Logger('Bot') + public redis: Redis = new Redis() + public commands: { [k: string]: Command, } = {} @@ -57,13 +60,6 @@ export class Soup extends Client { ], }) - this.on('interactionCreate', interaction => this.onSlashCommand(interaction)) - this.on('guildCreate', guild => this.onGuildJoin(guild)) - this.on('guildDelete', guild => this.onGuildLeave(guild)) - this.on('warn', message => this.logger.warn(message)) - this.on('error', error => this.logger.error(error)) - this.on('raw', d => this.manager.updateVoiceState(d)) - this.manager.on('nodeError', (node, error) => { this.logger.info(`Lavalink node "${node.options.identifier}" encountered an error: ${error.message}`) }) @@ -106,6 +102,13 @@ export class Soup extends Client { ], }) + this.on('interactionCreate', interaction => this.onSlashCommand(interaction)) + this.on('guildCreate', guild => this.onGuildJoin(guild)) + this.on('guildDelete', guild => this.onGuildLeave(guild)) + this.on('warn', message => this.logger.warn(message)) + this.on('error', error => this.logger.error(error)) + this.on('raw', d => this.manager.updateVoiceState(d)) + setInterval(async () => await listManager.sendServerCount(), 300 * 1000) setInterval(() => { this.user.setActivity(`music in ${this.manager.players.size} guilds`, { type: 'PLAYING' }) diff --git a/src/commands/Play.ts b/src/commands/Play.ts index 3a6b045..39b6e42 100644 --- a/src/commands/Play.ts +++ b/src/commands/Play.ts @@ -25,6 +25,10 @@ export const Play = new (class extends Command { selfDeafen: true, }) + await soup.redis.addPlayer(player) + + // console.log(JSON.stringifysoup.redis.fetchPlayers()) + let res: SearchResult try { @@ -56,4 +60,4 @@ export const Play = new (class extends Command { } } } -})() \ No newline at end of file +})()