PyWhatKit: как автоматизировать сообщения WhatsApp с помощью Python
Пользуетесь ли вы Whatsapp? Знаете ли, как вызывать функции Python? Вы когда--нибудь хотели автоматизировать свои сообщения в Whatsapp?
Теперь это можно сделать, если у вас за плечами хотя бы одна неделя программирования на Python. Библиотека pywhatkit
позволяет отправлять отдельные сообщения Whatsapp, отправлять сообщения группами и даже отправлять изображения - и все это с помощью Python. Существуют также опции для воспроизведения видео на YouTube и просмотра интернета.
Сегодня вы узнаете, как отправлять сообщения Whatsapp себе или кому-либо еще с помощью pywhatkit
и Python. Это те области на которых мы сосредоточимся:
- Как установить PyWhatKit
- Как мгновенно отправлять сообщения Whatsapp
- Как Запланировать отправку сообщений Whatsapp на более поздний срок
- Отправляйте сообщения Whatsapp через скрипт Python
- Расширенное использование: группы и изображения
Как установить PyWhatKit?
Пакет доступен на PyPI, то есть вы можете его установить через pip
. Прежде чем мы это сделаем, давайте создадим новую виртуальную среду на основе Python 3.10. После создания мы можем ввести команду pip
для установки pywhatkit
:
conda create --name pywhatkit_env python=3.10 -y
conda activate pywhatkit_env
pip install pywhatkit
Кроме того, я также установил Jupyter и JupyterLab, потому что это среда разработки, которую я буду использовать. Вы можете сделать то же самое, но вместо этого можете воспользоваться текстовым редактором.
Для установки и запуска Jupiter:
pip install jupyter jupyter lab
jupyter lab
Это все, что нам нужно, чтобы начать играть с pywhatkit
.
Как мгновенно отправлять сообщения Whatsapp?
Предполагая, что у вас запущен Jupyter (или текстовый редактор), выполните импорт библиотеки:
import pywhatkit
Функция sendwhatmsg_instantly()
отправит сообщение Whatsapp, как только вы запустите код, отсюда и «мгновенно» в названии. Требуются два параметра:
phone_no
- номер телефона, на который вы хотите отправить сообщение. Не забудьте указать код страны.message
- фактическое сообщение, которое вы хотите отправить.
Давайте посмотрим на это в действии:
pywhatkit.sendwhatmsg_instantly(
phone_no="<phone-number>",
message="Howdy! This message will be sent instantly!",
)
Если вы не вошли в Whatsapp Web, вы увидите этот экран предлагающий отсканировать QR-код с помощью телефона:
После сканирования вы попадете на новый экран чата с вашим сообщением, заполненным в области ввода. По какой-то причине сообщение не отправляется автоматически и вам приходится в ручную нажимать на кнопку отправки. Это ошибка в библиотеке, которая вероятно будет исправлена в будущих версиях.
Позже я покажу вам, как обойти эту ошибку, а пока просто нажмите кнопку «Отправить».
Вы увидите следующее, как в Whatsapp Web, так и на мобильных устройствах:
Это ваше первое сообщение в Whatsapp.
Но что если вы хотите запланировать сообщения на определенное время? Давайте рассмотрим данный вариант по подробнее.
Как Запланировать отправку сообщений Whatsapp на более поздний срок
Иногда вы хотите отправлять сообщения в определенный момент времени. И в пакете pywhatkit
имеется для этого специальная функция sendwhatmsg()
. Помимо phone_no
и message
, для этого потребуются два дополнительных параметра:
time_hour
- целое число представляет час (24-часовой формат), в течение которого вы хотите отправить сообщение.-
time_min
- целое число, представляющее минуту, в течение которой вы хотите отправить сообщение.
Он работает почти также, как в нашем предыдущем примере:
pywhatkit.sendwhatmsg(
phone_no="<phone-number>",
message="This is a scheduled message.",
time_hour=9,
time_min=47
)
Но в отличие от предыдущего примера, эта функция будет выводить время, оставшееся до отправки сообщений:
По истечению этих 53 секунд откроется окно браузера Whatsapp Web и вы увидите текст сообщения, заполненный в поле ввода. Как и прежде, сообщение не отправляется автоматически, и вам придется в ручную нажать на кнопку «Отправить».
После отправки вы увидите сообщение в чате как в Web, так и на мобильном устройстве:
Теперь вы знаете, как отправлять сообщения мгновенно и как планировать их. Было бы не плохо, если бы нам не приходилось каждый раз в ручную нажимать кнопку, чтобы отправить сообщение.
Пока разработчики работают над исправлением этой ошибки, давайте посмотрим как вы можете ее обойти.
Отправляйте сообщения Whatsapp через скрипт Python
Вам понадобятся две дополнительные библиотеки Python для автоматического запуска кнопки «Отправить». Это pyautogui
и pynput
.
Функция send_whatsapp_message()
выполняет следующее:
- Открывает Whatsapp Web и заполняет поле ввода указанным сообщением
- Уходит в спящий режим за 10 секунд, чтобы убедиться, что все загрузилось правильно
- Щелкает по экрану, чтобы убедиться, что выбрано правильное окно/вкладка
- Нажимает и отпускает клавишу Enter на клавиатуре, чтобы отправить сообщение
Если какой-либо из шагов завершается неудачей, исключения выводятся на консоль.
Вот полный фрагмент кода для функции:
import time
import pywhatkit
import pyautogui
from pynput.keyboard import Key, Controller
keyboard = Controller()
def send_whatsapp_message(msg: str):
try:
pywhatkit.sendwhatmsg_instantly(
phone_no="<phone-number>",
message=msg,
tab_close=True
)
time.sleep(10)
pyautogui.click()
time.sleep(2)
keyboard.press(Key.enter)
keyboard.release(Key.enter)
print("Message sent!")
except Exception as e:
print(str(e))
if __name__ == "__main__":
send_whatsapp_message(msg="Test message from a Python script!")
Я сохранил этот код в файле tester.py
и теперь запускаю его через Terminal:
python tester.py
Вы увидите ту же открытую вкладку браузера Whatsapp Web и заполненное поле сообщения, но на этот раз сообщение будет отправлено через пару секунд без вашего вмешательства.
Вот полная история чата:
И именно так вы можете обойти текущие ошибки в библиотеке. Давайте кратко рассмотрим некоторые варианты более расширенного использования.
Расширенное использование: Группы и изображения
Вы также можете отправлять сообщения в группы Whatsapp и отправлять изображения с помощью pywhatkit
. Обратитесь к этим удобным функциям, встроенным в библиотеку:
sendwhatmsg_to_group(group_id: str, message: str, time_hour: int, time_min: int)
- используется для отправки сообщений в группеsendwhatmsg_to_group_instantly(group_id: str, message: str)
- так же, как и предыдущая функция, но отправляет сообщение, как только вы запускаете кодsendwhats_image(receiver: str, img_path: str)
- мгновенно отправляет изображение на номер или в группу. Существует необязательный параметрcaption
, используемый для подписи к изображению. Имейте ввиду, что формат файла PNG в настоящее время не поддерживается.
И это почти все, что есть в библиотеке pywhatkit
Python, по крайней мере в отношении Whatsapp. Не стесняйтесь играть с этими тремя функциями самостоятельно. Я уверен, вы справитесь с этим.