Telegram Bot zu Bot Nachrichten abfangen

ArminiusSW

Newbie
Registriert
Juni 2024
Beiträge
4
Hallo Leuts
Ich bin ein Anfänger was Telegram Bot programmieren betrifft. Ich schildere Euch mal das Scenario:

Ich habe zwei Bots - beide via Webhook aktiviert:
ServiceBot
ClientBot

Der Servicebot stellt dem Nutzer verschiedene Fragen und eine Prompt, am ende wird vom Servicebot zum Clientbot diese Nachricht des Nutzers versendet, natürlich nur wenn der ClientBot vom Empfänger gestartet wurde. Das klappt schonmal wunderbar.

Bevor die Nachricht aber im Chat des ClientBot erscheint möchte ich diese vorher abfangen und zum Beispiel einen button anhängen oder sonstiges.

Ich habe verschiedenes ausprobiert und nichts klappt. Hier erstmal der Teil des Codes aus den Bots der relevant ist.

servicebot:
Code:
$json_out = startCom();
$command_arr = explode(" ", $json_out->message->text);

$chatID = $json_out->message->chat->id;

// Das $item enthält die Benutzer ID des Empfängers
sendMessage($client_token, $item, $anfrage);

function startCom(){
  $json_raw = file_get_contents("php://input");
  $json_out = json_decode($json_raw);
  return $json_out;
}

function curlIni($bot_token, $command, $param){
   $ch = curl_init("https://api.telegram.org/bot" . $bot_token . "/".$command);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));

   $result = curl_exec($ch);
   curl_close($ch);

   return $result;
}

function sendMessage($bot_token, $chat_id, $message_text){
   $param = array(
    "chat_id" => $chat_id,
    "parse_mode" => "HTML",
    "text" => $message_text
   );
   return curlIni($bot_token, 'sendMessage', $param);
}

clientbot:
Code:
require_once ('include/bot_token.php');
require_once ('include/controller.php');

$json_out = startCom();
$command_arr = explode(" ", $json_out->message->text);

$chatID = $json_out->message->chat->id;
$userName = userName($json_out);
$userID = $json_out->message->from->id;

if (!empty($json_out->message->text)) {
   if ($command_arr[0] == "/start") {
      sendMessage($client_token, $chatID, "Sie können nun Nachrichten vom Service Bot empfangen.\n\nIhre Telegram User ID:\n" . $userID);
   } else {
      deleteMessage($client_token, $chatID, $json_out->message->message_id);
      sendMessage($client_token, $chatID, "Es können nur Nachrichten vom Servicebot empfangen werden.");
      sleep(2);
      deleteMessage($client_token, $chatID, $json_out->message->message_id+1);
   }
}

Im Clientbot brauche ich nun eine abfrage, die die nachricht vom servicebot abfängt. ich habe schon probiert:
Code:
if (isset($json_out->message->forward_from) && $json_out->message->forward_from->id == '<HIER DIE BOT ID>')

Code:
if (isset($json_out->message->via_bot) && $json_out->message->via_bot->id == SERVICEBOT_ID) {

oder ganz einfach
Code:
if(isset($json_out->message)){

und noch paar Sachen mehr ausprobiert. Ich komme einfach nicht an diese Nachricht ran. Jetzt ist die Frage ist das mit der Standard Telegram API überhaupt möglich und wenn ja wie komme ich zu meinem Ergebnis.

Vielen Dank und liebe Grüße
Micha
 
Welche Programmiersprache? Das ist weder aus der Überschrift ersichtlich, noch aus den Code-Snippets.
 
CyborgBeta schrieb:
Welche Programmiersprache? Das ist weder aus der Überschrift ersichtlich, noch aus den Code-Snippets

Wer auf den ersten Blick nicht weiß dass das PHP ist, hat wohl nicht viel programmiert. Allein das $ Zeichen für die Variablen plus der ganze Rest. Ein Blinder sieht dass das PHP ist.

Aber davon mal ab... :daumen: 🙈

ArminiusSW schrieb:
require_once ('include/bot_token.php');
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: SuperCube
wilk84 schrieb:
Allein das $ Zeichen für die Variablen
Das $-Zeichen ist ja nun nicht gerade selten. Dennoch ist die Frage nicht richtig gestellt.
 
Weil nicht klar ist, was du willst.
 
@CyborgBeta :
Warum labberst du hier herum, anscheinend kannst du nicht helfen und
  • weißt nicht das es sich um PHP handelt
  • verstehst die Frage nicht,

also voll sinnlos Dein geschreibe, da anscheinend alle anderen hier gemerkt haben das es PHP ist und auch meine Frage ist den anderen klar....
 
Bitte den Ton wahren, Danke.

Ggf. ist eine andere Programmiersprache für dein Vorhaben besser geeignet.
Ergänzung ()

ArminiusSW schrieb:
weißt nicht das es sich um PHP handelt
Dann hättest du auch etwas über dein Setup und Infrastruktur schreiben müssen, hast du aber nicht. Wie gesagt, Frage unvollständig.
 
CyborgBeta schrieb:
....
Dann hättest du auch etwas über dein Setup und Infrastruktur schreiben müssen, hast du aber nicht. Wie gesagt, Frage unvollständig.
Sry, wollte Dich nicht angreifen. Setup und Infrastrucktur für diese Frage unwichtig. Will nur wissen ob mit PHP eine Bot zu Bot Nachricht abgefangen werden kann. Ich habe gezeigt wie ich versende mit Servicebot und wie mein Clientbot momentan aufgebaut ist.

Andere Programmiersprache: Ich kann leider nur PHP, hat man mit z.B. Python mehr Möglichkeiten bei der Bot Programmierung als bei PHP ?

Wenn mein gewünschtes Ziel mit PHP nicht erreicht werden kann wäre es nett mir das mitzuteilen, aber wenn es geht würde ich gerne wissen wie.
 
Zurück
Oben