public async Task <IActionResult> GetGuildUser([FromRoute] ulong guildId, [FromRoute] ulong userId) { var client = await HttpContext.GetBotClient(); Task <RestGuildUser> currentUser = client.GetGuildUserAsync(guildId, HttpContext.GetUserId()); Task <RestGuildUser> searchUser = client.GetGuildUserAsync(guildId, userId); var guild = client.GetGuildAsync(guildId); var tasks = new List <Task>(); try { tasks.Add(currentUser); tasks.Add(searchUser); tasks.Add(guild); await Task.WhenAll(tasks); } catch (HttpException) { return(StatusCode(412, "Bot not in guild")); } if (currentUser.Result == null) { return(StatusCode(403, "Unauthorized")); } if (searchUser.Result == null) { return(StatusCode(404, "No user in guild")); } var profile = await ProfileDb.GetProfile(searchUser.Result.Id); var bal = await BalanceDb.GetToastiesAsync(userId, guildId); var dailyRes = await DailyDb.GetDailyAsync(userId, guildId); var daily = dailyRes == null ? 0 : dailyRes.Streak; var waifus = (await UserInventoryDb.GetWaifusAsync(userId, guildId)).OrderBy(x => x.Source).ThenBy(x => x.Name).ToView(); var waifu = FeaturedWaifuDb.GetFeaturedWaifu(userId, guildId).ToView(); var user = new GuildUserView { AvatarUrl = searchUser.Result.GetAvatarUrl(size: 256), Id = searchUser.Result.Id.ToString(), Name = searchUser.Result.Username, Discriminator = searchUser.Result.Discriminator, ImageUrl = profile.Image, Quote = profile.Quote.CleanQuote(), LootboxesOpened = profile.LootboxesOpened, Rep = profile.Rep, Balance = bal, Daily = daily, Waifus = waifus, JoinedAt = searchUser.Result.JoinedAt, Waifu = waifu, Guild = new GuildSummaryView { ImageUrl = guild.Result.IconUrl, Id = guild.Result.Id.ToString(), Name = guild.Result.Name } }; return(Ok(user)); }