如何从 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 中的用户名中查找用户 ID?

Discord.js 集合;如何从集合中的数组中导航和抓取/计数对象

如何在 discord.js 代码块中对 json 对象值进行排序?

discord.js:我如何从 json 文件中获取随机项?

如何添加 ID 保存在 JSON 文件 discord.js v12 中的角色?

无法读取未定义 discord.js 的属性“名称”尝试读取 json 中的数组