node.js / discord.js:TypeError:无法读取null的属性'setPresence'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js / discord.js:TypeError:无法读取null的属性'setPresence'相关的知识,希望对你有一定的参考价值。
尝试一个简单的测试,但此行出现错误:client.user.setPresence('game',{type:'PLAYING'});
VSCode的日志:
C:UsersdvmvgedDocumentsmao>node . whoa.js
C:UsersdvmvgedDocumentsmaowhoa.js:9
client.user.setPresence('game', { type: 'PLAYING' });
^
TypeError: Cannot read property 'setPresence' of null
at Object.<anonymous> (C:UsersdvmvgedDocumentsmaowhoa.js:9:13)
←[90m at Module._compile (internal/modules/cjs/loader.js:956:30)←[39m
←[90m at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)←[39m
←[90m at Module.load (internal/modules/cjs/loader.js:812:32)←[39m
←[90m at Function.Module._load (internal/modules/cjs/loader.js:724:14)←[39m
←[90m at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)←[39m
←[90m at internal/main/run_main_module.js:17:11←[39m
whoa.js
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log("Logged in.");
client.login("token");
});
client.user.setPresence('test', { type: 'PLAYING' });
package.json:
{
"name":"test-bot",
"version":"1.0.0",
"description":"simple test",
"main":"whoa.js",
"dependencies":{
"discord.js":"^11.5.1"
},
"devDependencies":{
},
"scripts":{
"test":"echo "Error: no test specified" && exit 1"
},
"author":"no one",
"license":"ISC"
}
NPM版本:6.11.3
Node.js版本:12.12.0
Discord.js版本:11.5.1
EDIT:为了让您知道,我尝试了.setActivity和.setGame。同样的错误。
我认为这里发生的是Node.js事件循环的结果。您调用异步函数.login()
,并在client.user.setPresence()
的响应到达之前立即尝试.login()
。
尝试
.login("token")
.then(client.user.setPresence("game", { type: "PLAYING" }));
.user
尚未给您打电话时被填充。我要注释这里发生的顺序。
const Discord = require('discord.js');
const client = new Discord.Client();
// #1
client.on('ready', () => {
// #3
console.log("Logged in.");
client.login("token");
});
// #2
client.user.setPresence('test', { type: 'PLAYING' });
在客户端准备好之后,您只有.user的保证。
[只要您在节点中使用callback(不仅在节点中!),您都将函数作为参数传递给事物。
该回调可能是scheduling该函数在以后运行。在这种特定情况下,它对具有console.log
的函数进行排序,使其在客户端“正在准备好”的将来的event上运行。
以上是关于node.js / discord.js:TypeError:无法读取null的属性'setPresence'的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js + Node.js: SyntaxError: Unexpected token ''
如何隐藏 DiscordAPIError (discord.js) (node.js)
Node.js + Discord.js:无法读取未定义的属性“类”
Node.Js 版本 14 抛出 e;不和谐机器人的错误(discord.js)