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:
clientbot:
Im Clientbot brauche ich nun eine abfrage, die die nachricht vom servicebot abfängt. ich habe schon probiert:
oder ganz einfach
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
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