aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2022-03-06 18:18:05 +0100
committerElias Fleckenstein <eliasfleckenstein@web.de>2022-03-06 18:18:05 +0100
commit9ebd0d19063ab4e94052c531668cb0d7f5e90497 (patch)
tree04a1e94d0fa3c3e9799a06e28f7c0d5af4655551
parent3c1e0fa1156b237504567989509cd4e77430d069 (diff)
downloadfurrybot-discord-9ebd0d19063ab4e94052c531668cb0d7f5e90497.tar.xz
Add music command
-rw-r--r--init.js4
-rw-r--r--music.js26
-rw-r--r--package-lock.json169
-rw-r--r--package.json5
4 files changed, 200 insertions, 4 deletions
diff --git a/init.js b/init.js
index 02f71b5..352591e 100644
--- 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
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)
+ }
+ }
+}
diff --git a/package-lock.json b/package-lock.json
index e0cb31f..4ade40c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -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": {
@@ -58,6 +61,22 @@
"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",
@@ -367,6 +386,18 @@
"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",
@@ -386,6 +417,19 @@
"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",
@@ -429,11 +473,41 @@
"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",
@@ -446,6 +520,20 @@
"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",
@@ -503,6 +591,19 @@
}
}
},
+ "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",
@@ -546,6 +647,19 @@
"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",
@@ -776,6 +890,15 @@
"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",
@@ -789,6 +912,16 @@
"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",
@@ -818,11 +951,22 @@
"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",
@@ -832,6 +976,19 @@
"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",
@@ -872,6 +1029,16 @@
"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",
diff --git a/package.json b/package.json
index fa47dd6..ac7c3b8 100644
--- a/package.json
+++ b/package.json
@@ -17,10 +17,13 @@
},
"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"
}
}