Moin!
Kurz zu mir: bin neu (5 Tage) im Bereich PHP und hab bisher VBA programmiert, damit kenn ich mich gut aus.
Zum Projekt: Helfer sollen auf eine Anfrage antworten können: ich kann von / bis Uhr. (Diese Antworten werden hinterher in Excel verarbeitet)
Mein unwissender Gedanke war:
Okay ich bekomm' vom Bot die "Von"-Uhrzeit als Text.
Ich hab diese dann geprüft und wollte als nächstes die "Bis" Uhrzeit abfragen.
Das ganz über eine $VonOderBis - Statusvariabel, damit mit nicht immer beides abgefragt wird.
Dabei habe ich gelernt, das wenn den Bot mein Script ausführt, die Variabeln resettet werden. Schade...
Dann habe ich versucht mittels UserTastatur (10ner) die Zeit abzufragen, Problem die Zahlen kommen einzeln - Neue Zahl = Neuer Aufruf = resettet
Mein Lösungsgedanke:
Deshalb meine Fragen:
Gruß pogo1104
Kurz zu mir: bin neu (5 Tage) im Bereich PHP und hab bisher VBA programmiert, damit kenn ich mich gut aus.
Zum Projekt: Helfer sollen auf eine Anfrage antworten können: ich kann von / bis Uhr. (Diese Antworten werden hinterher in Excel verarbeitet)
Mein unwissender Gedanke war:
Okay ich bekomm' vom Bot die "Von"-Uhrzeit als Text.
Ich hab diese dann geprüft und wollte als nächstes die "Bis" Uhrzeit abfragen.
Das ganz über eine $VonOderBis - Statusvariabel, damit mit nicht immer beides abgefragt wird.
Dabei habe ich gelernt, das wenn den Bot mein Script ausführt, die Variabeln resettet werden. Schade...
PHP-Code:
// zeit
// VON
$ZeitEingegeben = $json_out->message->text;
if( $VonOderBis == "von")
{
sendMessage($bot_id,$json_out->message->chat->id,"debug4:" . $ZeitEingegeben . "\n");
if( !(bool)preg_match('/^(?:2[0-3]||(([0-9]||0[0-9])||1[0-9])):[0-5][0-9]$/', trim($ZeitEingegeben)) ) // ist es ein Zeitformat?
{
sendMessage($bot_id,$json_out->message->chat->id,"Uhrzeit ungültig!\n");
} else
{
//prüfen ob Uhrzeit in bereich der Sandienst zeit liegt -> dazu die einsatzID asuwerten
$ZeitEingegebenVon = $ZeitEingegeben;
$VonOderBis = "bis";
sendMessageHtml($bot_id,$json_out->message->chat->id,"Uhrzeit gültig!\nDu hast dich ab <b>". $ZeitEingegeben . " Uhr</b> gemeldet ". $symGreenHarken);
sendMessageHtml($bot_id,$json_out->message->chat->id,"<b>Bis</b> wann kannst du? ");
}
}
// BIS
if( $VonOderBis == "bis" )
{
if( !(bool)preg_match('/^(?:2[0-3]||(([0-9]||0[0-9])||1[0-9])):[0-5][0-9]$/', trim($ZeitEingegeben)) ) // ist es ein Zeitformat?
{
sendMessage($bot_id,$json_out->message->chat->id,"Uhrzeit ungültig!\n");
} else
{
//später prüfen ob Uhrzeit in bereich der Sandienst zeit liegt -> dazu die einsatzID asuwerten
$ZeitEingegebenBis = $ZeitEingegeben;
sendMessageHtml($bot_id,$json_out->message->chat->id,"Uhrzeit gültig!\nDu hast dich ab <b>". $ZeitEingegeben . " Uhr</b> gemeldet ". $symGreenHarken);
sendMessageHtml($bot_id,$json_out->message->chat->id,"<b>Bis</b> wann kannst du? ");
$VonOderBis = "beides";
}
}
// bestätigung
if( $VonOderBis == "beides" )
{
sendMessage($bot_id,$json_out->message->chat->id,"debug 6:" . $ZeitEingegeben . "\n");
sendMessageHtml($bot_id,$json_out->message->chat->id,"Du hast dich für den Einsatz: " . $dienstID . " Tag von:" . $ZeitEingegebenVon . " bis: " . $ZeitEingegebenBis . "gemeldet " . $symGreenHarken);
$VonOderBis = "nix";
}
Dann habe ich versucht mittels UserTastatur (10ner) die Zeit abzufragen, Problem die Zahlen kommen einzeln - Neue Zahl = Neuer Aufruf = resettet
PHP-Code:
<?php
function sendKeyboard($bot_id,$chat_id,$message_text,$replyMarkup)
{
// testweise die Übergabe in die Funktion gelegt
$replyMarkup = array(
'keyboard' => array(array("1","2","3",":00"),
array("4","5","6",":15"),array("7","8","9",":30"), array("0",":",":45" ),array("/sandienst","/go")),
array('resize_keyboard' => true ),
array('one_time_keyboard' => true)
);
$encodedMarkup = json_encode($replyMarkup);
$content = array(
'chat_id' => $chat_id,
'reply_markup' => $encodedMarkup,
'text' => "Test"
);
$url = "https://api.telegram.org/bot" . $bot_id . "/sendMessage";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
?>
- Ich speichere die Eingabe in eine SQL Datenbank (oder evtl einfach in eine txt statt DB, da es max. 40 User gibt, aber das ist nebensächlich)
- schaue bei der nächsten Zeit (Eingabe) ob Von gesetzt ist, speichere dann die Bis-Zeit,
- prüfe ob beide Zahlen da sind und geb dann die Rückmeldung.
Deshalb meine Fragen:
- Gibt es in der telegram api eine Art Uhrzeit-Selector (aus der Googl-Suche: https://images.app.goo.gl/eGM34ZpSvn6Wemb37 oder ähnlich) und ich finde ihn einfach nicht?
- Gibt es eine schlauere Lösung? Dann bitte ich um Hinweise, wo ich mal gucken kann oder entsprechende Tipps in die richtige Richtung
- Andere Anregungen ?
Gruß pogo1104
Kommentar