Discord 统计机器人添加旧统计数据以嵌入

问题描述 投票:0回答:2

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

基本代码:

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);
      })
    }
  }
discord statistics bots counter
2个回答
0
投票

您的代码似乎没有最小的可重现示例,因为我找不到

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


0
投票

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

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.