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

Posted

技术标签:

【中文标题】Discord.js 机器人“未处理的承诺拒绝类型错误:无法读取未定义的属性 255890520990154752”【英文标题】:Discord.js Bot "Unhanded Promised Rejection Type Error: Cannot Read Property 255890520990154752 of undefined" 【发布时间】:2020-02-06 13:05:52 【问题描述】:
const commando = require('discord.js-commando');
const ytdl = require('ytdl-core');

function Play(connection, message) 

    var servers = 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();
        
    );



class PlayCommand extends commando.Command

    constructor(client)
    
        super(client,
            name: 'play',
            group: 'music',
            memberName: 'play',
            description: 'Plays music!'
        );
    

    async run(message, args)
    
        if (!permissions.has('CONNECT') || !permissions.has('SPEAK')) 
            return message.channel.send('I need the permissions to join and speak in your voice channel!');
        

        if(message.member.voiceChannel)
        
            if(!message.guild.voiceConnection)
            
                if(!servers[message.guild.id])
                
                    var server = servers[message.guild.id];
                    servers[message.guild.id] = queue: []
                
                message.member.voiceChannel.join()
                    .then(connection => 
                        var servers = servers[message.guild.id];
                        message.reply("Sucessfully Joined Channel!");

                        let validate = await ytdl.validateURL(args);
                        if(!validate) return message.channel.send('Sorry, Please input a **valid** url.');

                        server.queue.push(args);
                        Play(connection, message);
                    )
            
        
        else
            message.reply("You must be in a voice channel to use that command! ")
        

        console.log(message.author.username + ' Used a ' + 'music' + ' command \n');
    


module.exports = PlayCommand;

这是机器人上“播放”命令的代码。 机器人的工作是使用 ytdl 库播放音乐。

我不确定问题出在哪里;起初,我认为它可能没有找到库或安装错误,所以我重新安装了所有库(ytdl-core、discord.js、discord.js-commando...)

还是什么都没有!

我对 javascript 尤其是错误代码不是很流利,因此非常感谢任何有助于解决问题的正确方向的帮助或指导!

这是我在这里提出的第一个问题,因此对于任何不一致之处,我深表歉意。

完整的错误代码:

(node:18216) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

【问题讨论】:

【参考方案1】:

您的 servers 变量似乎从未初始化过。确保它实际上包含正确的公会。

【讨论】:

以上是关于Discord.js 机器人“未处理的承诺拒绝类型错误:无法读取未定义的属性 255890520990154752”的主要内容,如果未能解决你的问题,请参考以下文章

我将如何使用两个不同版本的 discord.js | Discord.js 机器人

(Discord 机器人)当用户加入 Discord 服务器(discord.js)时,如何发送欢迎消息?

Discord.js - Discord 机器人停止响应命令

Discord.JS - Hypixel Discord 机器人

如何使用 discord.js 使用 discord 机器人发送 DM

我的 Heroku Discord 机器人离线 - discord.js