private async void PubSub_OnBitsV2Received(object sender, PubSubBitsEventV2Model packet) { UserViewModel user; if (packet.is_anonymous) { user = UserViewModel.Create(MixItUp.Base.Resources.Anonymous); } else { user = ChannelSession.Services.User.GetActiveUserByPlatformID(StreamingPlatformTypeEnum.Twitch, packet.user_id); if (user == null) { user = await UserViewModel.Create(packet); } } TwitchUserBitsCheeredModel bitsCheered = new TwitchUserBitsCheeredModel(user, packet); foreach (CurrencyModel bitsCurrency in ChannelSession.Settings.Currency.Values.Where(c => c.SpecialTracking == CurrencySpecialTrackingEnum.Bits)) { bitsCurrency.AddAmount(user.Data, bitsCheered.Amount); } foreach (StreamPassModel streamPass in ChannelSession.Settings.StreamPass.Values) { if (user.HasPermissionsTo(streamPass.Permission)) { streamPass.AddAmount(user.Data, (int)Math.Ceiling(streamPass.BitsBonus * bitsCheered.Amount)); } } user.Data.TotalBitsCheered = (uint)packet.total_bits_used; ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestBitsCheeredUserData] = user.ID; ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestBitsCheeredAmountData] = bitsCheered.Amount; if (string.IsNullOrEmpty(await ChannelSession.Services.Moderation.ShouldTextBeModerated(user, bitsCheered.Message.PlainTextMessage))) { CommandParametersModel parameters = new CommandParametersModel(user, bitsCheered.Message.ToArguments()); parameters.SpecialIdentifiers["bitsamount"] = bitsCheered.Amount.ToString(); parameters.SpecialIdentifiers["bitslifetimeamount"] = packet.total_bits_used.ToString(); parameters.SpecialIdentifiers["messagenocheermotes"] = bitsCheered.Message.PlainTextMessageNoCheermotes; parameters.SpecialIdentifiers["message"] = bitsCheered.Message.PlainTextMessage; await ChannelSession.Services.Events.PerformEvent(EventTypeEnum.TwitchChannelBitsCheered, parameters); } await ChannelSession.Services.Alerts.AddAlert(new AlertChatMessageViewModel(StreamingPlatformTypeEnum.Twitch, user, string.Format("{0} Cheered {1} Bits", user.FullDisplayName, bitsCheered.Amount), ChannelSession.Settings.AlertBitsCheeredColor)); GlobalEvents.BitsOccurred(bitsCheered); }
private async void PubSub_OnBitsV2Received(object sender, PubSubBitsEventV2Model packet) { UserViewModel user = ChannelSession.Services.User.GetUserByTwitchID(packet.user_id); if (user == null) { user = new UserViewModel(packet); } TwitchUserBitsCheeredModel bitsCheered = new TwitchUserBitsCheeredModel(user, packet); foreach (CurrencyModel bitsCurrency in ChannelSession.Settings.Currency.Values.Where(c => c.SpecialTracking == CurrencySpecialTrackingEnum.Bits)) { bitsCurrency.AddAmount(user.Data, bitsCheered.Amount); } foreach (StreamPassModel streamPass in ChannelSession.Settings.StreamPass.Values) { if (user.HasPermissionsTo(streamPass.Permission)) { streamPass.AddAmount(user.Data, (int)Math.Ceiling(streamPass.BitsBonus * bitsCheered.Amount)); } } user.Data.TotalBitsCheered += (uint)bitsCheered.Amount; ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestBitsCheeredUserData] = user.ID; ChannelSession.Settings.LatestSpecialIdentifiersData[SpecialIdentifierStringBuilder.LatestBitsCheeredAmountData] = bitsCheered.Amount; if (string.IsNullOrEmpty(await ChannelSession.Services.Moderation.ShouldTextBeModerated(user, bitsCheered.Message))) { EventTrigger trigger = new EventTrigger(EventTypeEnum.TwitchChannelBitsCheered, user); trigger.SpecialIdentifiers["bitsamount"] = bitsCheered.Amount.ToString(); trigger.SpecialIdentifiers["message"] = bitsCheered.Message; await ChannelSession.Services.Events.PerformEvent(trigger); } await ChannelSession.Services.Alerts.AddAlert(new AlertChatMessageViewModel(StreamingPlatformTypeEnum.Twitch, user, string.Format("{0} Cheered {1} Bits", user.DisplayName, bitsCheered.Amount), ChannelSession.Settings.AlertBitsCheeredColor)); GlobalEvents.BitsOccurred(bitsCheered); }