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

  • 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.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert? Kein Backup - kein Mitleid :no_sad: . Nimm einfach raspiBackup ;)

  • 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

  • Dann bleibt Dir nichts weiter als die 3 Codestände zu mergen. meld ist ein gutes Tool dafuer.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert? Kein Backup - kein Mitleid :no_sad: . Nimm einfach raspiBackup ;)

  • 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?

  • Moin interessante Fragen.


    Konnte schon einer den Statustext ändern oder den Namen im Lockscreen beim iPhone?
    Das müsste der Profilname sein.


    Oder ist das garnicht möglich? In der Doku kann ich nichts finden?


    Danke. Sven

    Edited once, last by piro299 ().

  • 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).

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert? Kein Backup - kein Mitleid :no_sad: . Nimm einfach raspiBackup ;)

    Edited once, last by framp ().


  • Super, hat mir sehr geholfen! Der Fehler lag bei mir übrigens an ner anderen Stelle.
    [hr]
    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?

    Edited once, last by HaSch ().

  • 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?
    [hr]


    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 -*-
  • Jupp. Das sollte man immer am Anfang stehen haben.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert? Kein Backup - kein Mitleid :no_sad: . Nimm einfach raspiBackup ;)


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


    Super. Schon fischen gelernt :thumbs1:

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert? Kein Backup - kein Mitleid :no_sad: . Nimm einfach raspiBackup ;)

  • 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

    Edited once, last by Evolutio ().

  • 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
    [hr]
    Keine eine Idee wie ich mein Log Problem löse?


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

  • 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 ;)

  • ... ich glaube das nennt man Spam was Du da machst ...

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert? Kein Backup - kein Mitleid :no_sad: . Nimm einfach raspiBackup ;)

  • 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