]> git.lizzy.rs Git - furrybot-discord.git/commitdiff
Add music command
authorElias Fleckenstein <eliasfleckenstein@web.de>
Sun, 6 Mar 2022 17:18:05 +0000 (18:18 +0100)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Sun, 6 Mar 2022 17:18:05 +0000 (18:18 +0100)
init.js
music.js [new file with mode: 0644]
package-lock.json
package.json

diff --git a/init.js b/init.js
index 02f71b562f324f916bb33ec35e7909498205922b..352591eff2cdc22daf106e0ff38cbfb1adf70bbd 100644 (file)
--- a/init.js
+++ b/init.js
@@ -4,7 +4,7 @@ const copypasta = require("./copypasta.json")
 const copypastaTrigger = require("./copypasta.js")
 
 const client = module.exports = new Discord.Client({
-       intents: [Discord.GatewayIntentBits.Guilds, Discord.GatewayIntentBits.GuildMessages]
+       intents: [Discord.GatewayIntentBits.Guilds, Discord.GatewayIntentBits.GuildMessages, Discord.GatewayIntentBits.GuildVoiceStates]
 })
 
 client.login(process.env.DISCORD_TOKEN)
@@ -40,7 +40,7 @@ client.on("messageCreate", msg => {
        }
 })
 
-const modules = ["basic", "bullshit", "marriage", "http", "roleplay", "death", "economy", "waifu", "operator", "nsfw", "random"]
+const modules = ["basic", "bullshit", "marriage", "http", "roleplay", "death", "economy", "waifu", "operator", "nsfw", "random", "music"]
 
 for (let f of modules) {
        let m = require(`./${f}.js`)
diff --git a/music.js b/music.js
new file mode 100644 (file)
index 0000000..745c549
--- /dev/null
+++ b/music.js
@@ -0,0 +1,26 @@
+const ytdl = require("ytdl-core")
+const voice = require("@discordjs/voice")
+
+module.exports = {
+       play: {
+               func: (msg, url) => {
+                       const channel = msg.member.voice.channel
+                       
+                       if (! channel)
+                               return msg.reply("Join a voice channel you fucking moron")
+
+                       const conn = voice.joinVoiceChannel({
+                               channelId: channel.id,
+                               guildId: channel.guild.id,
+                               adapterCreator: channel.guild.voiceAdapterCreator,
+                       })
+               
+                       const stream = ytdl(url.join(" "), {filter: "audioonly"})
+                       const resource = voice.createAudioResource(stream, {inputType: voice.StreamType.Arbitrary})
+                       const player = voice.createAudioPlayer()
+                               
+                       player.play(resource)
+                       conn.subscribe(player)
+               }
+       }
+}
index e0cb31f854a8f30d08d85ad4a8bc6b961eab9a0f..4ade40c164f0b660937e8176dd70c958b0e51ec8 100644 (file)
@@ -9,11 +9,14 @@
       "version": "1.0.0",
       "license": "GPL-3.0-or-later",
       "dependencies": {
+        "@discordjs/voice": "^0.9.0-dev.1646395401.6f7a366",
         "discord.js": "^14.0.0-dev.1646395406.6f7a366",
         "free-google-images": "^1.0.4",
         "node-fetch": "^2.0.0",
         "pseudo-random": "^0.6.0",
-        "sha1": "^1.1.1"
+        "sha1": "^1.1.1",
+        "sodium": "^3.0.2",
+        "ytdl-core": "^4.11.0"
       }
     },
     "node_modules/@discordjs/builders": {
         "node": ">=16.9.0"
       }
     },
+    "node_modules/@discordjs/voice": {
+      "version": "0.9.0-dev.1646395401.6f7a366",
+      "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.9.0-dev.1646395401.6f7a366.tgz",
+      "integrity": "sha512-ElWwzIwZaepyLcRIuv4BS7Z5oA002tO5Zw+muJVoR5U5n+iQsLhB20NBN/PyGwqLvEn9QVxiwvooWwA0rwxBEg==",
+      "dependencies": {
+        "@types/ws": "^8.2.2",
+        "discord-api-types": "^0.27.0",
+        "prism-media": "^1.3.2",
+        "tiny-typed-emitter": "^2.1.0",
+        "tslib": "^2.3.1",
+        "ws": "^8.5.0"
+      },
+      "engines": {
+        "node": ">=16.9.0"
+      }
+    },
     "node_modules/@sapphire/async-queue": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.2.0.tgz",
       "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
       "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40="
     },
+    "node_modules/m3u8stream": {
+      "version": "0.8.6",
+      "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz",
+      "integrity": "sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==",
+      "dependencies": {
+        "miniget": "^4.2.2",
+        "sax": "^1.2.4"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/mime-db": {
       "version": "1.51.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
         "node": ">= 0.6"
       }
     },
+    "node_modules/miniget": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.2.tgz",
+      "integrity": "sha512-a7voNL1N5lDMxvTMExOkg+Fq89jM2vY8pAi9ZEWzZtfNmdfP6RXkvUtFnCAXoCv2T9k1v/fUJVaAEuepGcvLYA==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/node-addon-api": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+      "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
+    },
     "node_modules/node-fetch": {
       "version": "2.6.7",
       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
         "parse5": "^6.0.1"
       }
     },
+    "node_modules/prism-media": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz",
+      "integrity": "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==",
+      "peerDependencies": {
+        "@discordjs/opus": "^0.5.0",
+        "ffmpeg-static": "^4.2.7 || ^3.0.0 || ^2.4.0",
+        "node-opus": "^0.3.3",
+        "opusscript": "^0.0.8"
+      },
+      "peerDependenciesMeta": {
+        "@discordjs/opus": {
+          "optional": true
+        },
+        "ffmpeg-static": {
+          "optional": true
+        },
+        "node-opus": {
+          "optional": true
+        },
+        "opusscript": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/pseudo-random": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/pseudo-random/-/pseudo-random-0.6.0.tgz",
       "integrity": "sha1-c9AAwgaN0sYTzA/CPQvRp4XVcDY="
     },
+    "node_modules/sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+    },
     "node_modules/sha1": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz",
         "node": "*"
       }
     },
+    "node_modules/sodium": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/sodium/-/sodium-3.0.2.tgz",
+      "integrity": "sha512-IsTwTJeoNBU97km3XkrbCGC/n/9aUQejgD3QPr2YY2gtbSPru3TI6nhCqgoez9Mv88frF9oVZS/jrXFbd6WXyA==",
+      "hasInstallScript": true,
+      "dependencies": {
+        "node-addon-api": "*"
+      }
+    },
+    "node_modules/tiny-typed-emitter": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz",
+      "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA=="
+    },
     "node_modules/tr46": {
       "version": "0.0.3",
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
         }
       }
     },
+    "node_modules/ytdl-core": {
+      "version": "4.11.0",
+      "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.11.0.tgz",
+      "integrity": "sha512-Q3hCLiUA9AOGQXzPvno14GN+HgF9wsO1ZBHlj0COTcyxjIyFpWvMfii0UC4/cAbVaIjEdbWB71GdcGuc4J1Lmw==",
+      "dependencies": {
+        "m3u8stream": "^0.8.6",
+        "miniget": "^4.2.2",
+        "sax": "^1.1.3"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/zod": {
       "version": "3.13.4",
       "resolved": "https://registry.npmjs.org/zod/-/zod-3.13.4.tgz",
         "tslib": "^2.3.1"
       }
     },
+    "@discordjs/voice": {
+      "version": "0.9.0-dev.1646395401.6f7a366",
+      "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.9.0-dev.1646395401.6f7a366.tgz",
+      "integrity": "sha512-ElWwzIwZaepyLcRIuv4BS7Z5oA002tO5Zw+muJVoR5U5n+iQsLhB20NBN/PyGwqLvEn9QVxiwvooWwA0rwxBEg==",
+      "requires": {
+        "@types/ws": "^8.2.2",
+        "discord-api-types": "^0.27.0",
+        "prism-media": "^1.3.2",
+        "tiny-typed-emitter": "^2.1.0",
+        "tslib": "^2.3.1",
+        "ws": "^8.5.0"
+      }
+    },
     "@sapphire/async-queue": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.2.0.tgz",
       "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
       "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40="
     },
+    "m3u8stream": {
+      "version": "0.8.6",
+      "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz",
+      "integrity": "sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==",
+      "requires": {
+        "miniget": "^4.2.2",
+        "sax": "^1.2.4"
+      }
+    },
     "mime-db": {
       "version": "1.51.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
         "mime-db": "1.51.0"
       }
     },
+    "miniget": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.2.tgz",
+      "integrity": "sha512-a7voNL1N5lDMxvTMExOkg+Fq89jM2vY8pAi9ZEWzZtfNmdfP6RXkvUtFnCAXoCv2T9k1v/fUJVaAEuepGcvLYA=="
+    },
+    "node-addon-api": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+      "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
+    },
     "node-fetch": {
       "version": "2.6.7",
       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
         "parse5": "^6.0.1"
       }
     },
+    "prism-media": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz",
+      "integrity": "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==",
+      "requires": {}
+    },
     "pseudo-random": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/pseudo-random/-/pseudo-random-0.6.0.tgz",
       "integrity": "sha1-c9AAwgaN0sYTzA/CPQvRp4XVcDY="
     },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+    },
     "sha1": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz",
         "crypt": ">= 0.0.1"
       }
     },
+    "sodium": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/sodium/-/sodium-3.0.2.tgz",
+      "integrity": "sha512-IsTwTJeoNBU97km3XkrbCGC/n/9aUQejgD3QPr2YY2gtbSPru3TI6nhCqgoez9Mv88frF9oVZS/jrXFbd6WXyA==",
+      "requires": {
+        "node-addon-api": "*"
+      }
+    },
+    "tiny-typed-emitter": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz",
+      "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA=="
+    },
     "tr46": {
       "version": "0.0.3",
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
       "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
       "requires": {}
     },
+    "ytdl-core": {
+      "version": "4.11.0",
+      "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.11.0.tgz",
+      "integrity": "sha512-Q3hCLiUA9AOGQXzPvno14GN+HgF9wsO1ZBHlj0COTcyxjIyFpWvMfii0UC4/cAbVaIjEdbWB71GdcGuc4J1Lmw==",
+      "requires": {
+        "m3u8stream": "^0.8.6",
+        "miniget": "^4.2.2",
+        "sax": "^1.1.3"
+      }
+    },
     "zod": {
       "version": "3.13.4",
       "resolved": "https://registry.npmjs.org/zod/-/zod-3.13.4.tgz",
index fa47dd6a9df074c08722341b3eff23fb5ca11200..ac7c3b87ab93f2e6296cba3f8b8a191e366ae07d 100644 (file)
   },
   "homepage": "https://github.com/EliasFleckenstein03/furrybot-discord#readme",
   "dependencies": {
+    "@discordjs/voice": "^0.9.0-dev.1646395401.6f7a366",
     "discord.js": "^14.0.0-dev.1646395406.6f7a366",
     "free-google-images": "^1.0.4",
     "node-fetch": "^2.0.0",
     "pseudo-random": "^0.6.0",
-    "sha1": "^1.1.1"
+    "sha1": "^1.1.1",
+    "sodium": "^3.0.2",
+    "ytdl-core": "^4.11.0"
   }
 }