微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Discord stats bot 添加旧的统计数据以嵌入

如何解决Discord stats bot 添加旧的统计数据以嵌入

所以问题是我正在制作一个 CS:GO stats discord 机器人,每次您使用 !stats + Steam ID 时,它都会在嵌入中为您提供统计数据。第一次执行时,它运行良好,但之后使用该命令的每个人都会取回他的统计数据以及之前使用过该命令的其他所有人的统计数据。Example

基本代码

if (command === "stats") {
    let stats = [];
    if (stats) {
    stats = [];
    
    
    let steamID = args[0];
    if (!steamID) return message.channel.send("Negative! You haven't added your Steam ID");
    axios
      .get(
        `http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=730&key=${steamWebApiKey}&steamid=${steamID}&format=json`
      )
      .then(async data => {
        let stats = data.data.playerstats.stats;
        let totalKills = stats[0].value;
        let totalDeaths = stats[1].value;
        let hsKills = stats[25].value;
        let totalMVP = stats[95].value;
        let KD = totalKills / totalDeaths;
        let HS = totalKills / hsKills * 100;
        let Knifekills = stats[10].value;
        embedStats
          .setTitle("CSGO Stats")
          .setColor("#FF0000")
          .addField("Total Kills",totalKills,true)
          .addField("Total Deaths",totalDeaths,true)
          .addField("Total HeadShot Kills",hsKills,true)
          .addField("MVPS",totalMVP,true)
          .addField("KD",KD.toFixed(2),true)
          .addField("Knife kills",Knifekills,true)
      })
      .catch(e => {
        if (e.response.status == "500") {
            message.channel.send("Negative! I Couldn't find your stats,possible solution: set your game details as public on your Steam profile.");
        }
      });
    axios
      .get(
        `http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=${steamWebApiKey}&steamids=${steamID}&format=json`
      )
      .then(async data => {
        let user = data.data.response.players;
        embedStats
          .setThumbnail(user[0].avatarmedium)
          .setDescription(`[${user[0].personaname}](${user[0].profileurl})`)
          await message.channel.send(embedStats);
      })
    }
  }

解决方法

您的代码似乎没有最小的可重现示例,因为我找不到 embedStatsarg[0] 的定义,但似乎使用 addField() 方法,您只是在该 embedStats 变量中“插入”新信息,而不会根据您的 Discord 用户的新请求“重置”。我建议尝试在命令执行完成后“释放”变量,或者在所有 addField() 逻辑之前实例化一个新变量。

,

我已经找到了解决方案,我把我的统计变量“const embedStats = new Discord.MessageEmbed();”在代码的开头而不是命令本身,就是这么简单。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。