javascript - 使用 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 ,但同样的问题。
我不知道我使用的是什么版本的软件,抱歉。
解决方案
client.user
是null
因为机器人用户尚未登录。将client.user.setPresence
调用移动到ready
事件处理程序中。
client.once('ready', () => {
client.user.setPresence({
activity: { name: 'ඞ amogus ඞ' },
status: 'online',
})
})
推荐阅读
- swagger - 使用 Swagger 描述 API 的标头参数
- angular - ng2智能表中的复杂数据
- node.js - 节点检查等待端口空闲
- haskell - Opaleye 中跨链接表的数组聚合
- node.js - node.js 和 mongodb:async 的 await collection.find 与 collection.find.exec
- redis - 集群中的 Redis Gears 事件
- c# - xUnit InlineData 意外结果
- vue.js - 如何使用选定的值初始化选择?
- jsf - 如何将 p:photoCam 更新到最新版本但将我的 primefaces 保留在 6.1.RC2 中?
- javascript - 如何为 django 中的用户从本地目录制作文件上传器(.jpg、.mp3、.pdf 等)