public void Execute(string message)
        {
            string[] packet = message.Split(ChatConstants.MSG_SEPERATOR);
            switch (packet[0])
            {
            case ChatConstants.CMD_USER_LOGIN:
                var loginPacket = message.Replace("@", "%").Split('%');
                var userId      = Convert.ToInt32(loginPacket[3]);

                /*
                 * if (Program.IsUserBanned(Username))
                 * {
                 *  _handler.Shutdown(SocketShutdown.Both);
                 *  _handler.Close();
                 *  _handler = null;
                 *  return;
                 * }
                 */

                GameSession = GameManager.GetGameSession(userId);
                Clan        = loginPacket[7] == "noclan" ? "" : GameSession.Player.GetClanTag();
                Permission  = (Permissions)QueryManager.GetChatPermission(GameSession.Player.Id);

                if (ServerManager.ChatClients.ContainsKey(GameSession.Player.Id))
                {
                    ServerManager.ChatClients[GameSession.Player.Id].Socket.Shutdown(SocketShutdown.Both);
                    ServerManager.ChatClients[GameSession.Player.Id].Socket.Close();
                    ServerManager.ChatClients[GameSession.Player.Id].Socket = null;
                    var chat = this;
                    ServerManager.ChatClients.TryRemove(GameSession.Player.Id, out chat);
                }
                ServerManager.AddChatClient(this);

                Send("bv%" + GameSession.Player.Id + "#");
                var servers = Room.Rooms.Aggregate(String.Empty, (current, chat) => current + chat.Value.ToString());
                servers = servers.Remove(servers.Length - 1);
                Send("by%" + servers + "#");
                ChatsJoined.Add(Room.Rooms.FirstOrDefault().Value.Id);
                break;

            case ChatConstants.CMD_USER_MSG:
                SendMessage(message);
                break;

            case ChatConstants.CMD_USER_JOIN:
                var newchat = Convert.ToInt32(message.Split('%')[2].Split('@')[0]);
                if (Room.Rooms.ContainsKey(newchat))
                {
                    if (!ChatsJoined.Contains(newchat))
                    {
                        ChatsJoined.Add(newchat);
                    }
                }
                else
                {
                    /*
                     * var inviterPlayer = GameManager.Players.Values.FirstOrDefault(x => x.DuelInvites.ContainsValue(Player));
                     * AcceptDuel(inviterPlayer);
                     */
                }
                break;
            }
        }