Frage von earlofavalon, 45

Telegrambot Autoresponder?

Hallo, ich arbeite derzeit an einem Chatbot für Telegram. Ich suche eine Möglichkeit, eine Aktion in meinem php-Skript auszuführen, sobald dem Bot eine Nachricht zugeschickt wird. Ich rede hierbei NICHT von Commands, die man z.B. mit "/start" ausführt. Ich würde mich über Hilfe sehr freuen! MfG earl

Antwort
von Malemeister, 42

Hallo,

meine Glaskugel sagt... Ach mist, schon wieder Unwetter, meine Verbindung ist abgebrochen.

Was ist "Telegram"?

Auf was genau reagiert der Bot bzw. wie genau "schickt" man diesem eine Nachricht?

Woran scheiterst du genau?

Besitzt der Bot eine API?

Wann wird der Bot ausgeführt? Immer nur wenn er ein Kommando erhält oder ist er permanent an und wartet auf ein Kommando?

Das sind so die ersten Fragen dir mir innerhalb von 5 Sekunden einfallen. Eine ordentliche Problembeschreibung, bzw. eine ordentliche Frage ist ja wohl das mindeste!

Grüße

Kommentar von earlofavalon ,

Telegram ist ein Messenger für Smartphones sowie PCs (https://telegram.org/).

Bisher habe ich eine php Datei, welche bei Aufrufen über einen Webbrowser eine Nachricht von meinem Bot an einen Empfänger (in diesem Fall mich) sendet.

<?php
// Bot Variablen
$botToken = "24xxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$website = "https://api.telegram.org/bot".$botToken;
$update = file_get_contents($website."/getupdates");
$updateArray = json_decode($update, TRUE);
$text = $updateArray["result"][0]["message"]["text"];
$chatID = $updateArray["result"][0]["message"]["chat"]["id"];

$msg = "Hallo";
echo("Die Nachricht wurde versandt!
Inhalt: << $msg. >>");
file_get_contents($website."/sendmessage?chat_id=".$chatID."&text=".$msg);
?>

Ich möchte, dass ich die php öffne, sie dann solange wartet, bis der Bot eine Nachricht erhält (erstmal egal, was diese beinhaltet) und anschließend eine Nachricht zurück schickt.

Er besitzt eine API, ja: https://core.telegram.org/bots/api

Diese hatt ich aber nicht vor zu nutzen, sondern ein php-Skript.

Der Bot wird permanent ausgeführt, er "macht" aber nur etwas, wenn ich zum Beispiel meine php (s.o.) öffne.

MfG

Kommentar von TanteHolger ,

So wie Du Dir das vorstellst wird es mit einfachen Mitteln nicht gehen. Ich empfehle Dir, dich für Dein projekt mal mit Websocket zu beschäftigen.

Kommentar von Malemeister ,

Hallo,

na das sieht doch schon besser aus. Damit können wir auch was anfangen.

Wie TanteHolger schon sagte, wird das so nicht funktionieren wie du dir das vorstellst. Es wird schon daran scheitern das PHP nicht für dauerbetrieb gemacht wurde. Sprich ein PHP Script wird nur eine bestimmte Zeit (Standartmäßig 30 Sekunden) ausgeführt. Danach bricht es ab.

Natürlich kann das alles umgangen werden, usw. Ist aber nicht zu empfehlen!

Andere Lösung? Klar, gibt es. Allerdings muss ich gestehen das ich dein Problem noch nicht ganz verstanden habe. Ich würde dir aber eine Sprache empfehlen, die für das dauerhafte ausführen gemacht wurde. Am besten wird hier wohl Java sein. Du kannst es Systemübergreifend nutzen und es ist PHP ähnlicher als jede andere Sprache.

Wenn es unbedingt PHP sein muss, dann solltest du dir wirklich mal sockets anschauen (wie auch TanteHolger schon sagte).

Grüße

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten