discord.js 音乐机器人队列

时间:2021-06-18 13:03:29

标签: javascript node.js discord discord.js

我正在制作一个与音乐播放器不和谐的机器人,我正在尝试创建一个队列而不是替换正在播放的歌曲。

这是我的代码:

const ytdl = require('ytdl-core');
const ytSearch = require('yt-search');

module.exports = {
name: 'p',
description: 'Joins and plays a video from youtube',
async execute(message, args) {
    const voiceChannel = message.member.voice.channel;

    if (!voiceChannel) return message.channel.send('You need to be in a channel to execute this command!');
    const permissions = voiceChannel.permissionsFor(message.client.user);
    if (!permissions.has('CONNECT')) return message.channel.send('You dont have the correct permissons');
    if (!permissions.has('SPEAK')) return message.channel.send('You dont have the correct permissons');
    if (!args.length) return message.channel.send('You need to send the second argument!');

    const validURL = (str) =>{
        var regex = /(http|https):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/;
        if(!regex.test(str)){
            return false;
        } else {
            return true;
        }
    }

    if(validURL(args[0])){

        const  connection = await voiceChannel.join();
        const stream  = ytdl(args[0], {filter: 'audioonly'});

        connection.play(stream, {seek: 0, volume: 1})
        .on('finish', () =>{
            voiceChannel.leave();
            message.channel.send('leaving channel');
        });

        await message.reply(`Now Playing Your Link!`)

        return
    }

    
    const  connection = await voiceChannel.join();

    const videoFinder = async (query) => {
        const videoResult = await ytSearch(query);

        return (videoResult.videos.length > 1) ? videoResult.videos[0] : null;

    }

    const video = await videoFinder(args.join(' '));

    if(video){
        const stream  = ytdl(video.url, {filter: 'audioonly'});
        connection.play(stream, {seek: 0, volume: 1})
        .on('finish', () =>{
            voiceChannel.leave();
        });

        await message.reply(`Now Playing ${video.title}`)
    } else {
        message.channel.send('No results found');
    }
}
}

这不是我的全部代码(有 leave 命令和 if 命令 === 'join'。 如果有人可以帮助我,那就太好了

0 个答案:

没有答案