Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }