コード例 #1
0
        public async Task DBDStats(string steamId)
        {
            PullPlayerStats PullStats = new PullPlayerStats();
            SaveStatsToJson Save      = new SaveStatsToJson();
            ReadStatsFiles  ReadFiles = new ReadStatsFiles();
            DateTime        Time      = GetTime.CurrentTime();

            DaylightStatModel.Playerstats PlayerStats = ReadFiles.ReadIndividualPlayerFile(steamId);
            if (PlayerStats == null || Time.AddHours(-24) > PlayerStats.LastUpdated)
            {
                PlayerStats = PullStats.PlayerStats(steamId);
            }
            if (PlayerStats.SteamId != "1")
            {
                //File Write
                AccessDropbox LinkToStatsDownload = new AccessDropbox();
                GetCheckDirectory.CheckDirectory();
                Save.WriteToFile(PlayerStats);
                var BuildOutput = EmbedOutput.BuildDBDStats(PlayerStats, LinkToStatsDownload.SCreateDBoxClient(PlayerStats).Result);
                await Context.Channel.SendMessageAsync("", false, BuildOutput.Build());
            }
            else
            {
                await Context.Channel.SendMessageAsync("", false, EmbedOutput.DBDAPIFailure(PlayerStats.SteamId).Build());
            }
        }
コード例 #2
0
        public async Task <string> SCreateDBoxClient(DaylightStatModel.Playerstats PlayerData)
        {
            using (var dbox = new DropboxClient(StaticDetails.DropboxToken))
            {
                using (var mem = new MemoryStream(File.ReadAllBytes(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{PlayerData.SteamId}.json"))))
                {
                    try
                    {
                        var UploadFileDbox = dbox.Files.UploadAsync($"/{PlayerData.SteamId}.json", WriteMode.Overwrite.Instance, body: mem);
                        UploadFileDbox.Wait();
                        var DboxListSharedLinks = dbox.Sharing.ListSharedLinksAsync($"/{PlayerData.SteamId}.json");
                        DboxListSharedLinks.Wait();
                        //SharedLinkSettings Settings = new SharedLinkSettings();
                        //Settings.Expires.Value.Add

                        foreach (var current in DboxListSharedLinks.Result.Links)
                        {
                            if (current.Name == $"{PlayerData.SteamId}.json")
                            {
                                return(current.Url);
                            }
                        }

                        var DownloadLink = dbox.Sharing.CreateSharedLinkWithSettingsAsync($"/{PlayerData.SteamId}.json");
                        DownloadLink.Wait();
                        return(DownloadLink.Result.Url);
                    }

                    catch (Exception msg)
                    {
                        return("Failed to created link");
                    }
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// Class file that reads the json file from disk. If the file isn't empty we return it's contents.
 /// Otherwise we return null.
 /// </summary>
 /// <returns></returns>
 public DaylightStatModel.Playerstats ReadIndividualPlayerFile(string id)
 {
     DaylightStatModel.Playerstats obj = new DaylightStatModel.Playerstats();
     try
     {
         if (!File.Exists(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{id}.json")))
         {
             var SteamIDJson = File.Create(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{id}.json"));
             SteamIDJson.Close();
             return(null);
         }
         var file = File.ReadAllText(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{id}.json"));
         if (file != "")
         {
             JsonConvert.PopulateObject(file, obj);
             return(obj);
         }
         else
         {
             return(null);
         }
     }
     catch (Exception msg)
     {
         Console.WriteLine(msg);
         throw;
     }
 }
コード例 #4
0
        ///< summary >
        /// Class built to house any output the bot may need to distribute. We do this by using the EmbedBuilder from Discord.
        /// </ summary >
        public static EmbedBuilder BuildDBDStats(DaylightStatModel.Playerstats obj, string url)
        {
            PullSteamUserData   Pull        = new PullSteamUserData();
            RemoveFilteredItems FilterItems = new RemoveFilteredItems();
            var SteamInfo = Pull.UserSummary(obj.SteamId);

            obj = FilterItems.RemoveUselessStats(obj);
            EmbedBuilder DBDStatsOutput = new EmbedBuilder();

            if (SteamInfo != null)
            {
                DBDStatsOutput.Title = $"{SteamInfo.response.players[0].Personaname}'s Dead By Daylight Stats.";
            }
            else
            {
                DBDStatsOutput.Title = "Interesting DBD Stats.";
            }
            DBDStatsOutput.Timestamp = obj.LastUpdated;
            DBDStatsOutput.WithFooter("Contact Coaction#5994 for any issues. This is a work in progress.");
            DBDStatsOutput.WithDescription(
                $"Download the rest of your stats [HERE]({url})! \n\n Hours Played: {(SteamInfo.Game.playtime_forever / 60).ToString() ?? "No Hours Found"} \n");
            DBDStatsOutput.WithColor(4124426);
            foreach (var x in obj.Stats)
            {
                DBDStatsOutput.AddField(x.Name, String.Format("{0:n0}", x.Value), true);
            }
            return(DBDStatsOutput);
        }
コード例 #5
0
 public DaylightStatModel.Playerstats RemoveUselessStats(DaylightStatModel.Playerstats obj)
 {
     ///< summary >
     /// Loop through < see cref="aryFilter"/> in order to remove unncessary stats stats from <see cref="DaylightStatModel"/> object.
     /// </ summary >
     ///
     DaylightStatModel.Playerstats newobj = new DaylightStatModel.Playerstats();
     newobj.Stats = new List <DaylightStatModel.Stat>();
     if (StatFilterDictionary.DictionaryFilter.Count == 0)
     {
         StatFilterDictionary.DictionaryFilter = StatFilterDictionary.GetFilterDictionary();
     }
     newobj.GameName    = obj.GameName;
     newobj.LastUpdated = obj.LastUpdated;
     newobj.SteamId     = obj.SteamId;
     foreach (var item in StatFilterDictionary.DictionaryFilter)
     {
         var current = obj.Stats.Find(x => x.Name == item.Key);
         if (current == null)
         {
             break;
         }
         current.Name = StatFilterDictionary.DictionaryFilter[current.Name];
         newobj.Stats.Add(current);
     }
     return(newobj);
 }
コード例 #6
0
        /// <summary>
        /// Class file designed to save our list of player's stats, steam ID and Game to a JSON file.
        /// </summary>
        /// <param name="newEntryObj"></param>

        public void WriteToFile(DaylightStatModel.Playerstats newEntryObj)
        {
            using (StreamWriter file = File.CreateText(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{newEntryObj.SteamId}.json")))
            {
                JsonSerializer serializer = new JsonSerializer();
                serializer.Formatting = Formatting.Indented;
                serializer.Serialize(file, newEntryObj);
            }
        }
コード例 #7
0
        ///< summary >
        /// API Call to Steam's API and storing the call within the < see cref = "DaylightStatModel" /> data model.
        /// </ summary >
        ///
        public DaylightStatModel.Playerstats PlayerStats(string _steamID)
        {
            DaylightStatModel.Playerstats obj = new DaylightStatModel.Playerstats();
            using (var web = new WebClient())
            {
                try
                {
                    var _url =
                        string.Format($"http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid={StaticDetails.AppID}&key={StaticDetails.SteamAPIKey}&steamid={_steamID}&format=json");
                    _downloadNews = web.DownloadString(_url);
                }
                catch (WebException msg)
                {
                    obj.SteamId = "1";
                    return(obj);
                }
                //Store downloaded stats into memory.
                var DownloadedStats = JsonConvert.DeserializeObject <DaylightStatModel>(_downloadNews);
                obj             = DownloadedStats.PlayerStats;
                obj.LastUpdated = GetTime.CurrentTime();

                return(obj);
            }
        }