IRC <-> WhatsApp Gateway mit Breakbot

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich beschreibe euch hier wie ihr mit meinem Breakbot Fork eine IRC <-> Gateway aufbaut. Da der Originale Breakbot den ihr hier findet leider ein paar Bugs und auch ein paar Funktionen zu wenig hat hab ich mich mal drangemacht eine möglichst funktionsfähigen Fork vom Breakbot zu erstellen.

    Ihr braucht als Vorraussetzung

    • Einen WhatsApp Zugang mit Login und Password Hash (Hier ist ein Link zum Thread)
    • Installiertes Subversion und git (apt-get install subversion git)
    • Die Python dateutil Library


    1. Git Repository vom Breakbot clonen

    Code
    git clone https://github.com/ninharp/breakbot.git

    2. Ins Arbeitsverzeichnis wechseln

    Code
    cd breakbot

    3. Die erforderliche Python IRC Library oyoyo laden (Hierfür wird Subversion benötigt)

    Code
    sh get_libs.sh

    4. Einen aktuellen Clone der Python WhatsApp Library yowsup laden (dateutil Library wird benötigt für die yowsup)
    (Direkt in das yowsup.git Verzeichnis, da sonst der Symbolische Link noch angepasst werden muss)

    Code
    git clone https://github.com/tgalal/yowsup.git yowsup.git

    5. Die Debuggingausgaben aus der yowsup Library entfernen

    Code
    nano yowsup.git/src/Yowsup/Common/debugger.py


    Dort ändern wir in Zeile 25 das

    Zitat


    enabled = True

    zu

    Zitat


    enabled = False

    6. Konfiguration des Breakbots in der config.json

    Die Gesamte Konfiguration des Breakbots findet sich in der config.json

    config.json Beispiel:

    In dem Abschnitt "contacts" finden sich alle Nummern mit passenden Aliasen die man per IRC erreichen möchte und auch die WhatsApp Gruppenchat Definitionen für die IRC Channels.

    Ein Eintrag im Kontaktabschnitt sieht wie folgt für einzelne Kontakte aus

    "LAENDERCODE+HANDYNUMMER": "ALIASNAME"

    Einträge für Channels bedarfen einer WhatsApp Gruppen Chat ID (zu welcher wir gleich kommen)
    Diese Einträge sind die eigentlichen Gateway Einträge

    "WHATSAPPGROUPCHATID": "#CHANNELNAME"

    Im Abschnitt "config" findet sich die Grundlegende Konfiguration des Bots

    "wa_phone" ist die Handynummer welche der Pi haben soll
    "wa_password" ist das Kenntwort des WhatsApp Accounts als Hash
    "irc_nick" ist der Nickname den der Bot im Chat haben soll
    "irc_server_name" die IP/Hostname des IRC Servers zu dem verbunden werden soll
    "irc_server_port" der Port des IRC Servers
    "bot_owner_nick" der Nickname des Besitzers (wird für Private Nachrichten verwandt)
    "log_file" Dateiname der Logdatei in die die Log geschrieben wird, sofern eingeschaltet
    "logging" Log aufzeichnen in Datei [1=ja, 0=nein]
    "verbose" Verbose Level, je höher umso mehr Nachrichten in der Konsole [0=keine bis 4=alle]
    "spamcheck" Spam Checker auf dem IRC Netz vorhanden [1= ja, 0=nein]
    "spamcheck_nick" Spam Checker Nickname (so lassen falls nicht gebraucht)
    "filter" Filter auf den die Nachrichten angewandt wird, nur die Keywords gehen durch (Liste getrennt durch Komma)

    7. Den Bot mit Python das erste mal starten und Daumen drücken

    Code
    python bot.py


    8. Wenn der Bot erstmal läuft, an einem anderen WhatsApp Account einen Gruppenchat initiieren und den Bot einladen
    Danach in der Gruppe eine Nachricht absenden und ihr solltet in der Bot Ausgabe soetwas ähnliches finden

    Zitat


    2013-11-10 22:27:09 II (2) bot.py:218: Channel 49176999999-1384025838@g.us not recognized

    9.Die Bot-Konfiguration (config.json) fertigstellen
    Mit STRG-C könnt ihr nun den Bot beenden und diese gefundene ID und den IRC Channel in der config.json im Kontaktabschnitt eintragen
    z.B.

    Code
    "4917699999999-111111111111@g.us": "#raspberry-pi",


    Danach den Bot erneut starten, und siehe da die Gateway steht

    Ihr könnt den Bot nun per Private IRC Nachricht eine WhatsApp Nachricht schicken.
    z.B. die folgende Nachricht an den Bot würde eine Nachricht (Sofern im Kontaktabschnitt der config.json definiert)
    an NICKNAME mit der Nachricht NACHRICHT schicken

    NICKNAME: NACHRICHT

    Gleichzeitig werden alle Channel Nachrichten in dem der Bot gejoined ist weitergeleitet in den WhatsApp Gruppen Chat.
    Ausser man halt Filter konfiguriert dann werden nur Nachrichten weitergeleitet welche auf die Schlagwörter passen.

    Wenn ihr den Bot als Daemon auf eurem Pi laufen lassen wollt könnt ihr (ist nicht zwingend) den Verbose Level in der Konfiguration auf 0 stellen und den Bot mit folgendem Befehl in den Hintergrund befördern (Die Ausgaben die auf die Kommandozeile normalerweise geschrieben werden landen so im Nirvana)

    Code
    python bot.py >/dev/null 2>&1 &

    Und schon habt ihr eine im Hintergrund laufende IRC<->WhatsApp Gateway

    Ich hoffe das Tutorial ist einigermassen verständlich (wenn nicht seht es mir nach :)


  • Weißt du wie es möglich ist den Bot in Channel zu Joinen in der ein Passwort hat?

    Die Möglichkeit ist noch nicht vorhanden. Lässt sich aber relativ einfach implementieren. Kann ich gerne noch einpflegen.

    • Offizieller Beitrag

    Diese Funktion ist quasi schon drin...
    man kann in der der Config ein Passwort eingeben

    Code
    "4917699999999-111111111111@g.us": "#raspberry-pi testPWD",

    Dann joint der auch den Channel alles super... Ein Problem bleibt aber noch:
    Wenn irgendwelche Gruppennachrichten ankommen / verschickt werden versucht er diese auf den Raum "#raspberry-pi testPWD" zu mappen... Diesen gibt es allerdingst nicht... Theoretisch reicht es nach Leerzeilen zu schauen wenn ein Raum eine IRC Nachricht geschickt/empfangen werden soll ...

  • Turael
    Das stimmt wohl, ist allerdings keine integrierte funktion sondern nur ein "inject" in die Originale JOIN
    daher gibt es auch die Probleme mit dem korrekten Mapping. Es müsste nochmal separat eingepflegt werden,
    so das er wenn er ein Passwort erkennt das er das aus dem String rausholt und separat zum joinen nimmt.
    Damit nicht der Original Channel Name mit dem Passwort "verseucht" wird und folgende Funktionen dadurch
    nichtmehr funktionieren.

  • Moin da whatsapp nicht mehr unterstützt wird wollte ich fragen wie das geht wenn man einfach telegramm nimmt ?

    wollte es noch so machen das der Server ein Telegramm client hat und mir auf meine andere Nummer eine Nachricht sendet und dass ich zu dem Telegram Server wieder eine Nachricht schreibe und diese wieder zu irc chat geht.

    Danke

    Mit freundlichen Grüßen
    Toerki

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!