首页 > 解决方案 > 使用 NPM、node.js 和 discord.js,我不断收到 TypeError: Cannot read property 'setPresence' of null

问题描述

我正在使用 NPM 和 discord.js 制作一个不和谐的机器人,但我不断收到一条错误消息,上面写着“TypeError: Cannot read property 'setPresence' of null”。

这是我的机器人代码:

const Discord = require('discord.js');
const { prefix, token } = require('./config.json');
const client = new Discord.Client();

client.user.setPresence({ activity: { name: 'ඞ amogus ඞ' }, status: 'online' });


client.once('ready', () => {
    console.log('Ready!');
});

client.on('message', message => {
    if (message.content === `${prefix}ping`) {
        message.channel.send('Pong.');
    } else if (message.content === `${prefix}beep`) {
        message.channel.send('Boop.');
    } else if (message.content === `${prefix}server`) {
        message.channel.send(`Server name: ${message.guild.name}\nTotal members: ${message.guild.memberCount}`);
    } else if (message.content === `${prefix}smile`) {
        message.react('');
    } else if (message.content === `${prefix}ree`) {
        message.channel.send(`REEEEEEEEEEEEEEEEEEE`)
    } else if (message.content === `among us`) {
    message.channel.send(`AMOG US??? ඞඞඞඞඞ`)
    } else if (message.content === `amongus`) {
    message.channel.send(`did you say AMOG US?????? ඞඞඞ`)
    } else if (message.content === `amogus`) {
    message.channel.send(`wow.. are u talking about MOGUS? ඞඞඞ`)
    } else if (message.content === `shut up`) {
    message.channel.send(`no u XD HAHAHAHAHA seriously though no you shut up`)
    } else if (message.content === `${prefix}stop`) {
    message.channel.send(`no ;-;`)
    } else if (message.content === `${prefix}frog`) {
        message.react('');
    } else if (message.content === `poo`) {
    message.channel.send(`are you talking about yourself?`)
    } else if (message.content === `shit`) {
    message.channel.send(`are you talking about yourself?`)
    } else if (message.content === `doo doo doo doo`) {
    message.channel.send(`https://www.youtube.com/watch?v=XQR_n90iWi0`)
    } else if (message.content === `ha`) {
    message.channel.send(`I don't get the joke.`)
    }
});


client.login(token);

这是错误:

            ^

TypeError: Cannot read property 'setPresence' of null
    at Object.<anonymous> (/Users/cassnorland/index.js:6:13)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47

该机器人在此之前运行良好,我之前没有任何错误(除了拼写错误)

我也尝试过 setActivity ,但同样的问题。

我不知道我使用的是什么版本的软件,抱歉。

标签: javascriptnode.js

解决方案


client.usernull因为机器人用户尚未登录。将client.user.setPresence调用移动到ready事件处理程序中。

client.once('ready', () => {
  client.user.setPresence({
    activity: { name: 'ඞ amogus ඞ' },
    status: 'online',
  })
})

推荐阅读