Проблемы с Discord JS Musi c Bot - PullRequest
       44

Проблемы с Discord JS Musi c Bot

1 голос
/ 30 января 2020

Я нахожусь в процессе создания бота Discord с JS, предоставляя ему управление, автоматическую роль и т. Д. c. Я только что попал в раздел musi c и не могу понять, в чем дело.

Я считаю, что правильно установил FFmpeg, так как у меня есть доступ к нему из терминала. Я также использовал npm для добавления ytdl-core и opusscript в мою программу.

Что нужно сделать, это заставить бота присоединиться к чату, а затем воспроизвести ссылку на Youtube. В настоящее время я не проверяю ошибки второго аргумента, так как я просто хотел, чтобы он работал изначально. Я реализовал несколько разных экземпляров .toString () и String (), но всегда выдает одну и ту же ошибку, перечисленную ниже.

. Программа по-прежнему выдает эту ошибку:

TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received type object
TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received type object

C:\Users\Thresio's PC\Desktop\Discord Bot\node_modules\opusscript\build\opusscript_native_wasm.js:8
var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var
key;for(key in Module){if(Module.hasOwnProperty(key))
{moduleOverrides[key]=Module[key]}}Module["arguments"]=
[];Module["thisProgram"]="./this.program";Module["quit"]=function(status,toThrow) {throw
toThrow};Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var 
ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_HAS_NODE=false;var 
ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof 
importScripts==="function";ENVIRONMENT_HAS_NODE=typeof process==="object"&&typeof 
process.versions==="object"&&typeof 
process.versions.node==="string";ENVIRONMENT_IS_NODE=ENVIRONMENT_HAS_NODE&&!ENVIRONMENT_IS_WEB&&!ENVIRONM
ENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var
scriptDirectory="";function locateFile(path){i
abort(TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type 
string. Received type object). Build with -s ASSERTIONS=1 for more info. 

Вот мой код для вызова play:

case 'play':

            function play(connection, message){
                var server = servers[message.guild.id];

                server.dispatcher = connection.playStream(ytdl(server.queue[0], {filter: 'audioonly'}));

                server.queue.shift();

                server.dispatcher.on('end', function(){
                    if(server.queue[0]){
                        play(connection, message);
                    }else {
                        connection.disconnect();
                    }
                })
            }

            if(!args[1]){
                message.channel.send('You need to provide a link!');
                return;
            }

            if(!message.member.voiceChannel){
                message.channel.send('You must be in a voice channel to play music!');
                return;
            }

            if(!servers[message.guild.id]) servers[message.guild.id] = {
                queue: []
            }

            var server = servers[message.guild.id];

            server.queue.push(args[1]);

            if(!message.guild.voiceConnection) message.member.voiceChannel.join().then(function(connection){
                play(connection, message);
            })
            break;

Если кто-то может помочь с этим, я был бы очень признателен.

РЕДАКТИРОВАТЬ: я, к сожалению, никогда не понимал мою главную проблему, но теперь я нашел код, который работает (в отличие от моего: /). Для всех, у кого есть эта проблема, я предлагаю использовать код , найденный здесь. Работает как шарм!

1 Ответ

1 голос
/ 30 января 2020

Вы пытаетесь воспроизвести message, сообщив о своем несогласии. Вам нужно использовать игровые аргументы [число]

ЗАМЕНИТЬ

        if(!message.guild.voiceConnection) message.member.voiceChannel.join().then(function(connection){
            play(connection, message);
        })

TO

        if(!message.guild.voiceConnection) message.member.voiceChannel.join().then(function(connection){
            play(connection, args[1]);
        })
...