コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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}");
            }
        }
コード例 #4
0
        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);
        }