Ejemplo n.º 1
0
        public async Task <CurrentServerInfo> GetCSIRooms(
            string?q,
            int?version,
            string?region,
            string?hideEmpty,
            string?hideFull,
            string?hidePassworded,
            string?hideOfficial,
            string?hideCustom,
            string?hideUnranked,
            string?orderBy,
            int?page,
            int?perPage)
        {
            JToken queryRoomResponse = await this.QueryRooms(null, null, region, hideEmpty, hideFull, hidePassworded, hideOfficial, hideCustom, hideUnranked, null, 1, 100);

            RoomObject   roomObject = JsonConvert.DeserializeObject <RoomObject>(queryRoomResponse.ToString());
            List <Rooms> rooms      = new List <Rooms>();

            int totalPlayers = 0;

            foreach (Rooms room in roomObject.Data)
            {
                room.Name = FilterRoomNames(room.Name);
                rooms.Add(room);
                room.RegionFlag = ConvertRegion(room.Region);
                totalPlayers   += room.AgentCount;
            }

            CurrentServerInfo csi = CountRegions(rooms);

            csi.PlayerCount = totalPlayers;

            return(csi);
        }
Ejemplo n.º 2
0
        public async Task CurrentServerInfo(CommandContext ctx)
        {
            CurrentServerInfo csi = await this.roomService.GetCSIRooms(null, null, null, null, "false", "false", "false", "false", "false", null, 1, 100);

            DiscordEmbedBuilder serverEmbed = new DiscordEmbedBuilder
            {
                Footer = new DiscordEmbedBuilder.EmbedFooter
                {
                    IconUrl = DiscordEmoji.FromGuildEmote(ctx.Client, ServerEmojis.Unofficial).Url,
                },
                Color     = new DiscordColor(217, 187, 19),
                Timestamp = DateTime.UtcNow,
            };

            serverEmbed.Url = "https://intruderfps.com/rooms";
            int skipRoomCount = 0;

            if (csi.Rooms.Count > 0)
            {
                StringBuilder serverList = new StringBuilder();
                int           roomCount  = 0;
                foreach (Rooms room in csi.Rooms)
                {
                    roomCount++;
                    if (roomCount >= 15)
                    {
                        skipRoomCount++;
                    }
                    else
                    {
                        serverList.AppendLine($"{room.ServerIcon} | {room.RegionFlag} | {room.Name} - [{room.AgentCount}/{room.MaxAgents}]");
                    }
                }

                if (skipRoomCount >= 1)
                {
                    serverList.Append($"<:unofficial:{ServerEmojis.Unofficial}> <:os:{ServerEmojis.Official}> <:passworded:{ServerEmojis.Password}> and **{skipRoomCount}** more servers.");
                }

                serverEmbed.Title = "Current Server Information";
                serverEmbed.Url   = "https://intruderfps.com/rooms";
                serverEmbed.AddField($"Server | Region | Name - [Agents]", serverList.ToString(), true);
            }
            else
            {
                serverEmbed.AddField($"Current Server Information", $"N/A", true);
            }

            string extensions = $"{DiscordEmoji.FromGuildEmote(ctx.Client, BrowserEmojis.Chrome)} [**Chrome**](https://chrome.google.com/webstore/detail/intruder-notifications/aoebpknpfcepopfgnbnikaipjeekalim) | "
                                + $"[**Firefox**](https://addons.mozilla.org/en-US/firefox/addon/intruder-notifications/) {DiscordEmoji.FromGuildEmote(ctx.Client, BrowserEmojis.Firefox)}";

            serverEmbed.AddField("Browser Extensions", extensions);
            serverEmbed.Footer.Text = $"SuperbossGames | #current-server-info | Total Agents: {csi.PlayerCount}";

            await ctx.RespondAsync(embed : serverEmbed.Build());
        }
Ejemplo n.º 3
0
        public async Task Execute()
        {
            Log.Information("Looking for available Intruder servers..");
            DiscordChannel sbgCSI = await this.dClient.GetChannelAsync(SBGChannels.CurrentServerInfo);

            CurrentServerInfo csi = await this.roomService.GetCSIRooms(null, null, null, null, "false", "true", "false", "false", "false", null, 1, 100);

            DiscordEmbedBuilder serverEmbed = new DiscordEmbedBuilder
            {
                Footer = new DiscordEmbedBuilder.EmbedFooter
                {
                    IconUrl = DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Unofficial).Url,
                },
                Color     = new DiscordColor(217, 187, 19),
                Timestamp = DateTime.UtcNow,
                Title     = "Current Server Information",
                Url       = "https://intruderfps.com/rooms",
            };
            int skipRoomCount = 0;

            if (csi.Rooms.Count > 0)
            {
                StringBuilder serverList = new StringBuilder();
                int           roomCount  = 0;
                foreach (Rooms room in csi.Rooms)
                {
                    roomCount++;
                    if (roomCount >= 12)
                    {
                        skipRoomCount++;
                    }
                    else
                    {
                        serverList.AppendLine($"{room.ServerIcon} | {room.RegionFlag} | {room.Name} - [{room.AgentCount}/{room.MaxAgents}]");
                    }
                }

                if (skipRoomCount >= 1)
                {
                    serverList.Append($"<:unofficial:{ServerEmojis.Unofficial}> <:os:{ServerEmojis.Official}> <:passworded:{ServerEmojis.Password}> and **{skipRoomCount}** more.");
                }

                serverEmbed.AddField($"Server | Region | Name - [Agents]", serverList.ToString(), true);
            }
            else
            {
                serverEmbed.AddField(
                    $"Current Server Information",
                    $"Publicly no current servers available.\nUse `.ltp` to join the **Looking to Play** role",
                    true);
            }
#pragma warning disable SA1118 // Parameter should not span multiple lines
            serverEmbed.AddField(
                "Statistics",
                $"{RegionFlagEmojis.US}|{DiscordEmoji.FromGuildEmote(this.dClient, csi.USTOD)}| **{csi.USPlayerCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Players)}| **{csi.USRoomCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Unofficial)}\n" +
                $"{RegionFlagEmojis.SA}|{DiscordEmoji.FromGuildEmote(this.dClient, csi.SATOD)}| **{csi.SAPlayerCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Players)}| **{csi.SARoomCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Unofficial)}\n" +
                $"{RegionFlagEmojis.EU}|{DiscordEmoji.FromGuildEmote(this.dClient, csi.EUTOD)}| **{csi.EUPlayerCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Players)}| **{csi.EURoomCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Unofficial)}\n" +
                $"{RegionFlagEmojis.RU}|{DiscordEmoji.FromGuildEmote(this.dClient, csi.RUTOD)}| **{csi.RUPlayerCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Players)}| **{csi.RURoomCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Unofficial)}\n" +
                $"{RegionFlagEmojis.JP}|{DiscordEmoji.FromGuildEmote(this.dClient, csi.JPTOD)}| **{csi.JPPlayerCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Players)}| **{csi.JPRoomCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Unofficial)}\n" +
                $"{RegionFlagEmojis.Asia}|{DiscordEmoji.FromGuildEmote(this.dClient, csi.ASTOD)}| **{csi.AsiaPlayerCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Players)}| **{csi.AsiaRoomCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Unofficial)}\n" +
                $"{RegionFlagEmojis.AU}|{DiscordEmoji.FromGuildEmote(this.dClient, csi.AUTOD)}| **{csi.AUPlayerCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Players)}| **{csi.AURoomCount}** {DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Unofficial)}\n" +
                $"Agents: **{csi.PlayerCount}** | Rooms: **{csi.Rooms.Count}**\n", true);
#pragma warning restore SA1118 // Parameter should not span multiple lines

            string extensions = $"{DiscordEmoji.FromGuildEmote(this.dClient, BrowserEmojis.Chrome)} [**Chrome**](https://chrome.google.com/webstore/detail/intruder-notifications/aoebpknpfcepopfgnbnikaipjeekalim) | "
                                + $"[**Firefox**](https://addons.mozilla.org/en-US/firefox/addon/intruder-notifications/) {DiscordEmoji.FromGuildEmote(this.dClient, BrowserEmojis.Firefox)}";

            serverEmbed.AddField("Browser Extensions", extensions);

            serverEmbed.Footer.Text    = $"SuperbossGames | #current-server-info";
            serverEmbed.Footer.IconUrl = DiscordEmoji.FromGuildEmote(this.dClient, ServerEmojis.Unofficial).Url;
            serverEmbed.Color          = new DiscordColor(217, 187, 19);
            serverEmbed.Timestamp      = DateTime.UtcNow;

            await this.activityManager.TrySetActivityAsync($"{csi.PlayerCount} agents ", ActivityType.Watching);

            try
            {
                foreach (DiscordMessage msg in await sbgCSI.GetMessagesAsync())
                {
                    if (msg.Author.Id == this.dClient.CurrentUser.Id)
                    {
                        await msg.ModifyAsync(embed : serverEmbed.Build());

                        return;
                    }
                }
            }
            catch (Exception e)
            {
                Log.Error(e.InnerException, "Failed to edit or update the Current Server Info.");
            }

            Log.Information("Finished looking for Intruder Servers");
        }
Ejemplo n.º 4
0
        public async Task <CurrentServerInfo> GetCSIRooms(string?hideEmpty, string?hideFull, string?hidePassworded, string?hideOfficial, string?hideCustom, string?hideUnranked, string?region)
        {
            // Send first request
            JToken queryRoomResponse = await this.QueryRooms(null, null, null, hideEmpty, hideFull, hidePassworded, hideOfficial, hideCustom, hideUnranked, "official%3Adesc", 1, 100);

            RoomObject roomObject = JsonConvert.DeserializeObject <RoomObject>(queryRoomResponse.ToString());

            List <Rooms> rooms = new List <Rooms>();

            int totalPlayers = 0;
            int i            = 1;

            foreach (Rooms room in roomObject.Data)
            {
                if (room.Official)
                {
                    room.ServerIcon = $"<:os:{ServerEmojis.Official}>";
                }
                else
                {
                    room.ServerIcon = $"<:uo:{ServerEmojis.Unofficial}>";
                }

                if (room.Passworded)
                {
                    room.ServerIcon = $"<:asd:{ServerEmojis.Password}>";
                }

                room.Name = FilterRoomNames(room.Name);
                rooms.Add(room);
                room.RegionFlag = ConvertRegion(room.Region);
                totalPlayers   += room.AgentCount;
            }

            // MAKE SURE THE ROOM COUNT IN OUR MODEL MATCHES THE ROOMOBJECT REQUEST
            while (rooms.Count != roomObject.TotalCount)
            {
                i++;

                // Send another request for moar data
                queryRoomResponse = await this.QueryRooms(null, null, null, hideEmpty, hideFull, hidePassworded, hideOfficial, hideCustom, hideUnranked, "official%3Adesc", i, 100);

                // Decode the mainframe overloader
                roomObject = JsonConvert.DeserializeObject <RoomObject>(queryRoomResponse.ToString());

                foreach (Rooms room in roomObject.Data)
                {
                    if (room.Official)
                    {
                        room.ServerIcon = $"<:os:{ServerEmojis.Official}>";
                    }
                    else
                    {
                        room.ServerIcon = $"<:uo:{ServerEmojis.Unofficial}>";
                    }

                    if (room.Passworded)
                    {
                        room.ServerIcon = $"<:asd:{ServerEmojis.Password}>";
                    }

                    rooms.Add(room);
                    room.RegionFlag = ConvertRegion(room.Region);
                    totalPlayers   += room.AgentCount;
                }
            }

            CurrentServerInfo csi = CountRegions(rooms);

            csi.PlayerCount = totalPlayers;

            return(csi);
        }
Ejemplo n.º 5
0
        private static CurrentServerInfo CountRegions(List <Rooms> rooms)
        {
            CurrentServerInfo csi = new CurrentServerInfo()
            {
                Rooms = rooms,
            };

            foreach (Rooms regionRooms in rooms)
            {
                switch (regionRooms.Region)
                {
                case "EU":
                    csi.EUPlayerCount += regionRooms.AgentCount;
                    csi.EURoomCount++;
                    break;

                case "US":
                    csi.USPlayerCount += regionRooms.AgentCount;
                    csi.USRoomCount++;
                    break;

                case "AU":
                    csi.AUPlayerCount += regionRooms.AgentCount;
                    csi.AURoomCount++;
                    break;

                case "USW":
                    csi.USPlayerCount += regionRooms.AgentCount;
                    csi.USRoomCount++;
                    break;

                case "RU":
                    csi.RUPlayerCount += regionRooms.AgentCount;
                    csi.RURoomCount++;
                    break;

                case "Asia":
                    csi.AsiaPlayerCount += regionRooms.AgentCount;
                    csi.AsiaRoomCount++;
                    break;

                case "JP":
                    csi.JPPlayerCount += regionRooms.AgentCount;
                    csi.JPRoomCount++;
                    break;

                case "SA":
                    csi.SAPlayerCount += regionRooms.AgentCount;
                    csi.SARoomCount++;
                    break;

                case "CAE":
                    csi.CAEPlayerCount += regionRooms.AgentCount;
                    csi.CAERoomCount++;
                    break;

                case "KR":
                    csi.KRPlayerCount += regionRooms.AgentCount;
                    csi.KRRoomCount++;
                    break;

                case "IN":
                    csi.INPlayerCount += regionRooms.AgentCount;
                    csi.INRoomCount++;
                    break;
                }
            }

            // US WEST csi.USWTOD = this.CheckTimeOfDay(DateTime.UtcNow.AddHours(-8.0));
            csi.CAETOD = CheckTimeOfDay(DateTime.UtcNow.AddHours(-5.0));
            csi.USTOD  = CheckTimeOfDay(DateTime.UtcNow.AddHours(-5.0));
            csi.SATOD  = CheckTimeOfDay(DateTime.UtcNow.AddHours(-3.0));
            csi.EUTOD  = CheckTimeOfDay(DateTime.UtcNow.AddHours(1.0));
            csi.RUTOD  = CheckTimeOfDay(DateTime.UtcNow.AddHours(3.0));
            csi.INTOD  = CheckTimeOfDay(DateTime.UtcNow.AddHours(5.5));
            csi.ASTOD  = CheckTimeOfDay(DateTime.UtcNow.AddHours(8.0));
            csi.JPTOD  = CheckTimeOfDay(DateTime.UtcNow.AddHours(9.0));
            csi.KRTOD  = CheckTimeOfDay(DateTime.UtcNow.AddHours(9.0));
            csi.AUTOD  = CheckTimeOfDay(DateTime.UtcNow.AddHours(11.0));

            return(csi);
        }