Telegram-Bot: getUpdates begrenzen?

OP (Firma: Q3) #7436154
Lesenswert?

Mit dem Kommando:

1
https://api.telegram.org/bot123:ABC/getUpdates

Erhalte ich eine Art riesiges Syslog aller möglichen Vorgänge, nicht nur die Mitteilung der Gruppenmitglieder. Ich möchte jedoch inner nur die letzten (neuesten) 10 oder 20 Mitteilungen abholen. Laut meinen Recherchen im Web soll es möglich sein mit

1
https://api.telegram.org/bot123:ABC/getUpdates?limit=10

die Anzahl der ausgegeben Mitteilung zu begrenzen ... Funzt aber nicht, ich bekomme eine Fehlermeldung:

1
zsh: no matches found: https://api.telegram.org/bot123:ABC/getUpdates?limit=10

Was ist falsch bzw. wo finde ich mehr Infos dazu? Danke.

OP (Firma: Q3) #7437019
Lesenswert?

Frank E. schrieb:

Ja, Danke, richtig! Allerdings mit ...?offset=-1

Erhält man genau die letzte Message.

Noch ein Nachtrag:

Den Backslash brauche ich nur im Terminal, wenn ich das mit CURL teste. Inzwischen nehme ich aber einfach ein HTTPS-Socket im POST-Mode, dann sieht das wieder ganz normal aus:

https://api.telegram.org/bot123:ABC/getUpdates?offset=-1

Der Unterschied war wohl das, was mich verwirrt hatte.

Dieser Request liefert einen JSON-String, der neben dem Text auch eine Message-ID enthält. Auch die sollte man sich heraus parsen und merken, denn so lange die letzte Nachricht sich nicht ändert, liest man immer wieder die gleiche Nachricht.

Ich habe übrigens die Telegram-Bot-Kommunikation in eine Xojo-Klasse gepackt, für meine Desktop-Tools. Eine Arduino-Lib gibts übrigens auch schon (nicht von mir!), allerdings nur nutzbar auf Modellen, die HTTPS beherrschen. Oder man muss ein PHP-Skript im Web dazwischenschalten.

Ich finde, das ist eine ziemlich praktische Möglichkeit, um recht unkompliziert Meldungen zu PC oder Mobilgerät zu versenden oder auch umgekehrt Kommandos an MC-Projekte ...

#7437036
Lesenswert?

Frank E. schrieb:

Den Backslash brauche ich nur im Terminal, wenn ich das mit CURL teste.

Wie gesagt, die Fehlermeldung kam von deiner Shell (zsh), die versucht hat, die URL zu interpretieren bevor sie überhaupt als Parameter an CURL übergeben wurde.

Das Escaping versteckt das "?" vor der zsh, an CURL übergibt die zsh die URL dann ohne Backslash, also genau so wie du sie auch außerhalb der Shell verwendest.

Frank E. schrieb:

Dieser Request liefert einen JSON-String, der neben dem Text auch eine Message-ID enthält.

Wenn du das auch an der Shell verarbeiten willst, schau dir das "jq"-Utility an. https://github.com/jqlang/jq/wiki/Installation#macos https://github.com/jqlang/jq/wiki/Cookbook

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren