WhatsApp Autosender erstellen mit Python + Countdown Timer (2022)

Die Idee war einen Whatsapp Autosender zu erstellen, über den ich jeden Tag per Whatsapp eine Nachricht erhalten wollte, in der steht wie viele Tage es noch bis zu meinem Urlaub sind. Ich habe die Idee dann noch erweitert, indem ich die automatische Nachricht in eine Whatsapp Gruppe geschrieben habe, in der auch meine Freunde waren. So konnten wir jeden Tagen sehen, wie lange es noch zu unserem gemeinsamen Urlaub dauert.

Wie habe ich das ganze gemacht?

Ich habe lange recherchiert und keine fertige Lösung dafür gefunden. Also habe ich mir mit Python selbst eine funktionierende Lösung erstellt, die jetzt auch schon mehr als einen Monat fehlerfrei läuft.

Was wird dafür benötigt?

  • Ein Online VPS Server oder alternativ einen Client der dauerhaft eingeschaltet ist (Betriebssystem Windows Client oder Server)
  • PyCharm
  • Tight VNC

Ich habe den VPS Server bei Contabo.de* gemietet, es funktioniert aber auch mit jedem anderen Anbieter oder eben mit einem eigenen Rechner.

Nachdem Pycharm auf dem entsprechenden Rechner/VPS installiert ist, muss zunächst ein neues Projekt angelegt werden, indem dann die Skripte erstellt werden können. Ich habe für meine Lösung zwei Skripte verwendet:

  • countdown.py (zählt die Tage runter und erstellt den Text z. B. „Noch 45 Tage bis zum Urlaub!“ und schreibt es in eine Textdatei)
  • main.py (liest die Textdatei aus und schreibt den Text über WhatsApp Web in die passende Gruppe)

Wichtig! Wenn ihr einen VPS Server benutzt dürft ihr nicht die Windows RDP Verbindung nutzen, denn dann bleibt die Sitzung im Hintergrund nicht aktiv und das Skript kann die GUI nicht ausführen. Deshalb habe ich den TightVNC genutzt. Wenn ihr Windows RDP genutzt habt, müsst ihr die Maschine neu starten und euch anschließend über VNC verbinden, ohne einen Neustart blockiert die RDP Verbindung, auch wenn sie geschlossen ist, das Öffnen der GUI.

Was ist PyWhatKit?

Python bietet zahlreiche integrierte Bibliotheken. PyWhatKit ist eine davon. Sie kann u. a. verwendet werden, um WhatsApp-Nachrichten senden, ein YouTube-Video abspielen oder eine Google-Suche durchführen.

Für dieses Projekt benötigen wir aber nur die Whatsapp Funktion.

Das Countdown Skript

Das Skript zählt die Tage bis zum Urlaub runter und erstellt anschließend den fertigen Text. Der Text wird dann in die text.txt Datei geschrieben, sollte noch keine vorhanden sein, wird sie beim ersten Ausführen des Skripts erstellt. Den markierten Text könnt ihr natürlich individuell anpassen.

from datetime import date
import sys
import time

while 1:
    today = date.today()
    ereignis_date = date(today.year , 6 , 21)

    if ereignis_date < today:
        ereignis_date = ereignis_date.replace(year=ereignis_date.year + 1)

    countdown = ereignis_date - today

    print('Noch', countdown.days , 'Tage bis zum Urlaub!')

    # Speichern in Text.txt

    original_stdout = sys.stdout

    with open("text.txt", "w") as f:
        sys.stdout = f  # Change the standard output to the file we created.
        print('Noch', countdown.days , 'Tage bis zum Urlaub!')
        sys.stdout = original_stdout

    time.sleep(10800)

Das WhatsApp Autosender Main Skript:

Nur mit pywhatkit hat es bei mir nicht funktioniert. Ich habe zusätzlich noch pyautogui importiert, damit der Cursor mittig einen Klick auf den Bildschirm macht und das Browserfenster in den Vordergrund rückt. Außerdem habe ich genügend „Sleep Zeiten“ eingefügt, damit der Vorgang sauber ausgeführt werden kann.

Anschließend wird dann durch pywhatkit der Text in das Eingabefeld in Whatsapp Web eingefügt und versendet.

Bei „GruppenID“ muss zwischen den Anführungszeichen die ID der Whatsapp Gruppe eingegeben werden. Die findet ihr, wenn ihr in einer Whatsapp Gruppe jemanden hinzufügen möchtet und dann auf „mit Link einladen“ auswählt. Die Buchstaben/Zahlen hinter dem Schrägstrich in dem Link ist die Gruppen ID:

import pywhatkit
import time
import pyautogui as pg
import os

def Prozess_1():
    time.sleep(20)
    pg.click(500, 500)
    time.sleep(20)
def Prozess_2():
    time.sleep(10)
    pg.press("enter")
    time.sleep(15)
    os.system("taskkill /im chrome.exe /f")


#Pywhatkit beginn

while 1:
    pywhatkit.sendwhatmsg_to_group('GruppenID','', 10, 1)
    Prozess_1()

    with open("text.txt", "r") as f:
        f_contents = f.read()
        pg.write(f_contents)

    Prozess_2()

Fazit:

Es gibt im Internet auch kostenpflichtige Anbieter zu finden, bei denen Whatsapp Nachrichten über eine Python API automatisiert versenden kann. Doch die sind recht teuer, oft muss man dort pro Nachricht bezahlen und so kann schnell was zusammenkommen. Da ist die Lösung eine echte Alternative, auch wenn es in meinem Fall nur eine Spielerei war 🙂

Falls ihr Fragen oder Ergänzungen habt, gerne in die Kommentare!

Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Affiliate-Links. Wenn du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekomme ich von dem betreffenden Online-Shop oder Anbieter eine Provision. Für dich verändert sich der Preis nicht.

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WordPress Cookie Hinweis von Real Cookie Banner