示例#1
0
        private bool ClickToAddFriendAt(ProfileMessage profile, int x, int y, Filter filter)
        {
            ZaloHelper.Output($"!đã nhấn vào bạn: {profile.Name}");

            TouchAt(x, y);//TOUCH TO ROW_INDEX

            Delay(2000);
            //I''m on profile page

            var info = GrabProfileInfo(profile.Name);

            ZaloHelper.CopyProfile(ref profile, info);

            string reason;

            if (!filter.IsValidProfile(profile, out reason))
            {
                ZaloHelper.Output("Bỏ qua bạn này, lý do: " + reason);
                TouchAtIconTopLeft(); //GoBack to friendList
                return(false);
            }

            if (!info.IsAddedToFriend)
            {
                return(AddFriendViaIconButton(profile, filter));
            }
            else
            {
                ZaloHelper.Output($"!yêu cầu kết bạn: {profile.Name} bị từ hủy. Lý do: đã có tên trong cơ sở dữ liệu");
                TouchAtIconTopLeft(); //GoBack to friendList
                return(false);
            }
        }
示例#2
0
        private void AddFriend(int numberOfAction, Filter filter)
        {
            ZaloHelper.Output($"!bắt đầu thêm bạn. số bạn yêu cầu tối đa trong ngày hôm nay là {numberOfAction}");

            var countSuccess = 0;

            string[] profilesPage1 = null;
            string[] profilesPage2 = null;
            ZaloHelper.Output("!đang tìm thông tin các bạn");
            var friendNotAdded = GetPositionAccountNotAdded(x => profilesPage1 = x).OrderByDescending(x => x.Point.Y);
            var stack          = new Stack <FriendPositionMessage>(friendNotAdded);

            profilesPage1.ToList().ForEach(x => ZaloHelper.Output($"!tìm thấy bạn trên màn hình: {x}"));
            ZaloHelper.Output($"!--------------------");
            friendNotAdded.ToList().ForEach(x => ZaloHelper.Output($"!các bạn chưa được gửi lời mời: {x.Name}"));
            while (countSuccess < numberOfAction)
            {
                while (stack.Count == 0)
                {
                    ZaloHelper.Output("!đang cuộn danh sách bạn");
                    ScrollList(9);

                    ZaloHelper.Output("!đang tìm thông tin các bạn");
                    friendNotAdded = (GetPositionAccountNotAdded(x => profilesPage2 = x)).OrderByDescending(x => x.Point.Y);
                    stack          = new Stack <FriendPositionMessage>(friendNotAdded);

                    profilesPage1.ToList().ForEach(x => ZaloHelper.Output($"!tìm thấy bạn trên màn hình: {x}"));
                    ZaloHelper.Output($"!--------------------");
                    friendNotAdded.ToList().ForEach(x => ZaloHelper.Output($"!các bạn chưa được gửi lời mời: {x.Name}"));

                    profilesPage2.ToList().ForEach(x => ZaloHelper.Output($"!tìm thấy bạn trên màn hình: {x}"));

                    if (!profilesPage2.Except(profilesPage1).Any())
                    {
                        ZaloHelper.Output("!hết bạn trong danh sách.");
                        return;
                    }
                    profilesPage1 = profilesPage2;
                }

                Delay(2000);

                var pointRowFriend = stack.Pop();

                var profile = new ProfileMessage
                {
                    Name     = pointRowFriend.Name,
                    Location = filter.Locations
                };

                if (Screen.InfoRect.Contains(pointRowFriend.Point) &&
                    ClickToAddFriendAt(profile, pointRowFriend.Point, filter))
                {
                    DbContext.AddProfile(profile, Settings.User.Username);
                    countSuccess++;
                    ZaloHelper.Output($"!yêu cầu kết bạn [{countSuccess}]: {profile.Name} bị thành công.");
                }
            }
        }
        private void SendMessageToFriendWithNames(Filter filter)
        {
            var stack = new Stack <string>(filter.IncludedPeopleNames.ZaloSplitText());

            while (stack.Count > 0)
            {
                Delay(1000);
                TouchAtIconBottomLeft();//Open search
                Delay(500);
                var name = stack.Pop();

                TouchAt(Screen.HomeScreenFriendTabSearchTextField);
                Delay(500);

                SendText(name);

                var rowFriends = ZaloImageProcessing.GetFriendProfileList(CaptureScreenNow(), Screen);
                if (!rowFriends.Any())
                {
                    ZaloHelper.Output("Không có kết quả");

                    TouchAtIconTopLeft();

                    continue;
                }

                TouchAt(Screen.HomeScreenFriendTabSearchFristItem);
                Delay(500);

                var request = new ChatRequest()
                {
                    Objective = ChatObjective.FriendInContactList, Profile = new ProfileMessage()
                };
                NavigateToProfileScreenFromChatScreenToGetInfoThenGoBack(request);

                string reason;
                if (!filter.IsValidProfile(request.Profile, out reason))
                {
                    ZaloHelper.Output("Bỏ qua bạn này, lý do: " + reason);
                    TouchAtIconTopLeft(); //Touch to close side bar
                    Delay(400);
                }
                else
                {
                    Chat(request, filter);

                    TouchAtIconTopLeft();//GO BACK PROFILE
                }
            }

            //Search in contact
        }
示例#4
0
        private bool AddFriendViaIconButton(ProfileMessage profile, Filter filter)
        {
            ZaloHelper.Output($"!tiến hành gửi yêu cầu kết bạn: {profile.Name}");
            //Wait to navigate to profiles
            TouchAtIconBottomRight(); //Touch to AddFriends
                                      //Wait to Navigate to new windows
            Delay(3000);

            var proccessedDialog = ProcessIfShowDialogWaitRequestedFriendConfirm();

            if (proccessedDialog)
            {
                ZaloHelper.Output($"!yêu cầu kết bạn: {profile.Name} bị từ chối. Lý do: đã gửi yêu cầu rồi");
                TouchAtIconTopLeft(); //GoBack to friendList
                return(false);
            }

            TouchAt(Screen.AddFriendScreenGreetingTextField);

            var textGreeting = ZaloHelper.GetZalomessages(profile, filter)?.FirstOrDefault(x => x.Type == ZaloMessageType.Text)?.Value;

            if (!string.IsNullOrWhiteSpace(textGreeting))
            {
                ZaloHelper.Output($"!gửi: {textGreeting}");
                SendText(textGreeting);

                if (Settings.IsDebug)
                {
                    TouchAtIconTopLeft();
                }
                else
                {
                    TouchAt(Screen.AddFriendScreenOkButton); //TouchToAddFriend, zalo auto goto profile after sent
                }
            }
            else
            {
                TouchAtIconTopLeft(); //GoBack to profile
            }

            Delay(300);

            TouchAtIconTopLeft(); //GoBack to friendList

            DbContext.LogAddFriend(profile, Settings.User.Username, textGreeting);

            return(true);
        }
示例#5
0
        protected ProfileMessage GrabProfileInfo(string initName = null)
        {
            ZaloHelper.Output($"!đang lấy thông tin bạn: {initName}");

            TouchAt(Screen.ProfileScreenTabInfo); //Touch tab Thong Tin
            Delay(300);

            var file    = CaptureScreenNow();
            var profile = ZaloImageProcessing.GetProfile(file, Screen);

            if (!string.IsNullOrWhiteSpace(initName))
            {
                profile.Name = initName;
            }
            ZaloHelper.Output($"!@: {profile.Name} {profile.BirthdayText} {profile.Gender} {profile.PhoneNumber}");
            return(profile);
        }
        public void NavigateToProfileScreenFromChatScreenToGetInfoThenGoBack(ChatRequest request)
        {
            //GrabInfomation
            TouchAtIconTopRight();
            Delay(1000);
            TouchAt(Screen.ChatScreenProfileAvartar);
            Delay(2000);

            var infoGrab = GrabProfileInfo(request.Profile.Name);

            var profileCopy = request.Profile;

            ZaloHelper.CopyProfile(ref profileCopy, infoGrab);

            TouchAtIconTopLeft(); //Back to chat screen
            TouchAtIconTopLeft(); //Close sidebar
            //End friend
        }
        public void SendMessageNearBy(Filter filter)
        {
            filter.Locations = SetLocationByName(filter.Locations);

            try
            {
                var canSentToday   = Settings.MaxMessageStrangerPerDay - DbContext.GetMessageToStragerCount(Settings.User.Username);
                var numberOfAction = filter.NumberOfAction > canSentToday ? canSentToday : filter.NumberOfAction;
                if (numberOfAction <= 0)
                {
                    ZaloHelper.Output("đã gửi hết số bạn trong ngày rồi");

                    return;
                }

                var gender    = filter.GenderSelection;
                var ageValues = filter.FilterAgeRange?.Split("-".ToArray());

                string ageFrom = "18";
                string ageTo   = "50";
                if (ageValues.Length == 2)
                {
                    ageFrom = ageValues[0];
                    ageTo   = ageValues[1];
                }

                GotoPage(Activity.UserNearbyList);

                AddSettingSearchFriend(gender, ageFrom, ageTo);

                ChatFriendNearBy(numberOfAction, filter);
            }
            catch (Exception ex) { _log.Error(ex); }
            finally
            {
                ZaloHelper.SendCompletedTaskSignal();
            }
        }
示例#8
0
        public void AddFriendNearBy(Filter filter)
        {
            filter.Locations = SetLocationByName(filter.Locations);
            try
            {
                ZaloHelper.Output("Tiến hành kết bạn theo vị trí địa lý");

                var canAddedFriendToday = (Settings.MaxFriendAddedPerDay - DbContext.GetAddedFriendCount(Settings.User.Username));
                var numberOfAction      = filter.NumberOfAction > canAddedFriendToday ? canAddedFriendToday : filter.NumberOfAction;
                if (numberOfAction <= 0)
                {
                    ZaloHelper.Output("Kết bạn tối đa trong ngày rồi");

                    return;
                }

                var gender    = filter.GenderSelection;
                var ageValues = filter.FilterAgeRange.Split("-".ToArray());
                var ageFrom   = ageValues[0];
                var ageTo     = ageValues[1];

                GotoPage(Activity.UserNearbyList);

                ZaloHelper.Output("Thiết lập tùy chỉnh nâng cao");
                AddSettingSearchFriend(gender, ageFrom, ageTo);

                AddFriend(numberOfAction, filter);
            }
            catch (Exception ex)
            {
                _log.Error(ex);
            }
            finally
            {
                ZaloHelper.SendCompletedTaskSignal();
            }
        }
示例#9
0
        public void Login(User user)
        {
            try
            {
                var count  = 0;
                var finish = false;
                while (!finish && count < 5)
                {
                    EnableAbdKeyoard();
                    var account  = user.Username;
                    var password = user.Password;
                    var region   = user.Region;

                    ZaloHelper.Output("Đóng ZALO trước đó");
                    InvokeProc("/c adb shell am force-stop com.zing.zalo");
                    Delay(Settings.Delay.WaitForceCloseApp);

                    //InvokeProc("/c adb shell am start -n com.zing.zalo/.MainActivity");

                    ZaloHelper.Output("Tiến hành đăng nhập vào tài khoản: " + account);
                    GotoPage(Activity.LoginUsingPw);

                    Delay(Settings.Delay.WaitLoginScreenOpened);
                    if (!region.Equals("Vietnam"))
                    {
                        ZaloHelper.Output("Chọn khu vực trong cửa sổ mới" + region);
                        TouchAt(Screen.LoginScreenCountryCombobox);
                        Delay(1000);
                        TouchAt(Screen.IconTopRight);
                        Delay(1100);
                        SendText(region);
                        Delay(1200);
                        TouchAt(Screen.LoginScreenFirstCountryItem);
                        Delay(500);
                    }

                    ZaloHelper.Output("Đang gửi tên đăng nhập");
                    TouchAt(Screen.LoginScreenPhoneTextField);
                    Delay(200);
                    TouchAt(Screen.LoginScreenPhoneTextField);
                    Delay(200);

                    DeleteWordInFocusedTextField();

                    SendText(account);

                    ZaloHelper.Output("Đang gửi mật khẩu");
                    Delay(100);
                    TouchAt(Screen.LoginScreenPasswordTextField);
                    Delay(500);
                    SendText(password);
                    TouchAt(Screen.LoginScreenOkButton);
                    //SendKey(KeyCode.AkeycodeEnter, 2);

                    Delay(Settings.Delay.WaitLogin);
                    ZaloHelper.Output("Đang gửi thông tin đăng nhập");

                    if (ZaloImageProcessing.HasLoginButton(CaptureScreenNow(), Settings.Screen))
                    {
                        ZaloHelper.Output("Đăng nhập thất bại, đang thử lại");
                    }
                    else
                    {
                        finish = true;
                    }
                    count++;
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                ZaloHelper.Output("Có lỗi xảy ra");
            }
        }
示例#10
0
        public void AddFriendByPhone(Filter filter)
        {
            try
            {
                var canAddedFriendToday = (Settings.MaxFriendAddedPerDay - DbContext.GetAddedFriendCount(Settings.User.Username));
                var numberOfAction      = filter.NumberOfAction > canAddedFriendToday ? canAddedFriendToday : filter.NumberOfAction;
                if (numberOfAction == 0)
                {
                    ZaloHelper.Output("Kết bạn tối đa trong ngày rồi");

                    return;
                }

                var countSuccess = 0;
                var phonelist    = new Stack <string>(filter.IncludePhoneNumbers.Split(";,|".ToArray()));
                while (countSuccess < numberOfAction)
                {
                    ZaloHelper.Output("Đang mở trang kết bạn qua số điện thoại");
                    GotoPage(Activity.FindFriendByPhoneNumber);

                    var success = false;
                    while (!success)
                    {
                        if (phonelist.Count == 0)
                        {
                            return;
                        }

                        var phoneNumber = phonelist.Pop();
                        if (DbContext.LogRequestAddFriendSet.FirstOrDefault(x => x.PhoneNumber == phoneNumber && x.Account == Settings.User.Username) != null)
                        {
                            ZaloHelper.Output($"Bỏ qua. Số điện thoại {phoneNumber} đã có tên trong danh sách");

                            continue;
                        }

                        Thread.Sleep(800);
                        ZaloHelper.Output($"Đang xóa ô nhập chữ");
                        DeleteWordInFocusedTextField();
                        ZaloHelper.Output($"Đang nhập số điện thoại :{phoneNumber}");

                        SendText(phoneNumber);
                        SendKey(KeyCode.AkeycodeEnter);
                        Thread.Sleep(4000);

                        //check is not available
                        ZaloHelper.Output("!Kiểm tra thông báo");

                        if (ZaloImageProcessing.HasFindButton(CaptureScreenNow(), Screen))
                        {
                            ZaloHelper.Output("!Lỗi, Số đt chưa có tài khoản ZALO");
                        }
                        else
                        {
                            var profile = GrabProfileInfo();

                            profile.PhoneNumber = phoneNumber;
                            string reason;
                            if (!filter.IsValidProfile(profile, out reason))
                            {
                                ZaloHelper.Output("Bỏ qua bạn này, lý do: " + reason);
                                TouchAtIconTopLeft();
                                continue;
                            }
                            else
                            {
                                var addSuccess = AddFriendViaIconButton(profile, filter);
                                ZaloHelper.Output($"!Thêm bạn bằng số đt: {phoneNumber} thành công.");
                                if (addSuccess)
                                {
                                    countSuccess++;
                                    success = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex);
            }
            finally
            {
                ZaloHelper.SendCompletedTaskSignal();
            }
        }
        public void SearchFriendInContactList()
        {
            try
            {
                GotoPage(Activity.MainTab);

                Delay(1000);

                TouchAt(Screen.HomeScreenFriendTab);

                Delay(1000);
                ZaloHelper.Output("Đang phân tích dữ liệu");

                var fileCapture = CaptureScreenNow();
                var friends     = ZaloImageProcessing.GetFriendProfileList(fileCapture, Screen);

                ZaloHelper.OutputLine();
                friends.ToList().ForEach(x => ZaloHelper.Output(x.Name));
                ZaloHelper.OutputLine();

                var stack         = new Stack <FriendPositionMessage>(friends.Where(x => !string.IsNullOrWhiteSpace(x.Name)).OrderByDescending(x => x.Point.Y));
                var profilesPage1 = stack.Select(x => x.Name).ToArray();
                while (true)
                {
                    while (stack.Count == 0)
                    {
                        ScrollList(9);

                        ZaloHelper.Output("Đang phân tích dữ liệu màn hình");
                        fileCapture = CaptureScreenNow();
                        friends     = ZaloImageProcessing.GetFriendProfileList(fileCapture, Screen);

                        ZaloHelper.OutputLine();
                        friends.ToList().ForEach(x => ZaloHelper.Output(x.Name));
                        ZaloHelper.OutputLine();

                        stack = new Stack <FriendPositionMessage>(friends.OrderByDescending(x => x.Point.Y));
                        var profilesPage2 = stack.Select(x => x.Name).ToArray();
                        if (!profilesPage2.Except(profilesPage1).Any())
                        {
                            ZaloHelper.Output("Hết danh sách");

                            return;
                        }

                        profilesPage1 = profilesPage2;
                    }

                    Delay(2000);

                    var rowFriend = stack.Pop();

                    if (DbContext.ProfileSet.FirstOrDefault(x => x.Name == rowFriend.Name && x.Account == Settings.User.Username) != null)
                    {
                        ZaloHelper.Output($"Thu nhập thông tin bạn {rowFriend.Name} rồi");

                        continue;
                    }

                    if (!Screen.InfoRect.Contains(rowFriend.Point))
                    {
                        continue;
                    }

                    TouchAt(rowFriend.Point);
                    Delay(2000);

                    //GrabInfomation
                    TouchAtIconTopRight();
                    Delay(1000);
                    TouchAt(Screen.ChatScreenProfileAvartar);
                    Delay(2000);

                    var profile = new ProfileMessage()
                    {
                        Name = rowFriend.Name
                    };

                    var infoGrab = GrabProfileInfo(profile.Name);

                    ZaloHelper.CopyProfile(ref profile, infoGrab);

                    TouchAtIconTopLeft(); //Back to chat screen
                    Delay(400);
                    TouchAtIconTopLeft(); //Close sidebar
                    Delay(400);
                    TouchAtIconTopLeft(); //Goback friend list
                    Delay(400);
                    DbContext.AddProfile(profile, Settings.User.Username, true);
                    Delay(400);
                }
            }
            catch (Exception ex) { _log.Error(ex); }
            finally
            {
                ZaloHelper.SendCompletedTaskSignal();
            }
        }
        private bool Chat(ChatRequest profile, Filter filter)
        {
            TouchAt(Screen.ChatScreenTextField);
            Delay(300);

            var messages = ZaloHelper.GetZalomessages(profile.Profile, filter);

            foreach (var message in messages)
            {
                DeleteWordInFocusedTextField(20);

                if (message.Type == ZaloMessageType.Text)
                {
                    SendText(message.Value);
                    Delay(500);

                    if (!IsDebug)
                    {
                        //TouchAt(Screen.ChatScreenSendButton);
                        SendKey(KeyCode.AkeycodeEnter);
                    }

                    ZaloHelper.Output($"Gửi tin nhắn chữ '{message.Value}' tới bạn '{profile.Profile.Name}' thành công");
                }
                else
                {
                    UpImageChat(new System.IO.FileInfo(message.Value));

                    Delay(500);
                    TouchAt(Screen.ChatScreenOpenMoreWindowButton);

                    Delay(500);
                    TouchAt(Screen.ChatScreenAddImageButton);

                    Delay(500);
                    TouchAt(Screen.UploadAlbumDCimFolter);

                    Delay(500);
                    TouchAt(Screen.UploadAlbumFirstImageCheckBox);

                    if (!Settings.IsDebug)
                    {
                        Delay(500);
                        TouchAt(Screen.UploadAlbumSendButton);
                    }
                    else
                    {
                        Delay(500);
                        TouchAtIconTopLeft();

                        Delay(500);
                        TouchAtIconTopLeft();
                    }
                    ZaloHelper.Output($"Gửi tin nhắn hình '{message.Value}' tới bạn '{profile.Profile.Name}' thành công");

                    Delay(900);
                    TouchAt(Screen.ChatScreenCloseMoreWindowButton);

                    Delay(100);
                }

                Delay(1000);

                switch (profile.Objective)
                {
                case ChatObjective.FriendInContactList:
                    DbContext.AddLogMessageSentToFriend(profile.Profile, Settings.User.Username, message.Value);

                    break;

                case ChatObjective.StrangerByPhone:
                case ChatObjective.StrangerNearBy:
                    DbContext.AddLogMessageSentToStranger(profile.Profile, Settings.User.Username, message.Value);

                    break;
                }
            }

            return(true);
        }
        private void ChatFriendNearBy(int maxFriendToday, Filter filter)
        {
            ZaloHelper.Output($"!bắt đầu gửi tin cho bạn gần đây. Số bạn yêu cầu tối đa trong ngày hôm nay là {maxFriendToday}");
            var countSuccess = 0;

            string[] profilesPage1 = null;
            string[] profilesPage2 = null;
            ZaloHelper.Output("!đang tìm thông tin các bạn");
            var friendNotAdded = (GetPositionAccountNotSent(x => profilesPage1 = x)).OrderByDescending(x => x.Point.Y);
            var points         = new Stack <FriendPositionMessage>(friendNotAdded);

            profilesPage1.ToList().ForEach(x => ZaloHelper.Output($"!tìm thấy bạn trên màn hình: {x}"));
            ZaloHelper.Output("!--------------------");
            friendNotAdded.ToList().ForEach(x => ZaloHelper.Output($"!các bạn chưa được gửi lời mời: {x.Name}"));
            while (countSuccess < maxFriendToday)
            {
                while (points.Count == 0)
                {
                    ZaloHelper.Output("!đang cuộn danh sách bạn");
                    ScrollList(9);

                    ZaloHelper.Output("!đang tìm thông tin các bạn");

                    friendNotAdded = GetPositionAccountNotSent(x => profilesPage2 = x).OrderByDescending(x => x.Point.Y);
                    points         = new Stack <FriendPositionMessage>(friendNotAdded);
                    profilesPage2.ToList().ForEach(x => ZaloHelper.Output($"!tìm thấy bạn trên màn hình: {x}"));

                    ZaloHelper.OutputLine();
                    friendNotAdded.ToList().ForEach(x => ZaloHelper.Output($"!bạn chưa được gửi tin nhắn: {x}"));
                    ZaloHelper.OutputLine();

                    if (!profilesPage2.Except(profilesPage1).Any())
                    {
                        ZaloHelper.Output("!hết bạn trong danh sách.");

                        return;
                    }

                    profilesPage1 = profilesPage2;
                }

                Delay(2000);

                var pointRowFriend = points.Pop();

                var request = new ChatRequest
                {
                    Profile = new ProfileMessage
                    {
                        Name     = pointRowFriend.Name,
                        Location = filter.Locations
                    },
                    Objective = ChatObjective.StrangerNearBy
                };

                if (Screen.InfoRect.Contains(pointRowFriend.Point))
                {
                    TouchAt(pointRowFriend.Point);
                    Delay(2000);//wait to navigate chat screen

                    var infoGrab = GrabProfileInfo(pointRowFriend.Name);
                    var profile  = request.Profile;
                    ZaloHelper.CopyProfile(ref profile, infoGrab);

                    string reason;
                    if (!filter.IsValidProfile(request.Profile, out reason))
                    {
                        ZaloHelper.Output("Bỏ qua bạn này, lý do: " + reason);
                        TouchAt(Screen.IconTopLeft);
                        Delay(300);
                    }
                    else
                    {
                        TouchAt(Screen.IconBottomLeft);
                        Delay(800);

                        if (Chat(request, filter))
                        {
                            DbContext.AddProfile(request.Profile, Settings.User.Username);
                            countSuccess++;
                            ZaloHelper.Output($"!gửi tin nhắn tới: {request.Profile.Name} thành công. Số bạn đã gửi thành công trong phiên này là: {countSuccess}");

                            TouchAtIconTopLeft(); //Go Back TO PROFILE

                            TouchAtIconTopLeft(); // GO BACK TO FRIENDLIST
                        }
                    }
                }
            }
        }
        public void SendMessageToFriendInContactList(Filter filter)
        {
            try
            {
                var countSuccess = 0;

                GotoPage(Activity.MainTab);

                Delay(1000);

                TouchAt(Screen.HomeScreenFriendTab);

                if (!string.IsNullOrWhiteSpace(filter.IncludedPeopleNames))
                {
                    SendMessageToFriendWithNames(filter);

                    return;
                }

                Delay(1000);
                ZaloHelper.Output("Đang phân tích dữ liệu");

                var fileCapture = CaptureScreenNow();
                var friends     = ZaloImageProcessing.GetFriendProfileList(fileCapture, Screen);

                ZaloHelper.OutputLine();
                friends.ToList().ForEach(x => ZaloHelper.Output(x.Name));
                ZaloHelper.OutputLine();

                var stack         = new Stack <FriendPositionMessage>(friends.Where(x => !string.IsNullOrWhiteSpace(x.Name)).OrderByDescending(x => x.Point.Y));
                var profilesPage1 = stack.Select(x => x.Name).ToArray();

                while (countSuccess <= filter.NumberOfAction)
                {
                    while (stack.Count == 0)
                    {
                        ScrollList(9);

                        ZaloHelper.Output("Đang phân tích dữ liệu màn hình");
                        fileCapture = CaptureScreenNow();
                        friends     = ZaloImageProcessing.GetFriendProfileList(fileCapture, Screen);

                        ZaloHelper.OutputLine();
                        friends.ToList().ForEach(x => ZaloHelper.Output(x.Name));
                        ZaloHelper.OutputLine();

                        stack = new Stack <FriendPositionMessage>(friends.OrderByDescending(x => x.Point.Y));
                        var profilesPage2 = stack.Select(x => x.Name).ToArray();
                        if (!profilesPage2.Except(profilesPage1).Any())
                        {
                            ZaloHelper.Output("Hết danh sách");
                            return;
                        }

                        profilesPage1 = profilesPage2;
                    }

                    Delay(2000);

                    var rowFriend = stack.Pop();

                    if (DbContext.LogMessageSentToFriendSet.FirstOrDefault(x => x.Name == rowFriend.Name && x.Account == Settings.User.Username) != null)
                    {
                        ZaloHelper.Output($"Đã gửi tin cho bạn {rowFriend.Name} rồi");

                        continue;
                    }

                    var profile = DbContext.ProfileSet.FirstOrDefault(x => x.Name == rowFriend.Name);
                    var request = new ChatRequest
                    {
                        Profile = new ProfileMessage
                        {
                            Name        = rowFriend.Name,
                            Location    = profile?.Location,
                            PhoneNumber = profile?.PhoneNumber
                        },
                        Objective = ChatObjective.FriendInContactList
                    };

                    if (Screen.InfoRect.Contains(rowFriend.Point))
                    {
                        TouchAt(rowFriend.Point);
                        Delay(2000);

                        NavigateToProfileScreenFromChatScreenToGetInfoThenGoBack(request);

                        string reason;
                        if (!filter.IsValidProfile(request.Profile, out reason))
                        {
                            ZaloHelper.Output("Bỏ qua bạn này, lý do: " + reason);
                            TouchAtIconTopLeft(); //Touch to close side bar
                            Delay(400);
                        }
                        else
                        {
                            if (Chat(request, filter))
                            {
                                countSuccess++;
                                if (profile == null)
                                {
                                    DbContext.AddProfile(request.Profile, Settings.User.Username);
                                }
                            }

                            TouchAtIconTopLeft();//GO BACK PROFILE
                        }
                    }
                }
            }
            catch (Exception ex) { _log.Error(ex); }
            finally
            {
                ZaloHelper.SendCompletedTaskSignal();
            }
        }
        public void SendMessageByPhoneNumber(Filter filter)
        {
            try
            {
                var canSentToday   = Settings.MaxMessageStrangerPerDay - DbContext.GetMessageToStragerCount(Settings.User.Username);
                var numberOfAction = filter.NumberOfAction > canSentToday ? canSentToday : filter.NumberOfAction;
                if (numberOfAction <= 0)
                {
                    ZaloHelper.Output("đã gửi hết số bạn trong ngày rồi");

                    return;
                }

                var phonelist = filter.IncludePhoneNumbers.Split(";,|".ToArray()).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();

                var countSuccess = 0;
                var stack        = new Stack <string>(phonelist);

                while (countSuccess < numberOfAction)
                {
                    GotoPage(Activity.FindFriendByPhoneNumber);
                    var success = false;

                    while (!success)
                    {
                        if (stack.Count == 0)
                        {
                            return;
                        }
                        var phoneNumber = stack.Pop();
                        ZaloHelper.Output($"Tiến hành gửi tin qua số đt {phoneNumber}");
                        if (DbContext.LogMessageSentToStrangerSet.FirstOrDefault(x => x.PhoneNumber == phoneNumber && x.Account == Settings.User.Username) != null)
                        {
                            ZaloHelper.Output($"Đã gửi tin cho số đt '{phoneNumber}' rồi");

                            continue;
                        }

                        Thread.Sleep(100);

                        DeleteWordInFocusedTextField();
                        SendText(phoneNumber);

                        SendKey(KeyCode.AkeycodeEnter);
                        Thread.Sleep(4000);

                        ZaloHelper.Output("!đang kiểm tra số điện thoại khả dụng");
                        if (ZaloImageProcessing.HasFindButton(CaptureScreenNow(), Screen))
                        {
                            ZaloHelper.Output("!Lỗi, số đt không có");
                        }
                        else
                        {
                            var profile = GrabProfileInfo();
                            profile.PhoneNumber = phoneNumber;

                            string reason;
                            if (!filter.IsValidProfile(profile, out reason))
                            {
                                ZaloHelper.Output("Bỏ qua bạn này, lý do: " + reason);

                                TouchAtIconTopLeft(); //Go back to phone Entry
                                Delay(400);
                            }
                            else
                            {
                                var request = new ChatRequest {
                                    Profile = profile, Objective = ChatObjective.StrangerByPhone
                                };

                                TouchAt(Screen.IconBottomLeft);
                                Delay(800);

                                if (Chat(request, filter))
                                {
                                    countSuccess++;
                                    DbContext.AddProfile(request.Profile, Settings.User.Username);

                                    success = true;
                                }

                                TouchAtIconTopLeft();//GO BACK FRIENDLIST
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex);
            }
            finally
            {
                ZaloHelper.SendCompletedTaskSignal();
            }
        }
示例#16
0
        private static void Main(string[] args)
        {
            if (args[1] == "last-filter")
            {
                var directory = Directory.GetDirectories($@".\{WorkingFolderPath}\").OrderByDescending(Directory.GetCreationTime).First();

                args[1] = directory.Split("\\".ToArray()).Last();
            }

            Console.OutputEncoding = System.Text.Encoding.UTF8;

            var sessionId = args[1];
            SessionId = sessionId;
            ZaloHelper.Output($"Request:{args[0]} .SessionId:{sessionId}.");

            var settings = JsonConvert.DeserializeObject<Settings>(File.ReadAllText($@".\{WorkingFolderPath}\{sessionId}\setting.json"));
            Func<Filter> getFilter = () => JsonConvert.DeserializeObject<Filter>(File.ReadAllText($@".\{WorkingFolderPath}\{sessionId}\filter.json"));

            var zaloImageProcessing = new ZaloImageProcessing();
            var databaseContext = new DatabaseContext();
            var zaloAdbRequest = new ZaloAdbRequest(settings);
            if (!zaloAdbRequest.StartAvd(settings.DeviceNumber))
            {
                ZaloHelper.Output("Không tìm thấy thiết bị android.");
                return;
            }

            if (!settings.IgnoreLogin)
            {
                var zaloLoginService = new ZaloLoginService(settings, databaseContext, zaloImageProcessing, zaloAdbRequest);
                zaloLoginService.Login(settings.User);
            }
            switch (args[0])
            {
                case RunnerConstants.addfriendnearby:
                case "ket-ban-gan-day":

                    var zaloAddFriendService = new ZaloAddFriendService(settings, databaseContext, zaloImageProcessing, zaloAdbRequest);
                    zaloAddFriendService.AddFriendNearBy(getFilter());

                    break;

                case RunnerConstants.addfriendbyphone:
                case "ket-ban-qua-dien-thoai":
                    zaloAddFriendService = new ZaloAddFriendService(settings, databaseContext, zaloImageProcessing, zaloAdbRequest);
                    zaloAddFriendService.AddFriendByPhone(getFilter());

                    break;

                case RunnerConstants.sendmessagenearby:
                case "gui-tin-nhan-gan-day":
                    var zaloMessageToFriendService = new ZaloMessageService(settings, databaseContext, zaloImageProcessing, zaloAdbRequest);
                    zaloMessageToFriendService.SendMessageNearBy(getFilter());

                    break;

                case RunnerConstants.sendmessagebyphonenumber:
                case "gui-tin-nhan-qua-so-dien-thoai":
                    zaloMessageToFriendService = new ZaloMessageService(settings, databaseContext, zaloImageProcessing, zaloAdbRequest);
                    zaloMessageToFriendService.SendMessageByPhoneNumber(getFilter());

                    break;

                case RunnerConstants.sendmessagetofriendsincontacts:
                case "gui-tin-nhan-trong-danh-ba":
                    zaloMessageToFriendService = new ZaloMessageService(settings, databaseContext, zaloImageProcessing, zaloAdbRequest);
                    zaloMessageToFriendService.SendMessageToFriendInContactList(getFilter());

                    break;

                case RunnerConstants.searchallfriendsincontacts:
                case "tim-tat-ca-cac-ban-trong-danh-ba":
                    var zaloSearchFriendService = new ZaloSearchFriendService(settings, databaseContext, zaloImageProcessing, zaloAdbRequest);
                    zaloSearchFriendService.SearchFriendInContactList();

                    break;
            }
        }