private DiscordEmbedBuilder BuildGameFoundMessage(InhouseGame inhouseGame, InhouseQueue inhouseQueue) { var blueWinrate = CalculateBlueSideWinrate(inhouseGame); var embedBuilder = new DiscordEmbedBuilder(); embedBuilder.Title = "📢Game found📢"; embedBuilder.Description = $"Blue side expected winrate is {blueWinrate.ToString("0.0")}%\n" + "If you are ready to play, press ✅\n" + "If you cannot play, press ❌\n" + "Recheck if it didn't work the first time"; var bluePlayers = inhouseGame.InhousePlayers.Where(x => x.PlayerSide == PlayerSide.Blue).OrderBy(x => x.PlayerRole); var bluePlayersString = ""; foreach (var bluePlayer in bluePlayers) { bluePlayersString += $"{inhouseQueue.Emojis[bluePlayer.PlayerRole]}{_statusEmojis[bluePlayer.PlayerStatus]}{bluePlayer.Player.DisplayName}\n"; } var redPlayers = inhouseGame.InhousePlayers.Where(x => x.PlayerSide == PlayerSide.Red).OrderBy(x => x.PlayerRole); var redPlayersString = ""; foreach (var redPlayer in redPlayers) { redPlayersString += $"{inhouseQueue.Emojis[redPlayer.PlayerRole]}{_statusEmojis[redPlayer.PlayerStatus]}{redPlayer.Player.DisplayName}\n"; } embedBuilder.AddField("BLUE", bluePlayersString, true); embedBuilder.AddField("RED", redPlayersString, true); return(embedBuilder); }
public void SetByInhouseQueue(InhouseQueue inhouseQueue) { var oldInhouseDb = _dbset.FirstOrDefault(x => x.ChannelId == inhouseQueue.ChannelId); if (oldInhouseDb != null) { oldInhouseDb.TopEmoji = inhouseQueue.Emojis[PlayerRole.Top]; oldInhouseDb.JglEmoji = inhouseQueue.Emojis[PlayerRole.Jgl]; oldInhouseDb.MidEmoji = inhouseQueue.Emojis[PlayerRole.Mid]; oldInhouseDb.BotEmoji = inhouseQueue.Emojis[PlayerRole.Bot]; oldInhouseDb.SupEmoji = inhouseQueue.Emojis[PlayerRole.Sup]; oldInhouseDb.FillEmoji = inhouseQueue.Emojis[PlayerRole.Fill]; _dbset.Update(oldInhouseDb); return; } var inhouseDb = new InhouseDb { ChannelId = inhouseQueue.ChannelId, TopEmoji = inhouseQueue.Emojis[PlayerRole.Top], JglEmoji = inhouseQueue.Emojis[PlayerRole.Jgl], MidEmoji = inhouseQueue.Emojis[PlayerRole.Mid], BotEmoji = inhouseQueue.Emojis[PlayerRole.Bot], SupEmoji = inhouseQueue.Emojis[PlayerRole.Sup], FillEmoji = inhouseQueue.Emojis[PlayerRole.Fill] }; _dbset.Add(inhouseDb); }
private void SetUpQueues() { InhouseQueues = new List <InhouseQueue>(); InhouseGames = new List <InhouseGame>(); try { var uow = _db.UnitOfWork(); var inhouses = uow.Inhouses.GetAll(); foreach (var inhouse in inhouses) { var inhouseQueue = new InhouseQueue(inhouse.ChannelId); inhouseQueue.Emojis[PlayerRole.Top] = inhouse.TopEmoji; inhouseQueue.Emojis[PlayerRole.Jgl] = inhouse.JglEmoji; inhouseQueue.Emojis[PlayerRole.Mid] = inhouse.MidEmoji; inhouseQueue.Emojis[PlayerRole.Bot] = inhouse.BotEmoji; inhouseQueue.Emojis[PlayerRole.Sup] = inhouse.SupEmoji; inhouseQueue.Emojis[PlayerRole.Fill] = inhouse.FillEmoji; InhouseQueues.Add(inhouseQueue); } } catch (Exception ex) { AegisLog.Log(ex.Message, ex); } }
public async Task TestDbStoreRetrieveInhouseAsync() { using (var Database = new LiteDatabase(@"test.db")) { var user1 = new Mock <IUser>(); user1.Setup(u => u.Username).Returns("bob"); user1.Setup(u => u.Id).Returns(543); var input = new InhouseQueue(987, "test"); input.Players.Add(user1.Object.Id, Player.ToPlayer(user1.Object, 1000)); var col = Database.GetCollection <InhouseQueue>(); col.Delete(u => true); col.Insert(input); col.EnsureIndex(x => x.Name); var channelMock = new Mock <IDiscordClient>(); channelMock.Setup(u => u.GetUserAsync(user1.Object.Id, It.IsAny <CacheMode>(), It.IsAny <RequestOptions>())).Returns(Task.FromResult(user1.Object)); var output = await InhouseQueue.GetQueueAsync(input.ChannelId, input.Name, channelMock.Object, col); Assert.AreEqual(input.ChannelId, output.ChannelId); Assert.AreEqual(input.Name, output.Name); Assert.AreEqual(input.Players.Count, output.Players.Count); foreach (var player in input.Players) { Assert.IsTrue(output.Players.ContainsKey(player.Key)); Assert.AreEqual(player.Value.Id, output.Players[player.Key].Id); Assert.AreEqual(player.Value.MMR, output.Players[player.Key].MMR); } } }
private async Task <InhouseQueue> SetUpEmoji(InhouseQueue inhouseQueue) { var channel = await _client.GetChannelAsync(inhouseQueue.ChannelId).ConfigureAwait(false); var emojis = await channel.Guild.GetEmojisAsync().ConfigureAwait(false); inhouseQueue.Emojis[PlayerRole.Top] = emojis.FirstOrDefault(x => x.Name == "TOP") ?? "TOP:"; inhouseQueue.Emojis[PlayerRole.Jgl] = emojis.FirstOrDefault(x => x.Name == "JGL") ?? "JGL:"; inhouseQueue.Emojis[PlayerRole.Mid] = emojis.FirstOrDefault(x => x.Name == "MID") ?? "MID:"; inhouseQueue.Emojis[PlayerRole.Bot] = emojis.FirstOrDefault(x => x.Name == "BOT") ?? "BOT:"; inhouseQueue.Emojis[PlayerRole.Sup] = emojis.FirstOrDefault(x => x.Name == "SUP") ?? "SUP:"; inhouseQueue.Emojis[PlayerRole.Fill] = emojis.FirstOrDefault(x => x.Name == "FILL") ?? "FILL:"; return(inhouseQueue); }
private void RemovePlayerFromQueueGroup(InhouseQueue inhouseQueue, DiscordMember user) { var queueGroup = inhouseQueue.PlayersInQueue.FirstOrDefault(x => x.Players.Any(y => y.Player.Id == user.Id)); if (queueGroup == null) { return; } queueGroup.Players.RemoveAll(x => x.Player.Id == user.Id); if (queueGroup.Players.Count() == 0) { inhouseQueue.PlayersInQueue.Remove(queueGroup); } }
public async Task SetQueueChannel(DiscordChannel channel) { var inhouseQueue = InhouseQueues.FirstOrDefault(x => x.ChannelId == channel.Id); if (inhouseQueue != null) { return; } inhouseQueue = new InhouseQueue(channel.Id); inhouseQueue = await SetUpEmoji(inhouseQueue).ConfigureAwait(false); var uow = _db.UnitOfWork(); uow.Inhouses.SetByInhouseQueue(inhouseQueue); await uow.SaveAsync().ConfigureAwait(false); await channel.SendMessageAsync($"Inhouse Queue added to {channel.Mention}").ConfigureAwait(false); InhouseQueues.Add(inhouseQueue); }