Discord 音乐机器人:未定义前缀

Posted

技术标签:

【中文标题】Discord 音乐机器人:未定义前缀【英文标题】:Discord music bot: prefix not defined 【发布时间】:2021-04-25 06:51:19 【问题描述】:

我想制作一个音乐不和谐机器人,但我遇到了一段时间的麻烦。我不断收到错误消息,我从 CodeLyon 的名为“制作您自己的 Discord Bot | Music Bot(播放、跳过、停止命令)”的视频中得到了这段代码

我尝试时总是遇到同样的错误:

ReferenceError: PREFIX 未定义

    const ytdl = require("ytdl-core");
    var servers = ;
    
    client.on('message', message => 
        
        let args = message.content.substring(PREFIX.length).split(" ");
        switch (args[0])
            case "play":
                const prefix = '!'; 
            function play(connection, message)
            var server= servers[message.guild.id];
                server.dispatcher = connection.play(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 channel to play the bot");
            return;
            
           
            if(!serveres[message.guild.id]) servers[message.guild.id] = 
    
               queue: [] 
            
           var server = servers[message.guild.id];
    
           server.queue.push(args[1]);
    
            if(!message.guild.voice) message.member.VoiceChannel.join().then(function(Connection)
                play(connection, message)
    
            )
    
           break;
    
           case 'skip':
               var server = servers[message.guild.id];
               if(server.dispatcher) server.dispatcher.end();
               break;
               case 'stop':
                var server = servers[message.guild.id];
                if(message.guild.voice)
                    for(var i = server.queue.length -1; i >=0;i--)
                    server.queue.splice(i, 1);   
                    
                    server.dispatcher.end();
                    console.log('stopped the queue')
                
                if(message.guild.connection) message.guild.voice.disconnect();
                break;
        
    
    
    );

【问题讨论】:

请确保您的代码格式正确并更清楚地表达问题,因为我无法理解错误/问题是什么。 【参考方案1】:

你得到的错误基本上告诉你你没有定义PREFIX 变量。

您应该在代码的顶部添加以下 constant 变量:

const PREFIX = '!';

【讨论】:

现在我的机器人告诉我我必须在一个频道中,而我已经在一个频道中 只看你的代码和那个教程,那已经过时了。有些事情发生了变化。发生示例错误是因为 message.member.VoiceChannel 的使用已更改为 message.member.voice.channel。我建议你阅读documentation。 实际上,在 CodeLyon 的教程中,您将前缀存储在 .env 文件中。前缀 = !或类似的东西。查看他的“保护您的机器人令牌”视频。 @Shunya Codelyon 有一个更新的 2021 视频。

以上是关于Discord 音乐机器人:未定义前缀的主要内容,如果未能解决你的问题,请参考以下文章

Discord 自定义状态未显示在 Discord.js v12 [关闭]

嵌入音乐机器人不工作/discord.js

ReferenceError:未定义消息

消息未定义 discord.js 聊天机器人

无法读取未定义的属性“on”(TypeError)

Discord.js 机器人“未处理的承诺拒绝类型错误:无法读取未定义的属性 255890520990154752”