private async void PubSub_OnSubscribedReceived(object sender, PubSubSubscriptionsEventModel packet) { UserViewModel user = ChannelSession.Services.User.GetActiveUserByPlatformID(StreamingPlatformTypeEnum.Twitch, packet.user_id); if (user == null) { user = await UserViewModel.Create(packet); } if (packet.IsSubscription || packet.cumulative_months == 1) { await this.AddSub(new TwitchSubEventModel(user, packet)); } else { int months = Math.Max(packet.streak_months, packet.cumulative_months); string planTier = TwitchEventService.GetSubTierNameFromText(packet.sub_plan); CommandParametersModel parameters = new CommandParametersModel(user); if (ChannelSession.Services.Events.CanPerformEvent(EventTypeEnum.TwitchChannelResubscribed, parameters)) { string message = (packet.sub_message.ContainsKey("message") && packet.sub_message["message"] != null) ? packet.sub_message["message"].ToString() : string.Empty; parameters.Arguments = new List <string>(message.Split(new char[] { ' ' })); parameters.SpecialIdentifiers["message"] = message; parameters.SpecialIdentifiers["usersubmonths"] = months.ToString(); parameters.SpecialIdentifiers["usersubplanname"] = !string.IsNullOrEmpty(packet.sub_plan_name) ? packet.sub_plan_name : TwitchEventService.GetSubTierNameFromText(packet.sub_plan); parameters.SpecialIdentifiers["usersubplan"] = planTier; parameters.SpecialIdentifiers["usersubstreak"] = packet.streak_months.ToString(); ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestSubscriberUserData] = user.ID; ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestSubscriberSubMonthsData] = months; user.SubscribeDate = DateTimeOffset.Now.SubtractMonths(months - 1); user.Data.TwitchSubscriberTier = TwitchEventService.GetSubTierNumberFromText(packet.sub_plan); user.Data.TotalMonthsSubbed++; foreach (CurrencyModel currency in ChannelSession.Settings.Currency.Values) { currency.AddAmount(user.Data, currency.OnSubscribeBonus); } foreach (StreamPassModel streamPass in ChannelSession.Settings.StreamPass.Values) { if (parameters.User.HasPermissionsTo(streamPass.Permission)) { streamPass.AddAmount(user.Data, streamPass.SubscribeBonus); } } if (string.IsNullOrEmpty(await ChannelSession.Services.Moderation.ShouldTextBeModerated(user, message))) { await ChannelSession.Services.Events.PerformEvent(EventTypeEnum.TwitchChannelResubscribed, parameters); } } GlobalEvents.ResubscribeOccurred(new Tuple <UserViewModel, int>(user, months)); await ChannelSession.Services.Alerts.AddAlert(new AlertChatMessageViewModel(StreamingPlatformTypeEnum.Twitch, user, string.Format("{0} Re-Subscribed For {1} Months at {2}", user.FullDisplayName, months, planTier), ChannelSession.Settings.AlertSubColor)); } }
public TwitchGiftedSubEventModel(UserViewModel gifter, UserViewModel receiver, PubSubSubscriptionsGiftEventModel packet) { this.Gifter = gifter; this.Receiver = receiver; this.IsAnonymous = packet.IsAnonymousGiftedSubscription; this.MonthsGifted = packet.IsMultiMonth ? packet.multi_month_duration : 1; this.PlanTier = TwitchEventService.GetSubTierNameFromText(packet.sub_plan); this.PlanName = !string.IsNullOrEmpty(packet.sub_plan_name) ? packet.sub_plan_name : TwitchEventService.GetSubTierNameFromText(packet.sub_plan); }
public TwitchMassGiftedSubEventModel(ChatUserNoticePacketModel userNotice, UserViewModel gifter) { this.IsAnonymous = TwitchMassGiftedSubEventModel.IsAnonymousGifter(userNotice); this.Gifter = gifter; this.TotalGifted = userNotice.SubTotalGifted; this.LifetimeGifted = userNotice.SubTotalGiftedLifetime; this.PlanTier = TwitchEventService.GetSubTierNameFromText(userNotice.SubPlan); this.PlanTierNumber = 1; }
public TwitchSubEventModel(UserViewModel user, PubSubSubscriptionsEventModel packet) { this.User = user; this.PlanTier = TwitchEventService.GetSubTierNameFromText(packet.sub_plan); this.PlanName = !string.IsNullOrEmpty(packet.sub_plan_name) ? packet.sub_plan_name : TwitchEventService.GetSubTierNameFromText(packet.sub_plan); if (packet.sub_message.ContainsKey("message")) { this.Message = packet.sub_message["message"].ToString(); } }
public async Task AddSub(TwitchSubEventModel subEvent) { EventTrigger trigger = new EventTrigger(EventTypeEnum.TwitchChannelSubscribed, subEvent.User); if (subEvent.IsGiftedUpgrade) { var subscription = await ChannelSession.TwitchUserConnection.CheckIfSubscribedV5(ChannelSession.TwitchChannelV5, subEvent.User.GetTwitchV5APIUserModel()); if (subscription != null && !string.IsNullOrEmpty(subscription.created_at)) { subEvent.PlanTier = TwitchEventService.GetSubTierNameFromText(subscription.sub_plan); subEvent.PlanName = subscription.sub_plan_name; } } if (ChannelSession.Services.Events.CanPerformEvent(trigger)) { trigger.SpecialIdentifiers["message"] = subEvent.Message; trigger.SpecialIdentifiers["usersubplanname"] = subEvent.PlanName; trigger.SpecialIdentifiers["usersubplan"] = subEvent.PlanTier; ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestSubscriberUserData] = subEvent.User.ID; ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestSubscriberSubMonthsData] = 1; subEvent.User.SubscribeDate = DateTimeOffset.Now; subEvent.User.Data.TwitchSubscriberTier = subEvent.PlanTierNumber; subEvent.User.Data.TotalMonthsSubbed++; foreach (CurrencyModel currency in ChannelSession.Settings.Currency.Values) { currency.AddAmount(subEvent.User.Data, currency.OnSubscribeBonus); } foreach (StreamPassModel streamPass in ChannelSession.Settings.StreamPass.Values) { if (trigger.User.HasPermissionsTo(streamPass.Permission)) { streamPass.AddAmount(subEvent.User.Data, streamPass.SubscribeBonus); } } await ChannelSession.Services.Events.PerformEvent(trigger); } GlobalEvents.SubscribeOccurred(subEvent.User); if (subEvent.IsGiftedUpgrade) { await ChannelSession.Services.Alerts.AddAlert(new AlertChatMessageViewModel(StreamingPlatformTypeEnum.Twitch, subEvent.User, string.Format("{0} Continued Their Gifted Sub at {1}", subEvent.User.DisplayName, subEvent.PlanTier), ChannelSession.Settings.AlertSubColor)); } else { await ChannelSession.Services.Alerts.AddAlert(new AlertChatMessageViewModel(StreamingPlatformTypeEnum.Twitch, subEvent.User, string.Format("{0} Subscribed at {1}", subEvent.User.DisplayName, subEvent.PlanTier), ChannelSession.Settings.AlertSubColor)); } }
public static string GetSubTierNameFromText(string subPlan) { int subTier = TwitchEventService.GetSubTierNumberFromText(subPlan); if (subTier > 0) { return($"{MixItUp.Base.Resources.Tier} {subTier}"); } else { return(subPlan); } }
public static string GetSubTierNameFromText(string subPlan) { if (string.Equals(subPlan, PrimeSubPlan, StringComparison.OrdinalIgnoreCase)) { return(PrimeSubPlan); } int subTier = TwitchEventService.GetSubTierNumberFromText(subPlan); if (subTier > 0) { return($"{MixItUp.Base.Resources.Tier} {subTier}"); } return(subPlan); }
private async void PubSub_OnSubscribedReceived(object sender, PubSubSubscriptionsEventModel packet) { UserViewModel user = ChannelSession.Services.User.GetUserByTwitchID(packet.user_id); if (user == null) { user = new UserViewModel(packet); } if (packet.IsSubscription || packet.cumulative_months == 1) { await this.AddSub(new TwitchSubEventModel(user, packet)); } else { int months = Math.Max(packet.streak_months, packet.cumulative_months); string planTier = TwitchEventService.GetSubTierNameFromText(packet.sub_plan); EventTrigger trigger = new EventTrigger(EventTypeEnum.TwitchChannelResubscribed, user); if (ChannelSession.Services.Events.CanPerformEvent(trigger)) { trigger.SpecialIdentifiers["message"] = (packet.sub_message.ContainsKey("message")) ? packet.sub_message["message"].ToString() : string.Empty; trigger.SpecialIdentifiers["usersubmonths"] = months.ToString(); trigger.SpecialIdentifiers["usersubplanname"] = !string.IsNullOrEmpty(packet.sub_plan_name) ? packet.sub_plan_name : TwitchEventService.GetSubTierNameFromText(packet.sub_plan); trigger.SpecialIdentifiers["usersubplan"] = planTier; trigger.SpecialIdentifiers["usersubstreak"] = packet.streak_months.ToString(); ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestSubscriberUserData] = user.ID; ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestSubscriberSubMonthsData] = months; user.Data.TwitchSubscribeDate = DateTimeOffset.Now.SubtractMonths(months - 1); foreach (CurrencyModel currency in ChannelSession.Settings.Currency.Values) { currency.AddAmount(user.Data, currency.OnSubscribeBonus); } user.Data.TotalMonthsSubbed++; await ChannelSession.Services.Events.PerformEvent(trigger); } GlobalEvents.ResubscribeOccurred(new Tuple <UserViewModel, int>(user, months)); await ChannelSession.Services.Alerts.AddAlert(new AlertChatMessageViewModel(StreamingPlatformTypeEnum.Twitch, user, string.Format("{0} Re-Subscribed For {1} Months at {2}", user.Username, months, planTier), ChannelSession.Settings.AlertSubColor)); } }
public TwitchMassGiftedSubEventModel(ChatUserNoticePacketModel userNotice) { this.IsAnonymous = string.Equals(userNotice.Login, AnonymousGiftedUserNoticeLogin, StringComparison.InvariantCultureIgnoreCase); this.Gifter = new UserViewModel("An Anonymous Gifter"); if (!this.IsAnonymous) { this.Gifter = ChannelSession.Services.User.GetUserByTwitchID(userNotice.UserID.ToString()); if (this.Gifter == null) { this.Gifter = new UserViewModel(userNotice); } this.Gifter.SetTwitchChatDetails(userNotice); } this.TotalGifted = userNotice.SubTotalGifted; this.LifetimeGifted = userNotice.SubTotalGiftedLifetime; this.PlanTier = TwitchEventService.GetSubTierNameFromText(userNotice.SubPlan); }