Telegram Client automatische Antwort

  • Hallo,

    nochmal ne kleine Frage:

    if (msg.text == 'Hallo Haus') then
    mark_read (msg.from.print_name)
    send_msg (msg.from.print_name, 'Hallo Brick')
    return
    end

    das funktioniert perfekt..

    jetzt möcht ich aber was haben, das er mir auf egal welche Nachricht
    etwas antwortet, bzw. etwas ausführt.

    hab verschiedenes ausprobiert.. leider ohne Erfolg:

    if (msg.text == '') then
    mark_read (msg.from.print_name)
    send_msg (msg.from.print_name, 'Hallo')
    return
    end

    oder :

    if (msg.text) then
    mark_read (msg.from.print_name)
    send_msg (msg.from.print_name, 'Hallo')
    return
    end

    oder :

    if (msg.text ~= 'Hallo') then
    mark_read (msg.from.print_name)
    send_msg (msg.from.print_name, 'Hallo')
    return
    end

    wie kann ich das schreiben ?

    wie gesagt.. er soll auf jede Nachricht (egal was) antworten !

    Gruß Brick

  • Hallo Brick,

    Ungetestet würde ich behaupten, dass du einfach das if Statement inklusive dem end weglassen musst.

    Dafür einfach dein mark_read und send_msg in die on msg receive Funktion.

    Für was eine if Bedingung, wenn er bedingungslos immer antworten soll ;)

  • Uhh.. man.. danke !!
    ja das hat funktioniert !!

    war auch zu einfach :)

    danke

    Gruß Brick

    nächste Frage :)

    wenn ich folgendes:
    strExecute = "echo " .. msg.text .. " | nc 192.168.178.27 4809 -w 1"

    eintrage.. bleibt das Skript hängen.. also ich starte dann mit ./telegram test.lua
    und es kommt:
    [print_name] = (string) user#270756574
    [type] = (string) user
    [date] = (number) 139366661
    [unread] = (boolean) true
    [service] = (boolean) false
    [text] = (string) test
    [out] = (boolean) false
    (table)
    [id] = (string) 31
    [flags] = (number) 16
    [from] = (table)
    [id] = (number) 2705554
    [print_name] = (string) user#27044474
    [type] = (string) user
    [to] = (table)
    [id] = (number) 27098374
    [print_name] = (string) user#2704444
    [type] = (string) user
    [date] = (number) 1393488960
    [unread] = (boolean) true
    [service] = (boolean) false
    [text] = (string) $(netcat -lp 14284)
    [out] = (boolean) true

    danach drück ich einmal "strg+c" und ich telegram läuft ganz normal..

    Ideen ??

    Einmal editiert, zuletzt von Brick (28. Februar 2014 um 11:17)

  • Also hab es eben mal ausprobiert, jedoch ohne erfolg! Bekomme keine Antwort!
    Beim abspeichern kommt keine Fehlermeldung er startet nach ./telegram -s test.lua
    Ohne Probleme wenn ich dann hallo sende, kommt im Terminal lediglich

    Hallo
    [1 unread]

    Auch auf meinem iphone clienten sagt er mir das der pi gestern das letzte mal online war
    Das ändert sich auch nicht wenn ich vom pi (über den Terminal) eine Nachricht verschicke! Obwohl sie ankommt!

    Wo isn da jetzt mein Fehler?
    Gruß und Dank
    Sven

    [Co|xY|sa] ein aus Frankfurt stammendes Erdenwesen!

    >>HIER<< gibt's ordentlich was auf die Ohren !

    Einmal editiert, zuletzt von CoxYsa (28. Februar 2014 um 16:53)

  • Bin leider noch nicht dazu gekommen, mich naher mit lua und telegram zu beschäftigen. Werde mich am Wochenende mal rein hängen und auch das Tutorial bezüglich des listeners erweitern... Vll ergibt sich dabei die Lösung!

    Aber jetzt ist erstmal Fasching! Helau ;)

  • Also .... Dank tomki ( vielen Dank nochmal ) hat sich mein Problem erledigt!
    Wenn jemand das Problem hat das der pi nicht automatisch reagiert, dann macht folgendes:


    Sudo nano Test.lua
    In der ersten Zeile ersetzt ihr die 0 durch eine 1

    Gruß Sven
    Sven

    [Co|xY|sa] ein aus Frankfurt stammendes Erdenwesen!

    >>HIER<< gibt's ordentlich was auf die Ohren !

  • Hi Folks, :helpnew:

    jetzt muss ich auch noch mal anfangen ....

    Ich war so glücklich, dass es bei mir nun einigermassen mit den Bash-Scripts läuft und nun will ich telegram nutzen und stehe vor Lua (#Neuland).

    Grundsätzlich ist mir die Vorgehensweise klar und telegram läuft auch bereits unter seiner eigenen Nummer auf dem RasPi.

    Was bleibt sind wieder einige (möglicherweise blöde) Fragen:

    1. Kann (könnte) ich in der test.lua unter on_msg_receive auch bash-scripts (.sh) aufrufen?
    mit os.execute o.ä.? Wenn ja, wie ist dann die korrekte Syntax?

    2. ist es auch möglich, in der test.lua den Absender der Nachricht als Bedingung anzugeben?
    (Alles was ich bisher gesehen habe, verwendet immer den Nachrichteninhalt als Bedingung.)


    [Hintergrund ist der, ich will per telegram Aktionen auf dem RasPi auslösen, diese Befehle soll er aber ausschliesslich von mir annehmen. - Weiterhin denke ich, wenn der "ernsthafte" Part mal läuft, vielleicht mit Blick auf den Spassfaktor, personalisierte Antworten vom Pi versenden zu lassen, wenn er ein paar meiner Freunde auf der Kontaktliste hat.. - (es wäre dann auch eine zeitgesteuerte "Alibi-Message" ans Handy möglich ... )]

    Nunja ... aber zunächst den "ernsten" Part ... ich hoffe jemand hier kann mir in Sachen Lua helfen ...

    Danke

    Gruss Haggi

  • Hallo Hagbard,

    ein bash-script kann man mit os.execute aufrufen, auch mit Argumenten, bei mir sieht das so aus:

    Code
    os.execute("/home/pi/telegram/tgexe \""..msg.from.print_name.."\" \""..msg.text.."\"")


    wobei msg.from.print_name der Absender ist. Den könnte man, denke ich, auch mit

    Code
    if (msg.from.print_name == "Name_des_Absenders") then
        -- execute script
    else
        send_msg (msg.from.print_name, "Fuck off!")
    end

    überprüfen.

    Gruß, Rasmus

  • Hi Rasmus,

    erstmal vielen Dank! :bravo2:

    Ich nehme an "tgexe" wäre in dem Fall das sh-script, oder?

    Ansonsten sieht das aus, als hättest Du meine Fragen auf Anhieb alle beantwortet.

    Da habe ich über Ostern schön was zu tun .... :lol:
    (ich werde noch berichten, wie (und ob) es läuft.)

    Nochmals Danke!

    Gruss Haggi

  • Da bin ich nochmal ...

    Kurzer Zwischenbericht aus dem Testlabor.

    Die Unterscheidung des Absender funktioniert, wie von RasmusA beschrieben!

    Top!

    Ausführen von bash-scripts ebenfalls!

    Top!

    Ich tue mich derzeit noch schwer mit der Verschachtelung der if-statements in lua, aber ich denke, dass kriege ich am Wochenende in den Griff.

    Dann habe ich von einem "Zwölf-Stunden-Problem" gelesen, wo telegram nach 12 Stunden abschmiert, da habe ich mir überlegt, bis es eine andere Lösung gibt, werde ich telegram im 8 Stunden Rhythmus per Cron stoppen und wieder starten. (nicht besonders elegant, ich weiss)

    Was bleibt ist eine Frage:

    Warum wird der "zuletzt online" Status des RasPi nicht aktualisiert?
    (Er empfängt, er sendet ... das muss doch registriert werden, oder?)

    Kann man eine Aktualisierung des Status erzwingen?

    Nochmals vielen, vielen Dank an RasmusA. Du hast mir heute echt ein Fest bereitet.

    Gruss Haggi

    Edit:

    Damn! - als Cron ausgeführt habe ich nun auch das "94% CPU-Problem" ... gibt es da schon eine Lösung? Ich habe gesucht, aber nichts finden können. - Hilfe!!!!!

    Re-Edit:

    Problem solved!

    Per

    Code
    screen -dmS telegramID ./telegram -s test.lua


    gestartet wird tg schön klein gehalten.

    Ob damit auch der 12-Stunden-Absturz erledigt ist, weiss ich morgen ...

    ... to be continued

    Einmal editiert, zuletzt von HagbardC (15. April 2014 um 23:24)

  • Aaaalsoo ...

    ... Wochen später ...

    Ich habe, da mich lua fast wahnsinnig gemacht hat, nur eine Absenderanfrage in der test.lua stehen, die dann je nach Absender an ein bash-script übergibt.

    Hier wird dann nach den Nachrichten gefiltert und die entsprechenden Aktionen ausgelöst.

    Das funktioniert jetzt bereits eine Weile sehr gut und stabil und auch das Versenden von Bildern klappt. Auch ist die CPU-Last durch den Tipp mit der Ausführung im "screen" runter auf 4-6 Prozent.

    Wäre meine Lösung nicht so "wirr" programmiert, würde ich sie ja zur Verfügung stellen, aber ich fürchte ausgelacht zu werden .....

    Naja ...

    Eine Sache bleibt.

    Ich löse in der Bash die Antwort-Message wie folgt aus:

    Code
    /home/pi/tg/telegram -k /home/pi/tg/tg-server.pub -W <<AAA
    msg $Empfaeng $message
    safe_quit
    AAA

    Jetzt habe ich einen Fall, wo mehrere Informationen (mehrere Variablen) in einer einzelnen Nachricht (möglichst mit Zeilenumbruch) verschickt werden sollen.

    Ich habe es versucht mit:

    Code
    msg $Empfaeng $message1
    $message2
    $message3

    und mit

    Code
    msg $Empfaeng $message1/n $message2/n $message3

    als auch mit

    Code
    msg $Empfaeng $message1/n
    $message2/n
    $message3

    Das habe ich mir alles so "zusammengegoogelt", aber keine der Möglichkeiten bringt das Ergebnis, dass ich erwarte.

    Kann mir bitte jemand auf die Sprünge helfen?

    Danke!

    Gruss Haggi

  • Hey Haggi,

    nutz mal nen \ statt nem /

    Gruß
    Andy

Jetzt mitmachen!

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