public void Handle(PointRedemption pointRedemption, RedemptionOption redemptionOption) { if (redemptionOption == null) { return; } var audioFileReader = new AudioFileReader(redemptionOption.AudioFile); waveOutDevice.Init(audioFileReader); waveOutDevice.Play(); // Could add a way to log that a redemption was successful }
public void Save(PointRedemption pointRedemption) { EnsureFolderCreated(); var existingRedemptions = new List <PointRedemption>(); var fullPath = FullFileName(PointRedemptionLogFileName); if (File.Exists(fullPath)) { var existingRedemptionsJson = File.ReadAllText(fullPath); existingRedemptions = JsonConvert.DeserializeObject <List <PointRedemption> >(existingRedemptionsJson); } existingRedemptions.Add(pointRedemption); var newJson = JsonConvert.SerializeObject(existingRedemptions); File.WriteAllText(fullPath, newJson); }
// Message status returns: // UNFULFILLED private void TwitchClient_OnRewardRedeemed(object sender, RewardRedeemedEvent e) { // TODO make proper mitigation of this issue. if (!string.Equals(e.Status, "UNFULFILLED", StringComparison.OrdinalIgnoreCase)) { return; } var pointRedemption = new PointRedemption { DisplayName = e.DisplayName, Message = e.Message, RewardId = e.RewardId, RewardName = e.RewardTitle, TimeStamp = e.TimeStamp }; var redemptionOption = repository.GetRedemptionOption(e.RewardTitle); if (redemptionOption == null) { redemptionOption = new RedemptionOption(e.RewardTitle); repository.Save(redemptionOption); OnNewRedemptionRewardDetected?.Invoke(this, "NEW REWARD DETECTED; NEEDS SETUP!"); } else if (redemptionOption.OptionAction == OptionAction.NoAction) { OnExistingRedemptionRewardNeedingSetup?.Invoke(this, "EXISTING REWARD DETECTED, STILL NEED SETUP!"); } else { // REDEEM THAT FUCKERRR! var redeemer = redeemerOchestrator.GetRedeemer(redemptionOption.OptionAction); redeemer.Handle(pointRedemption, redemptionOption); } repository.Save(pointRedemption); OnRewardRedeemed?.Invoke(this, pointRedemption); }
public void Handle(PointRedemption pointRedemption, RedemptionOption redemptionOption) { if (redemptionOption.ExecuteOnRedeemer) { twitchClient.SendChatMessage($"{redemptionOption.ChatCommand} {pointRedemption.DisplayName}"); } else if (redemptionOption.UsesInput) { twitchClient.SendChatMessage($"{redemptionOption.ChatCommand} {pointRedemption.Message}"); } else { twitchClient.SendChatMessage($"{redemptionOption.ChatCommand}"); } if (redemptionOption.RespondInChat) { // Not happy about blocking thread. Hmm Thread.Sleep(ResponseDelay); twitchClient.SendChatMessage($"{redemptionOption.ChatResponse}"); } // Could add a way to log that a redemption was successful }
public PointRedemptionItem(PointRedemption pointRedemption, Merchandise merchandise, long quantity) { _pointRedemption = pointRedemption; _merchandise = merchandise; _quantity = quantity; }