Logo Zephyrnet

Hướng dẫn đầy đủ về Tự động hóa Whatsapp bằng Python

Ngày:

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Giới thiệu chung

  • Giới thiệu
  • Tự động hóa Whatsapp sử dụng python là gì?
  • Các tính năng của nó là gì?
  • Hãy code!
  • Lỗi và ngoại lệ
  • Xử lý lỗi
  • Chúng ta có thể làm theo cách khác không?
  • Kết luận

 Giới thiệu

Hãy tưởng tượng, bạn bật máy tính của mình, một thông báo "Chào buổi sáng!" được tự động gửi đến liên hệ WhatsApp của bạn mà không cần phải làm bất cứ điều gì. Và đây là những gì chúng tôi sẽ tạo và với nhiều tính năng khác.

Tự động hóa Whatsapp sử dụng python là gì?

Nó là một tiện ích và một phần mềm thú vị sẽ tiết kiệm thời gian của bạn và sẽ khiến bạn trở thành một người đúng giờ trong quan điểm của người khác. Về cơ bản, nó sẽ tự động hóa web WhatsApp và gửi tin nhắn.

Các tính năng của nó là gì?

Vì vậy, chúng ta hãy hiểu nó ngược lại, các tính năng của nó là gì và hiểu đầy đủ về nó

Bạn đã bật máy tính của mình,

  • Chương trình này sẽ tự động chạy
  • Chờ trong 2 phút để máy tính không tải (vì nhiều chương trình chạy đồng thời khi máy tính khởi động như chương trình chống vi-rút và nhiều chương trình khác làm chậm máy tính và chương trình này sẽ đợi để không tải máy tính)
  • Kiểm tra tệp (cơ sở dữ liệu của chương trình)
  • Nếu nó không tồn tại,
  • nó sẽ tạo tệp và sẽ gửi tin nhắn và sau đó cập nhật tệp.
  • nếu nó tồn tại,
  • Sau đó, sẽ kiểm tra xem ngày cuối cùng (cơ sở dữ liệu sẽ có ngày gửi tin nhắn) là năm nào khác và nếu có, nó sẽ xóa tất cả nội dung của tệp (để giải phóng dung lượng bị chiếm dụng) và sẽ gửi và nó sẽ lại cập nhật ngày hiện tại vào tệp.
  • Và nếu năm của ngày cuối cùng giống với năm hiện tại, thì ngày đó sẽ trực tiếp di chuyển về phía trước.
  • Nếu ngày cuối cùng trong tệp không phải là ngày hiện tại, thì nó sẽ gửi thông báo và cập nhật cơ sở dữ liệu.
  • Và nếu ngày cuối cùng trong tệp là ngày hiện tại, thì nó sẽ chỉ kiểm tra ngày của năm ngoái và sẽ đóng chương trình.
  • Nếu có sự cố trong việc gửi tin nhắn, nó sẽ không cập nhật cơ sở dữ liệu và thông báo cho người dùng rằng có sự cố khi gửi tin nhắn.
tự động hóa ứng dụng whats
Logo Whatsapp

Hãy code!

Như chúng ta đã biết tất cả những điều mà chương trình của chúng ta sẽ làm. Vì vậy, bây giờ chúng ta sẽ bắt đầu tạo chương trình của mình.

Trước hết, chúng tôi sẽ cần tải xuống các mô-đun / thư viện cần thiết để làm việc với chương trình

Và các mô-đun là “thời gian”, “ngày giờ”, “selen”, “hệ điều hành”, “plyer”

Trong số tất cả các mô-đun này, chỉ cần tải xuống mô-đun Selenium và mô-đun plyer và các mô-đun còn lại được cài đặt sẵn với python

Vì vậy, bằng cách sử dụng lệnh này, bạn có thể tải xuống và cài đặt tất cả các mô-đun này.

pip cài đặt selen plyer

Bây giờ chúng tôi đã cài đặt các mô-đun và bây giờ chúng tôi có thể nhập chúng vào chương trình của mình và sử dụng nó. Và dưới đây chúng ta sẽ bắt đầu viết mã của mình.

nhập thời gian thời gian.

Vì chúng tôi sẽ làm cho chương trình của chúng tôi tự động khởi động khi bắt đầu máy tính, chúng tôi sẽ đặt chương trình của chúng tôi ở chế độ ngủ trong 2 phút để không tải trên máy tính của chúng tôi (Như đã giải thích trong phần tính năng của nó là gì ). Trên dòng đầu tiên của chương trình, chúng tôi đã nhập mô-đun thời gian, sau đó ở dòng thứ hai, chúng tôi đã đặt chương trình của mình ở chế độ ngủ. Và từ dòng này sang dòng khác, chúng tôi sẽ nhập tất cả các mô-đun như trong dòng thứ ba, mô-đun datetime, lớp trình điều khiển web dòng thứ tư từ selen và trong các tùy chọn dòng tiếp theo từ selen và một lần nữa trong dòng tiếp theo Các khóa từ selen và sau đó, chúng tôi đã nhập mô-đun hệ điều hành và tại cuối cùng, chúng tôi đã nhập thông báo từ plyer (Giống như hẹn giờ vô hạn sử dụng chương trình python ).

Dưới là tại sao chúng tôi đang nhập tất cả các mô-đun này

  1. thời gian - chủ yếu để làm cho chương trình của chúng tôi ngủ
  2. datetime - Để làm việc với ngày tháng năm (Để cập nhật cơ sở dữ liệu)
  3. webdriver - Nó được sử dụng để làm việc với trình duyệt và trang web
  4. Tùy chọn - Nó được sử dụng để thêm các đối số vào trình duyệt như tiện ích mở rộng nào sẽ sử dụng và tài khoản người dùng nào sẽ sử dụng và tối đa hóa cửa sổ và hơn thế nữa.
  5. Phím - Nó được sử dụng để làm việc với các phím của bàn phím hoặc phím nóng như Ctrl + A và Ctrl + C hoặc Enter.
  6. os - Thoát khỏi chương trình
  7. thông báo - Đối với thông báo (Nếu xảy ra lỗi khi gửi tin nhắn, như được giải thích trong phần tính năng của nó là gì )

Lưu ý: BẠN CÓ THỂ ĐIỀU CHỈNH THỜI GIAN NGỦ TÙY THUỘC VÀO SỰ TIỆN LỢI CỦA MÌNH. NẾU MÁY TÍNH CỦA BẠN LUÔN ĐƯỢC KẾT NỐI VỚI WIFI HOẶC ETHERNET, THÌ BẠN CÓ THỂ QUYẾT ĐỊNH THỜI GIAN NGỦ HOẶC NẾU PC CỦA BẠN NHANH CHÓNG ĐỦ, THÌ BẠN CŨNG CÓ THỂ QUYẾT ĐỊNH THỜI GIAN NGỦ NHƯ NÓ KHÔNG PHỤ THUỘC VÀO PC.

Bây giờ, hàm messenger () chính bắt đầu ở đây

def messenger (): try: url = "https://web.whatsapp.com/send?phone=+91xxxxxxxxxx" message_content = "Chào buổi sáng!" path = r "" options = webdriver.ChromeOptions () options.add_argument ("user-data-dir =") driver = webdriver.Chrome (execute_path = path, options = options) driver.minimize_window () driver.get (url) time.sleep (20) type_it = driver.find_elements_by_class_name ('_ 13NKt') time.sleep (20) try: type_it [1] .send_keys (message_content + Keys.ENTER) ngoại trừ IndexError as e: type_it = driver.find_elements_by_class_name ('_ 13NKt ') type_it [1] .send_keys (message_content + Keys.ENTER) print (e) time.sleep (10) driver.quit () ngoại trừ Exception as e: notification.notify (title = "Tin nhắn Whatsapp chưa được gửi", message = "Lỗi khi gửi!", App_icon = r "", app_name = "Whatsapp Message error", toast = True,) print (e) os._exit (0)

Trong dòng đầu tiên của đoạn mã trên, chúng ta đã xác định hàm messenger (). Vì trong quá trình tự động hóa, có thể có một số lỗi (như sự cố internet hoặc bất kỳ vấn đề nào khác). Vì vậy, chúng tôi sẽ sử dụng khối try-trừ để làm cho chương trình của chúng tôi không bị lỗi.

Do đó, chúng ta phải sử dụng phương pháp thử ở dòng thứ hai. Trong dòng tiếp theo, chúng tôi đã tạo url biến sẽ chứa url của web Whatsapp ( Url sẽ chứa số điện thoại của người mà bạn muốn gửi tin nhắn ). Và trong dòng tiếp theo, chúng ta có biến message_content sẽ chứa thông báo sẽ được gửi đi. Dòng tiếp theo chứa biến đường dẫn sẽ chứa đường dẫn của trình điều khiển chrome (Lưu ý: 'r' (r được sử dụng cho chuỗi thô) phía sau chuỗi được sử dụng để không thoát khỏi các ký tự thoát, chẳng hạn như '/ n' được sử dụng để lấy một dòng mới và nếu bạn muốn in nó, thì nó sẽ không được in, chỉ một dòng mới sẽ được in. Để in nó, chúng ta có thể sử dụng '// n' hoặc r '/ n', Cả hai sẽ in các ký tự '/ n'. Và trong một đường dẫn như 'C: / người dùng ',' / 'có thể gây ra bất kỳ vấn đề nào, vì vậy chúng tôi đang sử dụng nó cho chuỗi thô). Tìm hiểu thêm về đường dẫn trong phần xử lý. 

Mẹo: Bạn không thể sử dụng WhatsApp Web mà không quét mã QR. Bạn phải quét mã QR tối thiểu 1 lần và sau đó nếu bạn đã chọn giữ cho tôi hộp thư đến đã ký, bạn có thể truy cập trang web trực tiếp mà không cần quét lại QR. Và nếu bạn đang sử dụng một hồ sơ khác của trình duyệt chưa đăng nhập WhatsApp, thì bạn phải quét lại QR. Nhưng những gì bạn có thể làm là chỉ cần tham gia chế độ beta của WhatsApp và bạn sẽ không gặp vấn đề gì khi gửi tin nhắn. Thêm về phần xử lý lỗi này.

Trong dòng tiếp theo, chúng ta có các 'tùy chọn' biến sẽ chứa ChromeOptions (). Nó chỉ được sử dụng để làm việc với các cấu hình, tiện ích mở rộng, cookie hoặc proxy và những thứ tương tự trên trình duyệt. Trong dòng tiếp theo, chúng tôi đã thêm đối số chứa hồ sơ mà WhatsApp được đăng nhập. Trong dòng tiếp theo, biến trình điều khiển được sử dụng để khởi chạy Chrome với trình điều khiển sắc độ như được chỉ định ở trên và các tùy chọn cho hồ sơ làm đối số .

Trong dòng tiếp theo, chúng tôi đã thu nhỏ màn hình để chỉ làm việc ở chế độ nền.
Tiếp theo, chúng ta có một biến trình điều khiển sẽ lấy url trong trình duyệt. Bây giờ chúng ta sẽ đặt chương trình của mình ở chế độ ngủ trong 20 giây để không gặp bất kỳ lỗi nào khi truy cập các phần tử của trang web (Vì trang web có thể mất thời gian để tải và các phần tử của trang web có thể không được tải nhanh chóng). Trong dòng tiếp theo, chúng ta có biến type_it, sẽ chứa danh sách các phần tử của tên lớp đã cho của phần tử. LƯU Ý: CÁC LỚP CÓ THỂ THAY ĐỔI KHI BẠN ĐỌC BÀI NÀY, VÌ VẬY, HÃY TÌM TÊN LỚP CỦA BẠN CHO HỘP LOẠI SAU KHI SỬ DỤNG NÓ. Một lần nữa, chúng tôi sẽ đặt chương trình ở chế độ ngủ trong 20 giây. Sau đó, chúng ta sẽ sử dụng phần tử thứ hai từ danh sách để gửi tin nhắn và Keys.ENTER sẽ gửi tin nhắn bằng Keys mà chúng ta đã nhập trước đó. Chúng tôi sẽ sử dụng try và ngoại trừ vì đôi khi nó không thể truy cập phần tử và sẽ ném lỗi chỉ mục. Và nếu nó xảy ra, chúng tôi sẽ thử lại và sau đó gửi nó. Sau đó, chúng tôi sẽ đặt chương trình của mình ở chế độ ngủ, vì nó được gửi từ chương trình của chúng tôi nhưng do sử dụng phương pháp thoát ngay lập tức để thoát trình điều khiển, đôi khi nó không gửi nó.

Và nếu có bất kỳ lỗi nào xảy ra trong quá trình gửi, thì nó sẽ chỉ gửi cho người dùng một thông báo. Vì vậy, chúng ta phải sử dụng chức năng thông báo của thông báo đã nhập từ mô-đun plyer. Như chúng tôi đã thực hiện trong bộ đếm thời gian vô hạn bằng python, chúng tôi sẽ gửi thông báo trên màn hình cho người dùng. Để biết thêm về những gì được thực hiện ở đây, chỉ cần tham khảo một bài viết khác là hẹn giờ vô hạn sử dụng python. Cuối cùng của lỗi xảy ra, chúng tôi sẽ chỉ thoát khỏi chương trình vì chúng tôi không cần phải thực hiện bất kỳ công việc nào bây giờ. Vì vậy, chúng tôi sẽ sử dụng hàm _exit (0) của mô-đun os với '0' để nói rằng mọi thứ trong chương trình đều ổn trong hệ thống.

Bây giờ chúng ta phải làm việc chỉ trên phần cơ sở dữ liệu.

today = str (datetime.date.today ()) today_2 = f "{today}" content = bytes (today_2, 'utf-8') year_str = str (datetime.datetime.now (). year) year_edit = byte ( year_str, 'utf-8'). decode ('utf-8') date_str = str (datetime.datetime.now (). day) date_edit = byte (date_str, 'utf-8'). decode ('utf-8 ') chỉnh sửa = {"1": "01", "2": "02", "2": "03", "4": "04", "5": "05", "6": " 06 "," 7 ":" 07 "," 8 ":" 08 "," 9 ":" 09 ",} print (date_edit) try: file = open (" database.txt "," x ") messenger ( ) file.write (today_2) file.close () ngoại trừ Exception as e: file = open ("database.txt", "a + b") try: try: file.seek (-11,2) # seek sẽ không làm việc ở chế độ phủ định trong chế độ văn bản, chỉ ở chế độ byte ngoại trừ OSError as e: print (e) messenger () file.write (content) file.close () os._exit (0) year = file.read (10) .decode ('utf-8') file.seek (-11,2) date = file.read (10) .decode ('utf-8') if year_edit! = year [: 4]: file.close () file = open ("database.txt", "wb") file.close () file = open ("database.txt", "a + b") messenger () file.write (content) file.close () cho x in edit.keys (): nếux == date_edit: date_edit = edit.get (x) break if date_edit! = date [8:14]: messenger () file.write (content) file.close () os._exit (0) ngoại trừ Exception as e: in (e)

Bây giờ điều chính là chúng ta sẽ sử dụng mô-đun datetime để lấy ngày, năm và tất cả. Vì đối tượng datetime thuộc loại 'datetime' không phải 'str' (chuỗi trong python), sẽ có lỗi khi ghi điều này vào tệp. Vì vậy, chúng tôi phải chuyển đổi nó thành 'str' và chúng tôi cũng phải chuyển tất cả những thứ này thành byte để đọc và ghi trong tệp ở chế độ byte. Nhưng một trong những lỗi của mô-đun datetime trong chương trình của chúng tôi có thể là ngày, chẳng hạn như ngày, 2022-01-01 sẽ là 2022-1-1 theo mỗi mô-đun datetime. Bây giờ nếu chúng ta kiểm tra ngày cuối cùng trong cơ sở dữ liệu của mình để kiểm tra xem tin nhắn có được gửi vào ngày đó hay không, chúng ta sẽ nhận được câu trả lời sai vì cả hai đều khác nhau. Vì vậy, chúng tôi sẽ sửa lỗi này bằng cách tạo từ điển các chữ số (chuỗi kỹ thuật) thành từ điển của chữ số được yêu cầu (Chuỗi lại).

Như đã nói trong Phần tính năng của nó là gì?
Nếu không có tệp cơ sở dữ liệu trong thư mục đó, nó sẽ trực tiếp tạo tệp và sẽ gọi hàm messenger () và sẽ gửi tin nhắn và sau đó cập nhật ngày hiện tại vào cơ sở dữ liệu. Và sau đó đóng tệp và chương trình sẽ kết thúc.
LƯU Ý: BẠN PHẢI ĐÓNG TỆP SAU KHI MỞ NÓ VÌ CÓ THỂ KHÔNG LƯU FILE VÀ CÔNG VIỆC CỦA BẠN SẼ KHÔNG ĐƯỢC THỰC HIỆN.

Và nếu có lỗi như đã có cơ sở dữ liệu trong thư mục, thì nó sẽ nhập trực tiếp vào khối ngoại trừ và sẽ mở tệp ở chế độ đọc + ghi theo byte như “a + b”.

Bây giờ nếu tệp trống, thì việc tìm kiếm con trỏ tệp ở bất kỳ đâu sẽ xuất hiện OSError và hàm messenger () sẽ được gọi và nó sẽ cập nhật cơ sở dữ liệu với nội dung theo byte như chúng ta đã mở nó dưới dạng 'b' hoặc byte. Và sau đó tệp sẽ được đóng và chương trình sẽ bị thoát.
Và nếu tệp có nội dung, thì nó sẽ đọc năm và giải mã nó thành các mã hóa thông thường là 'utf-8' và sau đó chúng tôi sẽ tìm kiếm con trỏ tệp đến một vị trí mà từ đó nó có thể đọc lại ngày cụ thể trong tệp. giải mã nó.

Đầu tiên, nó sẽ kiểm tra xem năm trong tệp có phải là năm hiện tại hay không, sau đó nó sẽ đóng tệp được mở ở chế độ 'nối và đọc ở chế độ byte' và sau đó mở ở chế độ ghi và byte (nó sẽ xóa tất cả nội dung của tập tin ). Sau đó, nó sẽ chỉ cần đóng tệp vì tất cả nội dung đã bị xóa khỏi tệp và sau đó chúng tôi sẽ mở lại tệp ở chế độ 'a + b' và gọi hàm messenger () và sau đó cập nhật tệp với ngày hiện tại và sau đó đóng nó. . Và chương trình đã đóng lại ngay bây giờ.

Lỗi mà chúng tôi đã giải quyết ở trên sẽ được sử dụng, sử dụng vòng lặp for, nó sẽ thay đổi nội dung của biến date_edit bằng cách sử dụng các khóa từ điển.

Cuối cùng, nó sẽ kiểm tra xem ngày trên tệp có giống với ngày hiện tại hay không, nó sẽ chỉ cần gọi hàm messenger () và cập nhật tệp, và sẽ đóng nó.
Và nếu có lỗi xảy ra trong quá trình chạy chương trình, nó sẽ đơn giản xử lý nó và sẽ in ra sự cố.

Lỗi và ngoại lệ

Bạn sẽ gặp lỗi khi WhatsApp không tải hoặc sẽ yêu cầu QR.
Hoặc trình xử lý chromedriver của bạn là phiên bản khác của phiên bản chrome của bạn.

Xử lý ngoại lệ

Bạn có thể tham gia Whatsapp beta để quản lý lỗi QR. Để tham gia chế độ beta trên WhatsApp, bạn có thể đọc điều này bài viết

Trình điều khiển Chrome

Nó chỉ được sử dụng để xử lý và kiểm tra chrome cho các nhà phát triển.
Trước hết, bạn phải kiểm tra phiên bản chrome của bạn và sau đó chỉ cần google để tìm kiếm chromedriver của phiên bản đó, sau đó tải xuống và bạn đã hoàn tất.

Mẹo: BẠN KHÔNG THỂ SỬ DỤNG HỒ SƠ WEB GÌ SAPP CỦA BẠN KHI CHƯƠNG TRÌNH NÀY ĐANG CHẠY HOẶC CHƯƠNG TRÌNH SẼ CRASH. VÌ VẬY BẠN CÓ THỂ THAY ĐỔI THỜI GIAN NGỦ CỦA CHƯƠNG TRÌNH THEO CHƯƠNG TRÌNH.

Chúng ta có thể làm theo cách khác không?

Đúng nhưng không phải thế! Phần mềm này được làm thủ công có thể được thay thế bằng các mô-đun khác nhau. Nhưng tất cả các mô-đun đó sẽ có cùng một loại mã hoặc có thể khác với mã của chúng ta nhưng chúng ta có thể sử dụng nó. Nó giống như chúng tôi mua mì và nấu chín họ hoặc chúng ta có thể tự làm mì thô rồi nấu. Trong cả hai trường hợp, chúng tôi đã nấu mì, nhưng bằng cách mua và nấu, nó trở nên phức tạp nhưng bạn không thể thêm hương vị cho sợi mì thô đó, mặt khác, việc tự làm mì sẽ mất thời gian và đôi khi phức tạp, nhưng nó là đáng làm vì bạn có thể làm những gì bạn muốn với mì thô của bạn. Vì vậy, có nhiều lựa chọn thay thế cho điều này và một trong số đó là pywhatkit. Nó cũng là một mô-đun rất nhẹ, dễ sử dụng và tuyệt vời cũng đáng để thực hành. Tôi chắc chắn sẽ cố gắng thực hiện một bài báo về điều này trong tương lai.

Kết luận

Tuyệt vời! bạn đã tạo ra phần mềm tự động hóa WhatsApp con thú của riêng mình với cơ sở dữ liệu của riêng mình.

Bây giờ bạn phải thử nó cho mình để tận hưởng đầy đủ sự đơn giản của python.

Không có kết quả cụ thể của chương trình này nhưng đây là hình ảnh của tin nhắn được gửi.

ảnh chụp nhanh tin nhắn đã gửi

Giới thiệu

tôi là Atulya Khatri, một con trăn geek. Tôi thích học các ngôn ngữ lập trình khác nhau, thử các thư viện khác nhau và tạo ra các loại nội dung lập trình khác nhau.

Các bài viết khác của tôi như sau-

Gui Calculator sử dụng python

Hướng dẫn cho người mới bắt đầu về trình tạo mật khẩu bằng python

Xây dựng bộ đếm thời gian vô hạn bằng python

Trình tải xuống video Youtube sử dụng Python

Github của tôi: https://github.com/atulyakhatri

Chương trình này trên Github: https://github.com/atulyakhatri/daily_hacks/blob/main/date_updater.py

Hình ảnh trên trang này.

1st: Photo by Alexander Shatov on Unsplash

Thứ 2: Ảnh của tác giả

Hãy chia sẻ điều này với tất cả bạn bè của bạn, những người bạn nghĩ cần điều này.

Nếu bạn có bất kỳ nghi ngờ nào liên quan đến điều này, bạn có thể hỏi nó trong phần bình luận hoặc fork kho lưu trữ này trên Github.

Chúc bạn viết mã vui vẻ:)

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img