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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.