public static Entity_ArkPlayer ParsePlayerList(string raw, Entity_ArkPlayerStatus status) { raw = raw.Trim(' '); string[] s = raw.Split(','); Entity_ArkPlayer player = new Entity_ArkPlayer(); player.name = s[0].Trim(' '); player.id = s[1].Trim(' '); player.status = status; return(player); }
public async Task <Entity_ArkPlayer[]> GetAndSendPlayerJoinLeaves() { try { if (userlistCache == null) { userlistCache = new string[0]; } List <string> playersStringList = new List <string>(); string[] leavingPlayers = new string[0]; string[] joiningPlayers = new string[0]; List <Entity_ArkPlayer> nowPlayersList = new List <Entity_ArkPlayer>(); List <Entity_ArkPlayer> playersList = new List <Entity_ArkPlayer>(); //Parse foreach (string s in await FetchPlayerList()) { var player = Entity_ArkPlayer.ParsePlayerList(s, Entity_ArkPlayerStatus.Joined); nowPlayersList.Add(player); playersStringList.Add(player.name); } //Convert to array string[] players = playersStringList.ToArray(); //Compare leavingPlayers = userlistCache.Except(players).ToArray(); //Find differences joiningPlayers = players.Except(userlistCache).ToArray(); //Find differences foreach (var n in leavingPlayers) { //Parse Entity_ArkPlayer player = new Entity_ArkPlayer(); player.status = Entity_ArkPlayerStatus.Leaving; player.name = n; playersList.Add(player); } foreach (var n in joiningPlayers) { //Parse Entity_ArkPlayer player = new Entity_ArkPlayer(); player.status = Entity_ArkPlayerStatus.Joining; player.name = n; playersList.Add(player); } //Reset cache userlistCache = players; if (playersList.Count > 0) { //Changes were made. Write them. var server = await Program.discord.GetChannelAsync(notificationChannel); //Get the channel foreach (var n in playersList) { //Default to leaving. DSharpPlus.Entities.DiscordColor color = DSharpPlus.Entities.DiscordColor.Red; string msg = "left"; if (n.status == Entity_ArkPlayerStatus.Joining) { //Change to joining color = DSharpPlus.Entities.DiscordColor.Green; msg = "joined"; } //Create a message and write var embed = Tools.GenerateEmbed(n.name + " " + msg + " the Ark server!", "Just now", "Server " + name, color); //Write await server.SendMessageAsync(embed : embed); } } return(nowPlayersList.ToArray()); } catch (Exception ex) { Console.WriteLine(ex.Message); } return(null); }