Mit dem Pi über WhatsApp Nachrichten, etc. senden!

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Mit dem Pi über WhatsApp Nachrichten, etc. senden!? Schau mal ob du hier fündig wirst!

  • Code
    message=[ "%s" % (i) for i in sorted(self.commandMappings, lambda x,y: cmp(x,y), lambda x: self.commandMappings[x][1])]


    wird es vermutlich bei Dir tun.

    leider nicht, die Befehle sind nicht sortiert und zum Schluss kommt wieder die Fehlermeldung die endet:
    self.commandMappings[command[0]]()
    TypeError: 'tuple' object is not callable

  • Ist zwar schon recht lang her das die Frage gestellt wurde und auch beantwortet -> wie kann ich per PHP nun eine Nachricht versenden, hab das PHP, Ajaxscript von Seite kA versucht, hab Yowsup nun auch im Webverzeichnis installiert und aus der Konsole schickt er fröhlich seine Nachrichten, kann das sein das mir für shell_exec eine Library fehlt oder was hab ich nun direkt falsch gemacht?

  • Ich habe den Code von defPrompt mal auseinandergezogen und etwas ausführlicher beschrieben.
    1) Der Trick ist die Sortierung der Liste nach dem Inhalt des 3ten Elements in der Map (self.commandMappings[x][2]).
    2) Danach wird je nach Inhalt der 2ten Elements in der Map (Der Parameterstring) entweder ein Leerzeichen als Trennzeichen oder kein Zeichen zurückgeliefert.
    3) Zuletzt wird der eigentliche Parametertext aus dem 2ten Element der Map gesammelt (parm).
    4) Danach werde alle 3 Teile in einer Liste zusammengetragen (message) und in einen String umgewandelt (messageString).
    5) Zum Schluss werden alle Elemente mit ",/" aneinandergehängt und ein wenig korrigiert(messageStringFormatted).

  • Super, hat mir sehr geholfen! Der Fehler lag bei mir übrigens an ner anderen Stelle.

    Nächstes Problem (dachte, das wäre gelöst): Umlaute funktionieren weder in Kommentaren im Programm, noch in Terminalausgaben über print. Das ist m. E. ein Problem der Codierung (latin-1 / utf-8), in anderen Programmteilen habe ich das schon ersetzt. Weiß jemand, wie ich das in den CmdClient rein kriege?

    Einmal editiert, zuletzt von HaSch (2. Dezember 2013 um 00:27)

  • weiß einer wieso
    python yowsup-cli -l -a -k -c config.example | tee -a /opt/yowsup/src/log.txt

    nicht geht?

    Eigentlich will ich nur eine log-datei die LIVE aufzeignet mit
    python yowsup-cli -l -a -k -c config.example >> /opt/yowsup/src/log.txt

    schreibt er ja erst wenn ich ihn stoppe


  • Nächstes Problem (dachte, das wäre gelöst): Umlaute funktionieren weder in Kommentaren im Programm, noch in Terminalausgaben über print. Das ist m. E. ein Problem der Codierung (latin-1 / utf-8), in anderen Programmteilen habe ich das schon ersetzt. Weiß jemand, wie ich das in den CmdClient rein kriege?

    Hab's gefunden: wenn die beiden ersten Zeilen im Programmcode wie folgt lauten, werden auch Umlaute akzeptiert (müssen aber die ersten beiden sein und mit den Kommentarzeichen):

    Code
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
  • Wie kann ich das umgehen, das wenn ich das Script starte, jede Nachricht die ich mit

    Code
    if "!a" in messageContent:
    			self.methodsInterface.call("message_send", (jid, "asd"))


    im ListenerClient stehen habe, nicht immer "asd" bekomme.

    Sprich ich starte das Script und für jedes gesendete !a bekomme ich asd :( das sind knapp 50stk :/
    starten tu ich es so:

    Code
    python yowsup-cli -c config.example -l -k -a

    Einmal editiert, zuletzt von Evolutio (5. Dezember 2013 um 14:18)

  • Es gibt den selten fall das der Listener es nicht schafft für vorher empfangene befehle die -a zu setzen
    Starte es einmal im interaktiv dann setzt er für alle bisherigen die -a also es 2te Häkchen.

    Gelost wird das glaub ich mit nem try pass

    Aber hab grad kein pc zur Hand

    Keine eine Idee wie ich mein Log Problem löse?

    Ich werd heut Abend mal schauen wie ich das mit den Gruppen implementiere

    Einmal editiert, zuletzt von StillResonance1614 (6. Dezember 2013 um 10:55)

  • jo hat geklappt, danke ;)

    Ist aber schon ganz schön krass, was man damit machen kann :D
    Ich habe bis jetzt !gb (german-bash.org um die Zitate zu posten)
    als auch !9gag bzw !9gag <gag ID> um das Bild auf den PI zu laden, welches vom PI in einer Gruppe gesendet wird. Läuft eigentlich alles ganz super :), zudem war das relativ einfach ;)

  • Hallo Forum
    Ich muss erst mal Lob aussprechen für das Forum :thumbs1:
    und dann komme ich auch mal zur ersten Frage hat sich schon jemand näher mit den Gruppen beschäftigt da ich keine Möglichkeit sehe in eine Gruppe zu schreiben es gibt zwar ne menge Befehle dazu aber irgendwo muss man doch die "Nummer" der Gruppe eintragen oder ist das auch eine jid (eben wie bei einem normalen Chat) und wenn ja wie finde ich sie heraus.

    mfg Dome

    P.s bin noch ein ziemlicher Anfänger in Python:s

  • und ich bins wieder ich hab da noch eine Frage ich versuche schon die ganze zeit in der CmdClient Datei einen weiteren Befehl einzufügen testweise erstmal das der test schickt wenn ich /send eingebe aber der gibt mir immer den fehler aus das da wo die befehle definiert werden (wo lambda steht) dies eintrage :
    "send": (lambda: self.methodsInterface.call("message_send"(jid, message)),"",8),
    gibs den fehler das der jid nich global kennt wenn ich (jid, message) weglasse meckert der nicht direkt sonder sagt nur das der befehl nicht ausgeführt werden kann(auch wenn ich da jid und nachricht direkt eintrage also in "nummer@s.what..." )
    die funktion sieht so aus :
    def send(jid):
    self.methodsInterface.call(jid, "Test")
    aber bis dahin ist das programm noch nicht gekommen
    vlt kann mir jemand helfen ist auch erstmal ein übung um mit python klar zu kommen und es zu lernen
    und ist es möglich ein programm was zb stündlich was sendet in einer andere datei (zb uhrzeit.py) zu schreiben und muss dies dann in Examples/src liegen oder kann das auch wo anders sein

    mfg Dome

    Edit : sorry dachte das reicht hier die fehlermeldung
    Enter Message or command: (/available, /unavailable, /getprofile, /setprofile filename, /setstatus status, /lastseen, /exit, /send)
    /send
    Exception in thread Thread-3:
    Traceback (most recent call last):
    File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
    File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
    File "/home/pi/yowsup-master/src/Examples/CmdClient.py", line 84, in onAuthSuccess
    self.goInteractive(self.phoneNumber)
    File "/home/pi/yowsup-master/src/Examples/CmdClient.py", line 171, in goInteractive
    commandExecuted=self.runCommand(message.strip())
    File "/home/pi/yowsup-master/src/Examples/CmdClient.py", line 138, in runCommand
    self.commandMappings[command[0]][0]()
    File "/home/pi/yowsup-master/src/Examples/CmdClient.py", line 62, in <lambda>
    "send": (lambda: self.methodsInterface.call("message_send"(jid, message)),"",8),
    NameError: global name 'jid' is not defined

    das ist die meldung den code hab ich nur das hinzugefügt was ich schon geschrieben habe und wie finde ich den den stacktrace auf dem pi. Danach kann ich das programm nicht mehr mit /exit beenden (logisch das bleibt da ja hängen denke ich mal) auch strg D geht nicht, hab danach das terminal geschlossen und mich neu über ssh eingelogt wenn ich /send nicht aufrufe funktioniert alles wie es soll
    hoffe ich hab diesmal alles :/
    weiß selbst nicht was ich da geschrieben habe gemeint was diese Code klappen mit der beitrag nicht so lang wird und man den Code minimieren kann

    Einmal editiert, zuletzt von CrashOverRide (8. Dezember 2013 um 14:34)

Jetzt mitmachen!

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