Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Discord = require("discord.js");
- const client = new Discord.Client();
- const ytdl = require("ytdl-core");
- const request = require("request");
- const fs = require("fs");
- const getYoutubeID = require("get-youtube-id");
- const fetchVideoInfo = require("youtube-info")
- var config = JSON.parse(fs.readFileSync('./settings.json', 'utf-8'));
- const yt_api_key = config.yt_api_key
- const bot_controller = config.bot_controller;
- const prefix = config.prefix;
- const discord_token = config.discord_token;
- client.login(discord_token);
- var queue = [];
- var queueNames = [];
- var isPlaying = false;
- var dispatcher = null;
- var voicechannel = null;
- var skipReq = 0;
- var skippers = [];
- client.on("message", function (message) {
- const member = message.member;
- const mess = message.content.toLowerCase();
- const args = message.content.split(' ').slice(1).join(" ")
- if (mess.startsWith(prefix + "play")) {
- if (member.voiceChannel || client.guild.get("387879921911070721").voiceConnection != null) {
- if (queue.length > 0 || isPlaying) {
- getID(args, function (id) {
- add_to_queue(id);
- fetchVideoInfo(id, function (err, videoInfo) {
- if (err) throw new Error(err);
- message.reply(" Added to queue: **" + videoInfo.title + "**");
- queueNames.push(videoInfo.title)
- })
- });
- } else {
- isPlaying = true;
- getID(args, function (id) {
- queue.push("placeholder");
- playMusic(id, message);
- fetchVideoInfo(id, function (err, videoInfo) {
- if (err) throw new Error(err);
- message.reply(" Now playing **" + videoInfo.title + "**");
- })
- });
- }
- } else {
- message.reply("You need to be in a voice channel!");
- }
- } else if (mess.startsWith(prefix + "skip")) {
- if (skippers.indexOf(message.author.id) === -1) {
- skippers.push(message.author.id);
- skipReq++;
- if (skipReq >= Math.ceil((voicechannel.members.size - 1) / 2)) {
- skip_song(message);
- message.reply("your skip has been acknowledged. Skipping now!")
- } else {
- message.reply("your skip has been acknowledged. You need **" + Math.ceil((voicechannel.members.size - 1) / 2) - skipReq) = "** more skip votes!";
- }
- } else {
- message.reply("you already voted to skip!")
- }
- } else if (mess.startsWIth(prefix + "queue")) {
- var mess = "```";
- for (var i = 0; i < queueNames.length; i++) {
- var temp = (i + 1) + ":" + queueNames[i] + (i === 0 ? "**(Current Song)**" : "") + "\n";
- if ((message2 + temp).length <= 2000 - 3) {
- message2 += temp;
- } else {
- message2 += "```"
- message.channel.send(message2);
- message2 = "```";
- }
- }
- message2 += "```";
- message.channel.send(message2)
- }
- }
- }
- }
- Client.on("ready", function () {
- console.log("I am ready!");
- });
- function skip_song(message) {
- dispatcher.end();
- }
- function playMusic(id, message) {
- voicechannel = message.member.voiceChannel;
- voicechannel.join().then(function (connection) {
- stream = ytdl("https://www.youtube.com/watch?v=" + id, {
- filer: "audioonly"
- });
- skipReq = 0;
- skippers = [];
- dispatcher = connection.playStream(stream);
- queue.shift();
- queueNames.shift
- if (queue.length == 0) {
- queue = [];
- queueNames = [];
- isPlaying = false;
- } else {
- setTimeout(function () {
- playMusic(queue[0], message);
- }, 500);
- }
- });
- }
- function isYoutube(str) {
- return str.toLowerCase().indexOf("youtube.com") > -1;
- }
- function getID(str, cb) {
- if (isYoutube(str)) {
- cb(getYoutubeID(str));
- } else {
- search_video(str, function (id) {
- cb(id);
- });
- }
- }
- function add_to_queue(strID) {
- if (isYoutube(strID)) {
- queue.push(getYoutubeID(strID));
- } else {
- queue.push(strID);
- }
- }
- function search_video(query, callback) {
- request("https://www.googleapis.com/youtube/v3/search?part=id&type=video&q=" + encodeURIComponent(query) + "&key=" + yt_api_key, function (error, response, body) {
- var json = JSON.parse(body);
- callback(json.items[0].id.videoId);
- });
- };
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement