private void PubSub_OnChannelPointsRewardRedeemed(object sender, OnChannelPointsRewardRedeemedArgs e)
        {
            var redemption   = e.RewardRedeemed.Redemption;
            var reward       = e.RewardRedeemed.Redemption.Reward;
            var redeemedUser = e.RewardRedeemed.Redemption.User;

            if (redemption.Status == "UNFULFILLED")
            {
                _logger.Information($"{redeemedUser.DisplayName} redeemed: {reward.Title}");
                API.Helix.ChannelPoints.UpdateCustomRewardRedemptionStatus(e.ChannelId, reward.Id,
                                                                           new List <string>()
                {
                    e.RewardRedeemed.Redemption.Id
                }, new UpdateCustomRewardRedemptionStatusRequest()
                {
                    Status = CustomRewardRedemptionStatus.CANCELED
                });
            }

            if (redemption.Status == "FULFILLED")
            {
                _logger.Information($"Reward from {redeemedUser.DisplayName} ({reward.Title}) has been marked as complete");
            }
        }
Exemple #2
0
 private void Client_OnChannelPointsRewardRedeemed(object sender, OnChannelPointsRewardRedeemedArgs e)
 {
     OnChannelPointsRewardRedeemed?.Invoke(this, e);
 }
Exemple #3
0
        public async Task HandleAsync(IBotServer game, ITwitchCommandClient twitch, OnChannelPointsRewardRedeemedArgs reward)
        {
            //logger.LogInformation("Channel Point Rewards not implemented.");
            var cmd         = "";
            var usedCommand = "";

            try
            {
                var redeemer  = reward.RewardRedeemed.Redemption.User;
                var arguments = string.Empty;//reward.RewardRedeemed.Redemption.Reward.Prompt;
                var command   = reward.RewardRedeemed.Redemption.Reward.Title;
                var cmdParts  = command.ToLower().Split(' ');



                var session = game.GetSession(reward.ChannelId);

                // In case we use brackets to identify a command
                cmd         = cmdParts.FirstOrDefault(x => x.Contains("["));
                usedCommand = cmd;

                if (!string.IsNullOrEmpty(cmd))
                {
                    cmd = cmd.Replace("[", "").Replace("]", "").Trim();
                }

                ITwitchCommandHandler processor = null;

                // if we did not use any brackets
                if (string.IsNullOrEmpty(cmd))
                {
                    foreach (var part in cmdParts)
                    {
                        var proc = FindHandler(part.ToLower());
                        if (proc != null)
                        {
                            processor   = proc;
                            usedCommand = part;
                            break;
                        }
                    }
                }

                // in case we never found a handler, fallback to identifier
                if (processor == null)
                {
                    processor = FindHandler(cmd.ToLower());
                    if (processor == null)
                    {
                        logger.LogError("Error redeeming reward: " + cmd + ", no handler found");
                        return;
                    }

                    usedCommand = cmd;
                }

                if (string.IsNullOrEmpty(arguments))
                {
                    arguments = redeemer.Login;
                }

                //if (processor.RequiresBroadcaster)
                //{
                //    return new RewardRedeemCommand(broadcaster, usedCommand, redeemer.Username);
                //}
                //else
                //{
                //    return new RewardRedeemCommand(redeemer, usedCommand, arguments);
                //}

                RavenBot.Core.Ravenfall.Models.Player player = null;
                if (processor.RequiresBroadcaster)
                {
                    player = session.GetBroadcaster();
                }
                else
                {
                    player = session.Get(new RewardRedeemUser(redeemer));
                    if (player == null)
                    {
                        logger.LogError("Error redeeming reward: " + usedCommand + ", redeemer does not exist. (" + redeemer.Id + ")");
                        return;
                    }
                }

                await processor.HandleAsync(game, twitch, new RewardRedeemCommand(player, reward.ChannelId, usedCommand, arguments));
            }
            catch (Exception exc)
            {
                logger.LogError("Error redeeming reward:  " + usedCommand + ", " + exc.ToString());
            }
        }
Exemple #4
0
 private void OnChannelPointsRewardRedeemed(object?sender, OnChannelPointsRewardRedeemedArgs e)
 {
     _logger.LogInformation($"Reward redeemed: {e.RewardRedeemed.Redemption.Reward.Title}");
 }