簡體   English   中英

需要幫助讓 JSON.parse() 工作(Discord Bot)

[英]Need help getting JSON.parse() to work (Discord Bot)

我有一個單獨的 JSON 文件,鏈接為

const Players = require('./Database/Players.json');

和一個通過代碼的praser

client.on('message', message => {


    if (message.content.toLowerCase() ==='smack activate') {
        
        let PlayerData = [message.author.username];

        Activate [message.author.username] = {
        AccountActive: 1,
        Health: 100,
        Level: 1,
        Lust: 0,
        Items: ""
        };

        var parsedata = JSON.parse(Players)   // <-----------
        if (parsedata.PlayerData.accountactive === 1) {
            message.channel.send ("Account Already Activated");
            return;
        }

        fs.writeFile("./Database/Players.json", JSON.stringify (Activate, null, 4), err => {
            if (err) throw err;
            message.channel.send ("Account Activated")
        });
    };

但似乎沒有任何效果..我做錯了什么? 我收到此錯誤消息

undefined:1
[object Object]
 ^

看看require是如何工作的。 如文檔中所述: https://nodejs.org/api/modules.html#modules_all_together

LOAD_AS_FILE(X)

  1. 如果 X 是文件,則加載 X 作為其文件擴展名格式。 停止
  2. 如果 X.js 是文件,則將 X.js 加載為 JavaScript 文本。 停止
  3. 如果 X.json 是文件,則將 X.json 解析為 JavaScript Z497031794414A5524BZAC.901 停止
  4. 如果 X.node 是一個文件,則將 X.node 作為二進制插件加載。 停止

所以你不應該調用JSON.parse ,因為require會自動將 json 模塊解析為 JavaScript 對象。

據我了解,您正在嘗試執行以下操作:

  1. 檢查消息作者是否是具有激活帳戶的已知玩家。
  2. 如果是 - 發送帳戶已激活的消息並返回。
  3. 否則 - 將新玩家數據添加到已知玩家。

您可能可以通過以下方式執行此操作:

const Players = require('./Database/Players.json');

client.on('message', message => {
  if (message.content.toLowerCase() === 'smack activate') {

    const PlayerData = Players[message.author.username];

    if (PlayerData && (PlayerData.AccountActive === 1)) {
      message.channel.send("Account Already Activated");
      return;
    }

    Players[message.author.username] = {
      AccountActive: 1,
      Health: 100,
      Level: 1,
      Lust: 0,
      Items: ""
    };

    fs.writeFile("./Database/Players.json", JSON.stringify(Players, null, 4), err => {
      if (err) throw err;
      message.channel.send("Account Activated")
    });
  };

})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM