如何从 discord.js 中的 JSON 对象中检索消息作为对象?
Posted
技术标签:
【中文标题】如何从 discord.js 中的 JSON 对象中检索消息作为对象?【英文标题】:How can I retrieve a message as an object from a JSON object in discord.js? 【发布时间】:2020-12-22 09:09:01 【问题描述】:我正在制作一个不和谐的机器人,我目前正在为我的服务器的版主开发选举功能。
我将选举所需的所有数据保存在外部 JSON
文件中,这样,如果机器人在选举期间中断,它可以在重新启动时从停止的地方恢复而无需用户输入(我正在使用npm 包edit-json-file
以便编辑和阅读我的JSON
)。
问题是当我从JSON
检索消息对象(我想为其创建反应收集器)时,我收到此错误:
TypeError: electionData.get("message").createReactionCollector is not a function
JSON
中的消息对象如下所示:
"message":
"channelID": "678347518907777062",
"deleted": false,
"id": "750965454297628754",
"type": "DEFAULT",
"content": "@everyone",
"authorID": "729286679822860309",
"pinned": false,
"tts": false,
"system": false,
"embeds": [
"type": "rich",
"title": "Election",
"description": "It's time to vote! \n\n???? for <@247283454440374274> \n???? for <@235088799074484224> \n\n__*Warning:*__ *You* ***can't*** *remove or change your vote later.*",
"color": 15046144,
"timestamp": 1599114577345,
"fields": [],
"thumbnail": null,
"image": null,
"video": null,
"author": null,
"provider": null,
"files": []
],
"attachments": [],
"createdTimestamp": 1599114516568,
"editedTimestamp": null,
"webhookID": null,
"applicationID": null,
"activity": null,
"flags": 0,
"reference": null,
"guildID": "591947002066108424",
"cleanContent": "@everyone"
我也尝试通过它的 id 来缓存消息,但我就是不能......
我该怎么做才能从JSON
中将消息作为对象检索?
【问题讨论】:
electionData
是如何创建的?
您要发送消息使用表情符号投票吗?
electionData.message
应该可以工作。
@ShubhamSrivastava 完全正确,但我希望以后能够从外部源重用消息对象
@ChrisG 我是通过同一个 npm 包创建的
【参考方案1】:
每当您读取 JSON 时,它都会返回一个普通对象,其中只填充属性。您尝试调用一个方法,就好像 electionData.get("message")
是一个类一样。
因此,您要么需要使用 JSON 数据实例化一个新类,要么将函数移到类之外。
【讨论】:
第二部分我不太明白 没关系...而不是electionData.get("message").createReactionCollector(...);
我用它做了一个新对象,它可以工作,谢谢以上是关于如何从 discord.js 中的 JSON 对象中检索消息作为对象?的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js 集合;如何从集合中的数组中导航和抓取/计数对象
如何在 discord.js 代码块中对 json 对象值进行排序?
discord.js:我如何从 json 文件中获取随机项?