Example #1
0
        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();
     }
 }
Example #4
0
        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);
        }