关键词:
【中文标题】node.js/discord.js:TypeError:无法读取 null 的属性“setPresence”【英文标题】:node.js/discord.js: TypeError: Cannot read property 'setPresence' of null 【发布时间】:2020-02-16 22:19:19 【问题描述】:尝试一个简单的测试,但我从这一行得到一个错误: 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
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
编辑: 只是为了让您知道,我尝试了 .setActivity 和 .setGame。同样的错误。
【问题讨论】:
我假设您将实际令牌传递给.login()
而不是 "token"
?
@c_sagan 不,我只是想隐藏我的令牌
尝试将.login()
移到.on()
范围之外。见docs
还要注意.login()
返回一个promise,所以当你调用.setPresence()
时,你还没有收到来自.login()
调用的响应。试试.login().then(client.user.setPresence())
同样的错误,我尝试了你让我做的一切
【参考方案1】:
我认为这里发生的事情是 Node.js 事件循环的结果。您调用异步函数.login()
,并在.login()
的响应到达之前立即尝试client.user.setPresence()
。
试试
.login("token")
.then(client.user.setPresence("game", type: "PLAYING" ));
见Node Event Loop
【讨论】:
试过了,同样的错误。 client.login("令牌"); client.user.setPresence('game', type: 'PLAYING' ); TypeError:无法读取 null 的属性“setPresence”【参考方案2】:.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 存在。
每当您在节点中(不仅仅是在节点中!)中使用 回调 时,您都会将函数作为参数传递给某些东西。
该回调可能是计划该函数在以后运行。在这种特定情况下,它安排具有console.log
的函数在客户端“准备就绪”的未来事件上运行。
【讨论】:
这行得通。但它没有向控制台输出任何内容。另外,我想稍后在代码中更改机器人的状态。我以后可以使用相同的 .setPresence 函数吗? 所以我实际上从未制作过不和谐的机器人。从快速查看文档看来,您应该在外部调用“登录”(而不是在就绪回调中)。当客户端成功进行身份验证时,它应该发出“就绪”事件。 没错,您应该在就绪事件的回调之外登录(使用您的机器人令牌)。成功登录后,ready 事件将触发,并且您提供的回调函数中的内容将运行。此时,client.user
不应再为null
,您将能够使用.setPresence()
之类的方法。基本上,将您的方法放在 ready 事件的回调中,您可以将 .login()
放在 js 文件的开头或结尾,没关系(只是不在尚未运行的回调中,显然它不应该在定义 client
之前)。从函数中导出数据 [mysql, node.js, discord.js]
】从函数中导出数据[mysql,node.js,discord.js]【英文标题】:Exportingdatafromthefunction[mysql,node.js,discord.js]【发布时间】:2021-08-1414:05:07【问题描述】:我在从函数中导出数据时遇到了这样的问题。我不知道它是否可以完成,但我在这里... 查看详情
node.js/discord.js:TypeError:无法读取 null 的属性“setPresence”
】node.js/discord.js:TypeError:无法读取null的属性“setPresence”【英文标题】:node.js/discord.js:TypeError:Cannotreadproperty\'setPresence\'ofnull【发布时间】:2020-02-1622:19:19【问题描述】:尝试一个简单的测试,但我从这一行得到一个错误:clie... 查看详情
我的消息在 node.js/discord.js 中重复了很多次
】我的消息在node.js/discord.js中重复了很多次【英文标题】:Mymessagesrepeatmanytimesinnode.js/discord.js【发布时间】:2020-05-1201:45:01【问题描述】:我正在制作一个ONUW(OneNightUltimateWerewolf)Discord机器人,可以让你玩游戏。对于游戏,我... 查看详情
如何从 json 响应中连接来自不同对象数组的值? Node.js、Discord.js
】如何从json响应中连接来自不同对象数组的值?Node.js、Discord.js【英文标题】:HowdoIjoinvaluesfromdifferentobjectarrayfromajsonresponse?Node.js,Discord.js【发布时间】:2021-08-0219:12:39【问题描述】:所以这是来自api包装器npm包的JSON响应[name:Dank... 查看详情
Node.js、discord.js 和 MySQL - ER_NO_SUCH_TABLE:表 'NAME' 不存在
】Node.js、discord.js和MySQL-ER_NO_SUCH_TABLE:表\\\'NAME\\\'不存在【英文标题】:Node.js,discord.js&MySQL-ER_NO_SUCH_TABLE:Table\'NAME\'doesn\'texistNode.js、discord.js和MySQL-ER_NO_SUCH_TABLE:表\'NAME\'不存在【发布时间】:2021-04-1416:00:51【问题 查看详情
Node.js Discord.js UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“calculatedPosition”
】Node.jsDiscord.jsUnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“calculatedPosition”【英文标题】:Node.jsDiscord.jsUnhandledPromiseRejectionWarning:TypeError:Cannotreadproperty\'calculatedPosition\'ofundefined【发布时间】:2020 查看详情
为啥我的 node.js discord.js 机器人不发送文件? (没有错误)(可以发送消息)
】为啥我的node.jsdiscord.js机器人不发送文件?(没有错误)(可以发送消息)【英文标题】:whymynode.jsdiscord.jsbotisnotsendingfiles?(noerrors)(cansendmessages)为什么我的node.jsdiscord.js机器人不发送文件?(没有错误)(可以发送消息)【发... 查看详情
Heroku Node.js Discord.js 机器人部署失败
】HerokuNode.jsDiscord.js机器人部署失败【英文标题】:HerokuNode.jsDiscord.jsbotdeploymentfailed【发布时间】:2019-02-1601:47:22【问题描述】:我遇到了很多问题。我创建了一个本地git存储库,将推荐设置设置为advicedhere,并将机器人使用的... 查看详情
如何只显示最新的文档?
...时间】:2019-05-2818:05:18【问题描述】:我让猫鼬在Node.JS/Discord.JS上搜索一个文档,我将它排序为date:-1,它仍然发送数据库中最旧的文档。这是我的代码,我做错了什么?gLog.findOne("GiveawayHostID":name).sort(date:-1).exec(funct 查看详情
不和谐 <@!user id> 和 <@userid>
】不和谐<@!userid>和<@userid>【英文标题】:Discord<@!userid>vs<@userid>【发布时间】:2017-12-2909:23:54【问题描述】:所以我正在使用Node.JS/Discord.JS创建一个机器人,我有一个问题。在某些服务器上,当您提及用户时,... 查看详情
将数据写入 Mongodb 或更新它,如果它已经在数据库中
...020-12-3002:56:36【问题描述】:所以我正在尝试使用Node.JS、Discord.js和MongoDB制作一个关卡系统,但我不知道如何在数据库中添加/更新数据。这是我使用的代码,但它不起作用:if(db.collec 查看详情
删除/保留数据框列
...了所有的建议here无论我做什么,我都会收到以下错误:TypeEr 查看详情
无法在 Firebase 函数中读取 null 的属性
...f中删除了值,我在FirebaseFunctions日志中收到此错误消息:TypeEr 查看详情
20161213py学习笔记:string元素不可修改/几种迭代
1、字符串中的元素是不可修改的strings=‘andasfefanagrgihaigahairt‘forindex,stringinenumerate(strings): #printindex,string ifstring==‘a‘: strings[index]=‘w‘printstrings 这段代码运行时,会出现: strings[index]=‘w‘ TypeEr 查看详情
TypeError:“图像”对象不能使用 PIL 进行下标
】TypeError:“图像”对象不能使用PIL进行下标【英文标题】:TypeError:\'Image\'objectisnotsubscriptableusingPIL【发布时间】:2021-04-1810:17:13【问题描述】:我正在尝试在googlecolab上开发一个网络应用程序。我想在这个Web应用程序中使用我... 查看详情
ionic 2中的本机facebook登录
...件。但是当我运行应用程序时出现错误未捕获(承诺):TypeEr 查看详情
Worklight 适配器它不是一个函数,它是“对象”。错误
...ript的java代码我得到一个错误:rocedureinvocationerror.EcmaError:TypeEr 查看详情
将大型嵌套字典转储到 JSON 对象中[重复]
...接转储给我一个错误:json_dictionary=json.dumps(mapped_dictionary)TypeEr 查看详情