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; }
private async Task ProcessMassGiftedSub(TwitchMassGiftedSubEventModel massGiftedSubEvent) { EventTrigger trigger = new EventTrigger(EventTypeEnum.TwitchChannelMassSubscriptionsGifted, massGiftedSubEvent.Gifter); trigger.SpecialIdentifiers["subsgiftedamount"] = massGiftedSubEvent.TotalGifted.ToString(); trigger.SpecialIdentifiers["subsgiftedlifetimeamount"] = massGiftedSubEvent.LifetimeGifted.ToString(); trigger.SpecialIdentifiers["usersubplan"] = massGiftedSubEvent.PlanTier; trigger.SpecialIdentifiers["isanonymous"] = massGiftedSubEvent.IsAnonymous.ToString(); await ChannelSession.Services.Events.PerformEvent(trigger); await ChannelSession.Services.Alerts.AddAlert(new AlertChatMessageViewModel(StreamingPlatformTypeEnum.Twitch, massGiftedSubEvent.Gifter, string.Format("{0} Gifted {1} {2} Subs", massGiftedSubEvent.Gifter.DisplayName, massGiftedSubEvent.TotalGifted, massGiftedSubEvent.PlanTier), ChannelSession.Settings.AlertMassGiftedSubColor)); }
public async Task AddMassGiftedSub(TwitchMassGiftedSubEventModel massGiftedSubEvent) { if (ChannelSession.Settings.TwitchMassGiftedSubsFilterAmount > 0) { if (massGiftedSubEvent.TotalGifted > ChannelSession.Settings.TwitchMassGiftedSubsFilterAmount) { lock (this.newMassGiftedSubTracker) { this.newMassGiftedSubTracker.Add(massGiftedSubEvent); } } } else { await ProcessMassGiftedSub(massGiftedSubEvent); } }
private async Task ProcessMassGiftedSub(TwitchMassGiftedSubEventModel massGiftedSubEvent) { CommandParametersModel parameters = new CommandParametersModel(massGiftedSubEvent.Gifter); parameters.SpecialIdentifiers["subsgiftedamount"] = massGiftedSubEvent.TotalGifted.ToString(); parameters.SpecialIdentifiers["subsgiftedlifetimeamount"] = massGiftedSubEvent.LifetimeGifted.ToString(); parameters.SpecialIdentifiers["usersubplan"] = massGiftedSubEvent.PlanTier; parameters.SpecialIdentifiers["isanonymous"] = massGiftedSubEvent.IsAnonymous.ToString(); foreach (TwitchGiftedSubEventModel sub in massGiftedSubEvent.Subs) { parameters.Arguments.Add(sub.Receiver.Username); } await ChannelSession.Services.Events.PerformEvent(EventTypeEnum.TwitchChannelMassSubscriptionsGifted, parameters); await ChannelSession.Services.Alerts.AddAlert(new AlertChatMessageViewModel(StreamingPlatformTypeEnum.Twitch, massGiftedSubEvent.Gifter, string.Format("{0} Gifted {1} {2} Subs", massGiftedSubEvent.Gifter.FullDisplayName, massGiftedSubEvent.TotalGifted, massGiftedSubEvent.PlanTier), ChannelSession.Settings.AlertMassGiftedSubColor)); }
private async void UserClient_OnUserNoticeReceived(object sender, ChatUserNoticePacketModel userNotice) { try { if (RaidUserNoticeMessageTypeID.Equals(userNotice.MessageTypeID)) { UserViewModel user = ChannelSession.Services.User.GetActiveUserByPlatformID(StreamingPlatformTypeEnum.Twitch, userNotice.UserID.ToString()); if (user == null) { user = await UserViewModel.Create(userNotice); } user.SetTwitchChatDetails(userNotice); CommandParametersModel parameters = new CommandParametersModel(user); if (ChannelSession.Services.Events.CanPerformEvent(EventTypeEnum.TwitchChannelRaided, parameters)) { ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestRaidUserData] = user.ID; ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestRaidViewerCountData] = userNotice.RaidViewerCount; foreach (CurrencyModel currency in ChannelSession.Settings.Currency.Values.ToList()) { currency.AddAmount(user.Data, currency.OnHostBonus); } foreach (StreamPassModel streamPass in ChannelSession.Settings.StreamPass.Values) { if (user.HasPermissionsTo(streamPass.Permission)) { streamPass.AddAmount(user.Data, streamPass.HostBonus); } } GlobalEvents.RaidOccurred(user, userNotice.RaidViewerCount); parameters.SpecialIdentifiers["hostviewercount"] = userNotice.RaidViewerCount.ToString(); parameters.SpecialIdentifiers["raidviewercount"] = userNotice.RaidViewerCount.ToString(); await ChannelSession.Services.Events.PerformEvent(EventTypeEnum.TwitchChannelRaided, parameters); await ChannelSession.Services.Alerts.AddAlert(new AlertChatMessageViewModel(StreamingPlatformTypeEnum.Twitch, user, string.Format("{0} raided with {1} viewers", user.FullDisplayName, userNotice.RaidViewerCount), ChannelSession.Settings.AlertRaidColor)); } } else if (SubMysteryGiftUserNoticeMessageTypeID.Equals(userNotice.MessageTypeID) && userNotice.SubTotalGifted > 0) { if (ChannelSession.Services.Events.TwitchEventService != null) { UserViewModel gifter = UserViewModel.Create("An Anonymous Gifter"); if (!TwitchMassGiftedSubEventModel.IsAnonymousGifter(userNotice)) { gifter = await ChannelSession.Services.User.GetUserFullSearch(StreamingPlatformTypeEnum.Twitch, userNotice.UserID.ToString(), userNotice.Login); gifter.SetTwitchChatDetails(userNotice); } await ChannelSession.Services.Events.TwitchEventService.AddMassGiftedSub(new TwitchMassGiftedSubEventModel(userNotice, gifter)); } } else if (SubGiftPaidUpgradeUserNoticeMessageTypeID.Equals(userNotice.MessageTypeID)) { if (ChannelSession.Services.Events.TwitchEventService != null) { UserViewModel user = ChannelSession.Services.User.GetActiveUserByPlatformID(StreamingPlatformTypeEnum.Twitch, userNotice.UserID.ToString()); if (user == null) { user = await UserViewModel.Create(userNotice); } user.SetTwitchChatDetails(userNotice); await ChannelSession.Services.Events.TwitchEventService.AddSub(new TwitchSubEventModel(user, userNotice)); } } } catch (Exception ex) { Logger.ForceLog(LogLevel.Debug, JSONSerializerHelper.SerializeToString(userNotice)); Logger.Log(ex); throw ex; } }