【问题标题】:"gameActivity" Key is changed at start but it should stop“gameActivity”键在开始时改变,但它应该停止
【发布时间】:2020-02-29 06:18:53
【问题描述】:

我现在正在开发我的 DiscordBot。在文件 bot.json 中是可以在网站上更改的密钥“gameActivity”......但是当我启动机器人时,这个密钥将被删除。提前致谢

index.js

const Discord = require('discord.js');
const bot = new Discord.Client();

const fs = require('fs');

const config = require('./botconfig.json');
const web_info = require('../data/bot.json')

bot.on('ready', () => {
  bot.user.setActivity(web_info.gameActivity, { type: 'PLAYING' });

  console.log(`Logged in as ${bot.user.tag}!`);

  var webdata = {
    status: 'online'
  };

  let data = JSON.stringify(webdata);
  fs.writeFileSync('../data/bot.json', data);
  console.log(webdata);
});

bot.login(config.token);

bot.json

{"status":"online","gameActivity":"This will be deleted!"}

启动机器人后的bot.json

{"status":"online"}

【问题讨论】:

    标签: javascript html node.js json discord.js


    【解决方案1】:

    无需创建新对象:

    web_info.status = 'online';
    
    let data = JSON.stringify(web_info);
    fs.writeFileSync('../data/bot.json', data);
    console.log(webdata);
    

    gameActivity 属性正在被删除,因为您正在创建一个没有该属性的新对象并将其写回bot.json 文件。要么创建一个新对象并设置所有属性,要么使用和修改原始对象。

    【讨论】:

      【解决方案2】:

      我的猜测是因为webdata 只发送状态而不发送活动。

      你想要的样子是:

      var webdata = {
          status: 'online',
          gameActivity: 'blah blah'
      
        };
      
        let data = JSON.stringify(webdata);
        fs.writeFileSync('../data/bot.json', data);
        console.log(webdata);
      

      你可以用任何你想要的替换“blah blah”。

      希望这有帮助, 发冷。

      【讨论】:

      • 是的,我知道这行得通,但是如果我在网站上更改了它,然后我想启动机器人,那么 gameActivity 密钥将被更改。但我希望它保持不变,因为我在网站上更改了它。你明白吗?
      • 好吧,我明白了,但我对后端网络的东西不是很好,所以我不得不离开这个。我的道歉
      • 是的,我自己不擅长后端,我只做前端 html 和 css :D
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多