public bool DoesMeetRankRequirement(UserDataViewModel userData) { if (userData.IsCurrencyRankExempt) { return(true); } UserCurrencyViewModel currency = this.GetCurrency(); if (currency == null) { return(false); } UserRankViewModel rank = this.RequiredRank; if (rank == null) { return(false); } if (!userData.HasCurrencyAmount(currency, rank.MinimumPoints)) { return(false); } UserCurrencyDataViewModel userCurrencyData = userData.GetCurrency(currency); if (this.MustEqual && userCurrencyData.GetRank() != rank && !userData.IsCurrencyRankExempt) { return(false); } return(true); }
private async Task HandleUserSpecialIdentifiers(UserViewModel user, string identifierHeader) { if (user != null) { await user.RefreshDetails(); if (ChannelSession.Settings.UserData.ContainsKey(user.ID)) { UserDataViewModel userData = ChannelSession.Settings.UserData[user.ID]; foreach (UserCurrencyViewModel currency in ChannelSession.Settings.Currencies.Values) { UserCurrencyDataViewModel currencyData = userData.GetCurrency(currency); UserRankViewModel rank = currencyData.GetRank(); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserRankNameSpecialIdentifier, rank.Name); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserAmountSpecialIdentifier, currencyData.Amount.ToString()); } this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "time", userData.ViewingTimeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "hours", userData.ViewingHoursString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "mins", userData.ViewingMinutesString); } if (this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "game")) { GameTypeModel game = await ChannelSession.Connection.GetGameType(user.GameTypeID); if (game != null) { this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "game", game.name.ToString()); } else { this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "game", "Unknown"); } } this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "followage", user.FollowAgeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "subage", user.SubscribeAgeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "submonths", user.SubscribeMonths.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "avatar", user.AvatarLink); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "url", "https://www.mixer.com/" + user.UserName); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "name", user.UserName); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "id", user.ID.ToString()); if (this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "followers")) { ExpandedChannelModel channel = await ChannelSession.Connection.GetChannel(user.UserName); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "followers", channel?.numFollowers.ToString() ?? "0"); } } }
private async Task HandleUserSpecialIdentifiers(UserViewModel user, string identifierHeader) { if (user != null && this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader)) { await user.RefreshDetails(); if (ChannelSession.Settings.UserData.ContainsKey(user.ID)) { UserDataViewModel userData = ChannelSession.Settings.UserData[user.ID]; foreach (UserCurrencyViewModel currency in ChannelSession.Settings.Currencies.Values.OrderByDescending(c => c.UserAmountSpecialIdentifier)) { UserCurrencyDataViewModel currencyData = userData.GetCurrency(currency); UserRankViewModel rank = currencyData.GetRank(); UserRankViewModel nextRank = currencyData.GetNextRank(); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserRankNextNameSpecialIdentifier, nextRank.Name); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserAmountNextSpecialIdentifier, nextRank.MinimumPoints.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserRankNameSpecialIdentifier, rank.Name); this.ReplaceSpecialIdentifier(identifierHeader + currency.UserAmountSpecialIdentifier, currencyData.Amount.ToString()); } foreach (UserInventoryViewModel inventory in ChannelSession.Settings.Inventories.Values.OrderByDescending(c => c.UserAmountSpecialIdentifierHeader)) { if (this.ContainsSpecialIdentifier(identifierHeader + inventory.UserAmountSpecialIdentifierHeader)) { UserInventoryDataViewModel inventoryData = userData.GetInventory(inventory); List <string> allItemsList = new List <string>(); foreach (UserInventoryItemViewModel item in inventory.Items.Values.OrderByDescending(i => i.Name)) { int amount = inventoryData.GetAmount(item); if (amount > 0) { allItemsList.Add(item.Name + " x" + amount); } string itemSpecialIdentifier = identifierHeader + inventory.UserAmountSpecialIdentifierHeader + item.SpecialIdentifier; this.ReplaceSpecialIdentifier(itemSpecialIdentifier, amount.ToString()); } if (allItemsList.Count > 0) { this.ReplaceSpecialIdentifier(identifierHeader + inventory.UserAllAmountSpecialIdentifier, string.Join(", ", allItemsList.OrderBy(i => i))); } else { this.ReplaceSpecialIdentifier(identifierHeader + inventory.UserAllAmountSpecialIdentifier, "Nothing"); } } } this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "time", userData.ViewingTimeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "hours", userData.ViewingHoursString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "mins", userData.ViewingMinutesString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "moderationstrikes", userData.ModerationStrikes.ToString()); } this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "primaryrole", user.PrimaryRoleString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "avatar", user.AvatarLink); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "url", "https://www.mixer.com/" + user.UserName); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "name", user.UserName); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "id", user.ID.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "sparks", user.Sparks.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "mixerage", user.MixerAgeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "followage", user.FollowAgeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "subage", user.MixerSubscribeAgeString); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "submonths", user.SubscribeMonths.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "title", user.Title); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogressionnext", user.FanProgression?.level?.nextLevelXp.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogressionrank", user.FanProgression?.level?.level.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogressioncolor", user.FanProgression?.level?.color?.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogressionimage", user.FanProgression?.level?.LargeGIFAssetURL?.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "fanprogression", user.FanProgression?.level?.currentXp.ToString()); if (this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "followers") || this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "game") || this.ContainsSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "channel")) { ExpandedChannelModel channel = await ChannelSession.Connection.GetChannel(user.UserName); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "followers", channel?.numFollowers.ToString() ?? "0"); if (channel.type != null) { this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "gameimage", channel.type.coverUrl); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "game", channel.type.name.ToString()); } this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "channelid", channel.id.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "channellive", channel.online.ToString()); this.ReplaceSpecialIdentifier(identifierHeader + UserSpecialIdentifierHeader + "channelfeatured", channel.featured.ToString()); } } }
public async Task ReplaceCommonSpecialModifiers(UserViewModel user, IEnumerable <string> arguments = null) { foreach (string counter in ChannelSession.Counters.Keys) { this.ReplaceSpecialIdentifier(counter, ChannelSession.Counters[counter].ToString()); } foreach (var kvp in SpecialIdentifierStringBuilder.CustomSpecialIdentifiers) { this.ReplaceSpecialIdentifier(kvp.Key, kvp.Value); } this.ReplaceSpecialIdentifier("date", DateTimeOffset.Now.ToString("d")); this.ReplaceSpecialIdentifier("time", DateTimeOffset.Now.ToString("t")); this.ReplaceSpecialIdentifier("datetime", DateTimeOffset.Now.ToString("g")); if (user != null) { if (string.IsNullOrEmpty(user.AvatarLink)) { user.AvatarLink = UserViewModel.DefaultAvatarLink; } if (user.AvatarLink.Equals(UserViewModel.DefaultAvatarLink)) { UserModel avatarUser = await ChannelSession.Connection.GetUser(user.UserName); if (!string.IsNullOrEmpty(user.AvatarLink)) { user.AvatarLink = avatarUser.avatarUrl; } } for (int i = 0; i < ChannelSession.Settings.Currencies.Count; i++) { UserCurrencyViewModel currency = ChannelSession.Settings.Currencies.Values.ElementAt(i); UserCurrencyDataViewModel currencyData = user.Data.GetCurrency(currency); UserRankViewModel rank = currencyData.GetRank(); this.ReplaceSpecialIdentifier(currency.UserRankNameSpecialIdentifier, rank.Name); this.ReplaceSpecialIdentifier(currency.UserAmountSpecialIdentifier, currencyData.Amount.ToString()); } this.ReplaceSpecialIdentifier("usertime", user.Data.ViewingTimeString); this.ReplaceSpecialIdentifier("userhours", user.Data.ViewingHoursString); this.ReplaceSpecialIdentifier("usermins", user.Data.ViewingMinutesString); this.ReplaceSpecialIdentifier("userfollowage", user.FollowAgeString); this.ReplaceSpecialIdentifier("usersubage", user.SubscribeAgeString); this.ReplaceSpecialIdentifier("usersubmonths", user.SubscribeMonths.ToString()); if (this.ContainsSpecialIdentifier("usergame")) { GameTypeModel game = await ChannelSession.Connection.GetGameType(user.GameTypeID); this.ReplaceSpecialIdentifier("usergame", game.name.ToString()); } this.ReplaceSpecialIdentifier("useravatar", user.AvatarLink); this.ReplaceSpecialIdentifier("userurl", "https://www.mixer.com/" + user.UserName); this.ReplaceSpecialIdentifier("username", user.UserName); this.ReplaceSpecialIdentifier("userid", user.ID.ToString()); } if (arguments != null) { for (int i = 0; i < arguments.Count(); i++) { string username = arguments.ElementAt(i); username = username.Replace("@", ""); UserModel argUserModel = await ChannelSession.Connection.GetUser(username); if (argUserModel != null) { UserViewModel argUser = new UserViewModel(argUserModel); await argUser.SetDetails(); if (ChannelSession.Settings.UserData.ContainsKey(argUser.ID)) { UserDataViewModel userData = ChannelSession.Settings.UserData[argUser.ID]; for (int c = 0; c < ChannelSession.Settings.Currencies.Count; c++) { UserCurrencyViewModel currency = ChannelSession.Settings.Currencies.Values.ElementAt(i); UserCurrencyDataViewModel currencyData = userData.GetCurrency(currency); UserRankViewModel rank = currencyData.GetRank(); this.ReplaceSpecialIdentifier("arg" + (i + 1) + currency.UserRankNameSpecialIdentifier, rank.Name); this.ReplaceSpecialIdentifier("arg" + (i + 1) + currency.UserAmountSpecialIdentifier, currencyData.Amount.ToString()); } this.ReplaceSpecialIdentifier("arg" + (i + 1) + "usertime", userData.ViewingTimeString); this.ReplaceSpecialIdentifier("arg" + (i + 1) + "userhours", userData.ViewingHoursString); this.ReplaceSpecialIdentifier("arg" + (i + 1) + "usermins", userData.ViewingMinutesString); } if (this.ContainsSpecialIdentifier("arg" + (i + 1) + "usergame")) { GameTypeModel game = await ChannelSession.Connection.GetGameType(argUser.GameTypeID); this.ReplaceSpecialIdentifier("arg" + (i + 1) + "usergame", game.name.ToString()); } this.ReplaceSpecialIdentifier("arg" + (i + 1) + "userfollowage", argUser.FollowAgeString); this.ReplaceSpecialIdentifier("arg" + (i + 1) + "usersubage", argUser.SubscribeAgeString); this.ReplaceSpecialIdentifier("arg" + (i + 1) + "usersubmonths", argUser.SubscribeMonths.ToString()); this.ReplaceSpecialIdentifier("arg" + (i + 1) + "useravatar", argUser.AvatarLink); this.ReplaceSpecialIdentifier("arg" + (i + 1) + "userurl", "https://www.mixer.com/" + argUser.UserName); this.ReplaceSpecialIdentifier("arg" + (i + 1) + "username", argUser.UserName); this.ReplaceSpecialIdentifier("arg" + (i + 1) + "userid", argUser.ID.ToString()); } this.ReplaceSpecialIdentifier("arg" + (i + 1) + "text", arguments.ElementAt(i)); } this.ReplaceSpecialIdentifier("allargs", string.Join(" ", arguments)); } }