Exemplo n.º 1
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 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();
            }
        }