public IReadOnlyCollection <ClientMsgHandler> OnBotSteamHandlersInit([NotNull] Bot bot) { AchievementHandler CurrentBotAchievementHandler = new AchievementHandler(); AchievementHandlers.TryAdd(bot, CurrentBotAchievementHandler); return(new HashSet <ClientMsgHandler> { CurrentBotAchievementHandler }); }
private static async Task <string?> ResponseAchievementSet(ulong steamID, Bot bot, string appid, string AchievementNumbers, bool set = true) { if (!bot.HasPermission(steamID, BotConfig.EPermission.Master)) { return(null); } if (string.IsNullOrEmpty(AchievementNumbers)) { return(bot.Commands.FormatBotResponse(string.Format(Strings.ErrorObjectIsNull, nameof(AchievementNumbers)))); } if (!uint.TryParse(appid, out uint appId)) { return(bot.Commands.FormatBotResponse(string.Format(Strings.ErrorIsInvalid, nameof(appId)))); } if (!AchievementHandlers.TryGetValue(bot, out AchievementHandler? AchievementHandler)) { return(bot.Commands.FormatBotResponse(string.Format(Strings.ErrorIsEmpty, nameof(AchievementHandlers)))); } if (AchievementHandler == null) { bot.ArchiLogger.LogNullError(nameof(AchievementHandler)); return(null); } HashSet <uint> achievements = new HashSet <uint>(); string[] achievementStrings = AchievementNumbers.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (!AchievementNumbers.Equals("*")) { foreach (string achievement in achievementStrings) { if (!uint.TryParse(achievement, out uint achievementNumber) || (achievementNumber == 0)) { return(bot.Commands.FormatBotResponse(string.Format(Strings.ErrorParsingObject, achievement))); } achievements.Add(achievementNumber); } if (achievements.Count == 0) { return(bot.Commands.FormatBotResponse(string.Format(Strings.ErrorIsEmpty, "Achievements list"))); } } return(bot.Commands.FormatBotResponse(await Task.Run <string>(() => AchievementHandler.SetAchievements(bot, appId, achievements, set)).ConfigureAwait(false))); }
//Responses private static async Task <string?> ResponseAchievementList(ulong steamID, Bot bot, string appids) { if (!bot.HasPermission(steamID, BotConfig.EPermission.Master)) { return(null); } string[] gameIDs = appids.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (gameIDs.Length == 0) { return(bot.Commands.FormatBotResponse(string.Format(Strings.ErrorIsEmpty, nameof(gameIDs)))); } if (AchievementHandlers.TryGetValue(bot, out AchievementHandler? AchievementHandler)) { if (AchievementHandler == null) { bot.ArchiLogger.LogNullError(nameof(AchievementHandler)); return(null); } HashSet <uint> gamesToGetAchievements = new HashSet <uint>(); foreach (string game in gameIDs) { if (!uint.TryParse(game, out uint gameID) || (gameID == 0)) { return(bot.Commands.FormatBotResponse(string.Format(Strings.ErrorParsingObject, nameof(gameID)))); } gamesToGetAchievements.Add(gameID); } IList <string> results = await Utilities.InParallel(gamesToGetAchievements.Select(appID => Task.Run <string>(() => AchievementHandler.GetAchievements(bot, appID)))).ConfigureAwait(false); List <string> responses = new List <string>(results.Where(result => !string.IsNullOrEmpty(result))); return(responses.Count > 0 ? bot.Commands.FormatBotResponse(string.Join(Environment.NewLine, responses)) : null); } else { return(bot.Commands.FormatBotResponse(string.Format(Strings.ErrorIsEmpty, nameof(AchievementHandlers)))); } }