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.PlanTierNumber = TwitchEventService.GetSubTierNumberFromText(packet.sub_plan); 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 TwitchSubEventModel(UserViewModel user, PubSubSubscriptionsEventModel packet) { this.User = user; this.PlanTier = TwitchEventService.GetSubTierNameFromText(packet.sub_plan); this.PlanTierNumber = TwitchEventService.GetSubTierNumberFromText(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 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); }