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"); } }
private void Client_OnChannelPointsRewardRedeemed(object sender, OnChannelPointsRewardRedeemedArgs e) { OnChannelPointsRewardRedeemed?.Invoke(this, e); }
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()); } }
private void OnChannelPointsRewardRedeemed(object?sender, OnChannelPointsRewardRedeemedArgs e) { _logger.LogInformation($"Reward redeemed: {e.RewardRedeemed.Redemption.Reward.Title}"); }