[英]Using NPM, node.js and discord.js, I keep getting TypeError: Cannot read property 'setPresence' of null
[英]node.js/discord.js: TypeError: Cannot read property 'setPresence' of null
嘗試一個簡單的測試,但我從這一行得到一個錯誤:client.user.setPresence('game', { type: 'PLAYING' });
VSCode 的日志:
C:\Users\dvmvged\Documents\mao>node . whoa.js
C:\Users\dvmvged\Documents\mao\whoa.js:9
client.user.setPresence('game', { type: 'PLAYING' });
^
TypeError: Cannot read property 'setPresence' of null
at Object.<anonymous> (C:\Users\dvmvged\Documents\mao\whoa.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
哇.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
編輯:只是為了讓你知道,我試過.setActivity 和.setGame。 同樣的錯誤。
我認為這里發生的事情是 Node.js 事件循環的結果。 您調用異步 function, .login()
,並在.login()
的響應到達之前立即嘗試client.user.setPresence()
。
嘗試
.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 存在的保證。
每當您在節點中使用回調時(不僅僅是在節點中)。 您將 function 作為參數傳遞給某些東西。
該回調可能正在安排function 稍后運行。 在這個特定的案例中,它安排了 function,它有console.log
在客戶端“准備好”的未來事件上運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.