public bool TryGetReward(OnRewardRedeemedArgs args, out SupportedReward reward) { reward = null; foreach (var item in Rewards) { if (item.Title == args.RewardTitle) { reward = item; return(true); } } return(false); }
public RewardRequest Create(SupportedReward reward, OnRewardRedeemedArgs args) { if (reward.RewardType == RewardType.ReplayId && !string.IsNullOrWhiteSpace(args.Message) && int.TryParse(args.Message.Trim(), out int replayId)) { return(new RewardRequest(args.Login, args.RedemptionId, reward.Title, replayId, rank: null, reward.Map, reward.Mode)); } else { if (reward.RewardType.HasFlag(RewardType.Rank) && Enum.TryParse(args.Message, ignoreCase: true, out GameRank rank)) { return(new RewardRequest(args.Login, args.RedemptionId, reward.Title, replayId: null, rank: rank, reward.Map, reward.Mode)); } else { return(new RewardRequest(args.Login, args.RedemptionId, reward.Title, replayId: null, rank: null, reward.Map, reward.Mode)); } } throw new NotSupportedException(); }
public void Execute(SupportedReward reward, OnRewardRedeemedArgs args) { if (!string.IsNullOrWhiteSpace(args.Message) && int.TryParse(args.Message.Trim(), out int replayId)) { Task.Factory.StartNew(async() => { RewardResponse response = await queue.EnqueueItemAsync(requestFactory.Create(reward, args)); if (settings.Twitch.EnableChatBot) { string message = $"{args.DisplayName}, {response.Message}"; twitchClient.SendMessage(settings.Twitch.Channel, message, dryRun: settings.Twitch.DryRunMode); } }, TaskCreationOptions.LongRunning); } else { twitchClient.SendMessage(settings.Twitch.Channel, $"{args.DisplayName}, your request is invalid.", dryRun: settings.Twitch.DryRunMode); logger.LogDebug($"{args.TimeStamp}: {args.RewardId} - {args.RewardCost}"); } }
public void Execute(SupportedReward reward, OnRewardRedeemedArgs args) { Task.Factory.StartNew(async() => { try { logger.LogInformation($"{args.Login} has redeemed {args.RewardTitle}"); RewardResponse response = await queue.EnqueueItemAsync(rewardRequestFactory.Create(reward, args)); if (settings.Twitch.EnableChatBot) { twitchClient.SendMessage(settings.Twitch.Channel, $"{args.DisplayName}, {response.Message}", dryRun: settings.Twitch.DryRunMode); } } catch (Exception e) { logger.LogError(e, $"Could not queue reward: {reward.Title}"); } }, TaskCreationOptions.LongRunning); }