public string getAfkTimerString(string username) { string result = ""; try { clsChatUser user = this.userlist.Find(x => x.Username.ToLower() == username.ToLower()); if (user.isAfk) { ///me [username] ist seit [zeit] weg von Schlüsselbrett result = Config.Plugin_Afk_Message; result = result.Replace("[username]", username); DateTime jetzt = DateTime.Now; DateTime vorhin = user.afkSince; TimeSpan afkkseit = (jetzt - vorhin); if (afkkseit.TotalMinutes >= 61) { result = result.Replace("[zeit]", afkkseit.Hours.ToString() + " Stunde/n und " + afkkseit.Minutes + " Minuten"); } else if (afkkseit.TotalMinutes >= 1) { result = result.Replace("[zeit]", afkkseit.Minutes.ToString() + " Minuten"); } else { result = result.Replace("[zeit]", afkkseit.Seconds.ToString() + " Sekunden"); } } else { result = Config.Plugin_Afk_NotAfkMessage; result = result.Replace("[username]", username); } } catch (Exception) { //Username nicht da, kann passieren } return(result); }
private void getUsernamesFromChatlist(HtmlElement UserlistBox) { List <clsChatUser> newuserlist = new List <clsChatUser>(); foreach (HtmlElement item in UserlistBox.Children) { string userDivClass = item.GetAttribute("classname"); if (userDivClass.Contains(Config.UserlistWrapper_Userlist_Item_Class)) { //Div-Element für einen user clsChatUser user = new clsChatUser(); //Checken ob User afk ist if (userDivClass.Contains(Config.UserlistWrapper_Userlist_AfkUser_Class)) { user.isAfk = true; } if (item.Children.Count >= 2) { user.Username = item.Children[1].InnerText; newuserlist.Add(user); } } } bool userlistchanged = false; List <clsChatUser> addUserToList = new List <clsChatUser>(); List <string> deleteUserFromList = new List <string>(); foreach (clsChatUser existingUser in this.userlist) { bool userfound = false; foreach (clsChatUser newuser in newuserlist) { if (newuser.Username == existingUser.Username) { userfound = true; //user existiert schon in der liste, checken ob er nun afk ist if (newuser.isAfk && !existingUser.isAfk) { userlistchanged = true; existingUser.isAfk = true; SendChatMessageEvent(existingUser.Username + " ist jetzt afk"); } if (!newuser.isAfk && existingUser.isAfk) { existingUser.isAfk = false; TimeSpan afkts = DateTime.Now - existingUser.afkSince; existingUser.afkSince = DateTime.MinValue; SendChatMessageEvent(existingUser.Username + " ist nicht mehr afk (War afk für " + afkts.ToString(@"hh\:mm\:ss") + ")"); userlistchanged = true; } } } if (!userfound) { deleteUserFromList.Add(existingUser.Username); SendChatMessageEvent(existingUser.Username + " ist jetzt offline"); } } foreach (clsChatUser newuser in newuserlist) { bool userfound = false; foreach (clsChatUser existingUser in this.userlist) { if (existingUser.Username == newuser.Username) { userfound = true; } } if (!userfound) { addUserToList.Add(newuser); SendChatMessageEvent(newuser.Username + " ist jetzt online"); } } if (addUserToList.Count >= 1 || deleteUserFromList.Count >= 1) { userlistchanged = true; } this.userlist.AddRange(addUserToList); foreach (string username in deleteUserFromList) { this.userlist.Remove(this.userlist.Where(user => user.Username == username).First()); } //foreach (int i_item in deleteUserFromList) //{ // this.userlist.RemoveAt(i_item); //} if (userlistchanged) { UserListChangedEvent(this.userlist); } }