Envoyer un message WhatsApp pendant que tu dors, souhaiter un anniversaire à l’heure pile ou rappeler un rendez-vous à tes proches sans y penser : Python sait le faire avec le module pywhatkit. Dans ce tutoriel, tu vas apprendre à programmer l’envoi d’un message WhatsApp en quelques lignes de code, et surtout à comprendre ce que fait vraiment le module, ses limites et les risques à connaître avant de l’utiliser.
Article mis à jour en octobre 2026 : j’ai relu le code source de pywhatkit 5.4 et corrigé l’ancienne version de cet article. Les fonctions sendmsg(), add_driver_path(), load_QRcode() et manual() n’existent plus, le module n’utilise pas ChromeDriver, et l’heure d’envoi doit seulement être à plus de 15 secondes (et non 4 ou 5 minutes). J’ai aussi ajouté les erreurs courantes et les limites du procédé.
En bref : installe le module avec pip install pywhatkit, connecte-toi une fois à WhatsApp Web dans ton navigateur par défaut, puis appelle pywhatkit.sendwhatmsg(numero, message, heure, minute). Le script attend l’heure demandée, ouvre WhatsApp Web, clique dans la page et appuie sur Entrée pour envoyer. Cela ne marche donc que sur un ordinateur allumé, avec un écran et un navigateur. Et comme WhatsApp encadre l’envoi automatisé de messages, il faut l’utiliser avec modération.
Les exemples de cet article ne sont pas exécutables dans un notebook en ligne (Colab, par exemple) : le module pilote la souris, le clavier et le navigateur de ton ordinateur. Je n’ai pas non plus envoyé de vrai message pour écrire cet article. En revanche, j’ai lu le code du module, et testé ses vérifications (numéro, heure, délai) en simulant le navigateur et le clavier. Les messages et les erreurs montrés plus bas viennent de ces tests.
Comment envoyer un message WhatsApp avec Python ?
Il existe des API officielles pour automatiser WhatsApp, mais elles sont réservées aux entreprises et payantes. Le module pywhatkit prend un autre chemin, plus simple : il ouvre WhatsApp Web dans ton navigateur et reproduit ce que tu ferais à la main, avec la bibliothèque pyautogui qui simule les clics et les touches du clavier. Pour un message, il suit ces étapes :
- il attend l’heure que tu as indiquée ;
- il ouvre dans ton navigateur par défaut une adresse du type
https://web.whatsapp.com/send?phone=...&text=..., qui ouvre la discussion avec le message déjà écrit ; - il attend que la page se charge, puis clique au milieu de l’écran ;
- il appuie sur la touche Entrée pour envoyer le message.
Cela implique une chose importante : tu dois être déjà connecté à WhatsApp Web dans ce navigateur (en scannant une fois le QR code avec ton téléphone), et ton ordinateur doit rester allumé, avec la session ouverte et l’écran déverrouillé, jusqu’à l’envoi.
De quoi as-tu besoin ?
- Python 3 installé sur un ordinateur (Windows, macOS ou Linux) avec un écran ;
- un navigateur par défaut, connecté à WhatsApp Web ;
- une connexion Internet (le module la vérifie au démarrage) ;
- le numéro du destinataire, avec l’indicatif du pays (par exemple
+33pour la France).
Tu n’as pas besoin de Chrome en particulier ni de ChromeDriver : l’ancienne version de cet article le disait, mais le module utilise simplement le navigateur par défaut de ton système.
Comment installer pywhatkit ?
Dans un terminal, installe le module avec pip. Il télécharge aussi quelques dépendances (pyautogui, Pillow, requests, wikipedia et Flask).
pip install pywhatkitPywhatkit sait faire d’autres choses que WhatsApp : lancer une vidéo YouTube avec playonyt(), faire une recherche Google avec search(), obtenir un résumé Wikipédia avec info(), transformer un texte en écriture manuscrite avec text_to_handwriting() ou envoyer un e-mail. Ici, on se concentre sur l’envoi de messages.
Quelle est la syntaxe pour envoyer un message WhatsApp ?
La fonction principale est sendwhatmsg(). Voici sa signature dans la version 5.4 de pywhatkit :
pywhatkit.sendwhatmsg(
phone_no, # numéro avec indicatif pays, ex. "+33600000000"
message, # texte du message
time_hour, # heure d'envoi (0 à 24)
time_min, # minute d'envoi (0 à 59)
wait_time=15, # secondes d'attente pour le chargement de WhatsApp Web
tab_close=False, # fermer l'onglet après l'envoi
close_time=3, # secondes avant de fermer l'onglet
)PythonLes paramètres à retenir :
phone_no: le numéro du destinataire, au format texte et avec l’indicatif du pays précédé de+(sans lui, le module lève une erreur) ;message: le texte à envoyer ;time_hour: l’heure d’envoi, au format 24 heures ;time_min: la minute d’envoi, de 0 à 59 ;wait_time: le temps d’attente, en secondes, pour laisser WhatsApp Web se charger (15 par défaut) ;tab_closeetclose_time: pour fermer l’onglet du navigateur après l’envoi.
Comment programmer l’envoi d’un message WhatsApp ?
Voici un exemple complet. Remplace le numéro (ici un faux numéro) par le tien pour tester sur toi-même, ou par celui d’un proche qui est d’accord pour recevoir le message. Ajuste aussi l’heure : elle doit être dans le futur, à plus de 15 secondes de l’heure actuelle.
import pywhatkit
# remplace par TON numéro (ou celui d'un proche qui est d'accord), avec l'indicatif pays
numero = "+33600000000"
# envoi programmé à 22h22
pywhatkit.sendwhatmsg(numero, "Bonne nuit !", 22, 22)PythonLance le script : il se met en attente, et affiche un message de ce type (ici avec une heure d’envoi prévue environ 4 minutes plus tard) :
In 235 Seconds WhatsApp will open and after 15 Seconds Message will be Delivered!Au bout du temps indiqué, WhatsApp Web s’ouvre dans ton navigateur, et le message part. Ne touche pas à la souris ni au clavier pendant ces quelques secondes, car le script clique et appuie sur Entrée à ta place.
Pour laisser plus de temps au chargement de la page, ou fermer l’onglet automatiquement après l’envoi, ajoute les paramètres optionnels :
import pywhatkit
numero = "+33600000000"
# attendre 20 s au lieu de 15 pour un chargement lent, et fermer l'onglet après l'envoi
pywhatkit.sendwhatmsg(numero, "Bonne nuit !", 22, 22, wait_time=20, tab_close=True)PythonComment envoyer un message tout de suite, à un groupe ou avec une image ?
Pywhatkit propose trois autres fonctions. D’abord, sendwhatmsg_instantly() envoie le message sans attendre une heure précise :
import pywhatkit
numero = "+33600000000"
# envoi immédiat : WhatsApp Web s'ouvre tout de suite
pywhatkit.sendwhatmsg_instantly(numero, "Message envoyé depuis Python", wait_time=20)PythonEnsuite, sendwhatmsg_to_group() envoie un message dans un groupe. Il prend l’identifiant du groupe, c’est-à-dire la fin de son lien d’invitation, à la place du numéro :
import pywhatkit
# l'identifiant du groupe est la fin du lien d'invitation : https://chat.whatsapp.com/<identifiant>
pywhatkit.sendwhatmsg_to_group("IDENTIFIANT_DU_GROUPE", "Bonjour à tous !", 22, 22)PythonEnfin, sendwhats_image() envoie une image avec une légende. Attention : l’envoi d’image copie le fichier dans le presse-papiers, ce qui demande un outil supplémentaire sous Linux (copyq) et un fichier JPEG sous macOS.
import pywhatkit
numero = "+33600000000"
# envoie une image avec une légende (l'envoi d'images demande copyq sous Linux)
pywhatkit.sendwhats_image(numero, "photo.png", "Ma légende")PythonQuelles erreurs peuvent apparaître ?
D’après le code du module, voici les erreurs que tu rencontreras le plus souvent :
CountryCodeException: le numéro ne contient pas de+. Écris-le avec l’indicatif ("+33600000000", et non"0600000000") ;CallTimeException: l’heure d’envoi est trop proche. Le module a besoin d’au moinswait_timesecondes (15 par défaut) avant l’envoi pour charger WhatsApp Web. Choisis une heure un peu plus lointaine ;Warning: Invalid Time Format!: l’heure n’est pas valide (par exemple 25 heures) ;InternetException: pas de connexion Internet au lancement.
Deux autres pièges. D’abord, si l’heure d’envoi est déjà passée aujourd’hui, le module calcule le délai en passant au jour suivant : ton script attendra donc presque 24 heures. Ensuite, le script reste bloqué pendant l’attente : tu ne peux pas lancer d’autres tâches dans le même programme sans le structurer autrement (avec un thread, par exemple).
Quelles sont les limites et les risques ?
Cette méthode est pratique pour un rappel ou un message à un proche, mais elle est fragile :
- Elle simule un humain. Le module clique au milieu de l’écran et appuie sur Entrée. Si la page n’est pas chargée à temps, si tu n’es pas connecté à WhatsApp Web ou si une autre fenêtre est au premier plan, le message ne part pas, ou le clic tombe ailleurs ;
- Elle dépend de ton ordinateur. Il doit rester allumé, déverrouillé, avec un navigateur ouvert. Elle ne tourne donc pas sur un serveur sans écran ;
- Elle peut déplaire à WhatsApp. WhatsApp encadre l’envoi automatisé ou en masse de messages, et peut bloquer les comptes qui s’y adonnent. N’envoie pas de messages non sollicités, ne démarche pas des inconnus et n’automatise pas de longues séries de messages ;
- Elle n’est pas faite pour un usage professionnel. Pour envoyer des messages à des clients, utilise l’API officielle WhatsApp Business de Meta, ou un prestataire qui l’utilise : l’envoi respecte les règles de WhatsApp et ne dépend pas de ton écran.
Utilise donc pywhatkit pour t’amuser, apprendre l’automatisation et rendre service à tes proches, avec leur accord.
Questions fréquentes
Peut-on envoyer des messages WhatsApp avec Python gratuitement ?
Oui : le module pywhatkit est gratuit et open source. Il utilise WhatsApp Web dans ton navigateur et simule les clics et le clavier. Il ne passe pas par l’API officielle de WhatsApp, qui est réservée aux entreprises et payante.
Faut-il Chrome ou ChromeDriver pour utiliser pywhatkit ?
Non. Le module ouvre WhatsApp Web dans le navigateur par défaut de ton système, sans ChromeDriver. Il faut simplement que tu sois déjà connecté à WhatsApp Web dans ce navigateur, en scannant le QR code une première fois avec ton téléphone.
Pourquoi pywhatkit affiche « Call Time must be Greater than Wait Time » ?
L’heure d’envoi est trop proche de l’heure actuelle. Le module doit ouvrir WhatsApp Web et attendre son chargement, 15 secondes par défaut (paramètre wait_time). Choisis une heure d’envoi plus lointaine, d’au moins une minute, ou réduis wait_time.
Pourquoi faut-il l’indicatif du pays dans le numéro ?
Le module construit l’adresse de la discussion WhatsApp avec le numéro complet. Il vérifie la présence du signe plus et lève une erreur sinon. Écris par exemple +33600000000 pour un numéro français, sans le zéro initial.
Peut-on envoyer un message WhatsApp à un groupe avec Python ?
Oui, avec la fonction sendwhatmsg_to_group() de pywhatkit. Elle prend l’identifiant du groupe, qui correspond à la fin de son lien d’invitation, le message, et l’heure d’envoi. La fonction sendwhatmsg_to_group_instantly() l’envoie sans attendre.
Risque-t-on de se faire bloquer par WhatsApp avec un script Python ?
Oui, si tu envoies des messages en masse ou non sollicités. WhatsApp encadre l’automatisation et peut bloquer un compte. Reste sur un usage personnel, avec l’accord des destinataires, et passe par l’API officielle WhatsApp Business pour un usage professionnel.
Conclusion
Tu sais maintenant programmer l’envoi d’un message WhatsApp avec Python et pywhatkit, tu connais la syntaxe de sendwhatmsg(), les erreurs courantes et les limites du procédé. Pour t’entraîner, programme un message d’anniversaire pour toi-même ou pour un proche qui est d’accord, puis teste les options wait_time et tab_close.
Automatiser une tâche avec quelques lignes de Python, c’est le bon moyen d’apprendre le langage. Sur DataXp, tu t’entraînes à la data science en passant de Python et pandas aux statistiques et au Machine Learning, avec plus de 350 exercices et un coach IA à tes côtés. Les premiers modules sont gratuits.
Pour aller plus loin :














Est-il possible d’automatiser aujourd’hui un message dans un groupe de Forum Watsapp?
Oui 🙂
Regarde la documentation de pywhatkit, tu peux passer un group id plutôt qu’un tél