[PHP] Problemi di base con bot di telegram

Francesco Iacomino

Nuovo Utente
6 Mar 2018
14
1
3
Buonasera ragazzi, sono nuovo del forum quindi chiedo scusa se sbaglio sezione. Non sono pratico di php e quindi non riesco a risolvere un problema con un bot di telegram.
Non riesco ad ottenere le risposta dal bot quando inserisco il comando /start.
Questo è il codice :
PHP:
<?php
define ('TOKEN', 'Mio Token');
define('API','https://api.telegram.org/bot'.TOKEN.'/');
$data=file_get_contents("php://input");
$update=json_decode($data,TRUE);
$message=$update["message"];
$text=$message["text"];
$cid=$update["message"]["from"]["id"];
function apiRequest($metodo){
$req=file_get_contents(API.$metodo);
return $req;
}
function send($id,$text){
if (strpos($text,"\n")){
$text=urlencode($text);
}
return apiRequest("sendMessage?text=$text&parse_mode=HTML &chat_id=$id");
}
if ($text=="/start"){
send($cid,"Benvenuto sul bot");
}
?>
Probabilmente voi subito capirete il problema e vi ringrazio in anticipo...
 
Ultima modifica di un moderatore:
@Francesco Iacomino
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code.gif
quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 
@Francesco Iacomino
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag Vedi l'allegato 5027 quando posti del codice, oppure la funzione codice dalla barra degli strumenti
Vedi l'allegato 5028
Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro

Grazie mille gentilissimo... Nessuna mi sa spiegare dove sbaglio? Grazie
 
function send($id,$text){
if (
strpos($text,"\n")){
$text=urlencode($text);
}
return
apiRequest("sendMessage?text=$text&parse_mode=HTML &chat_id=$id");
}
if (
$text=="/start"){
send($cid,"Benvenuto sul bot");
}
devi catturale l'output, per come hai scritto la funzione torna un valore, quindi devi recuperarlo dalla chiamata...
prova cosi.
PHP:
var_dump(send($cid,"Benvenuto"));
 
devi catturale l'output, per come hai scritto la funzione torna un valore, quindi devi recuperarlo dalla chiamata...
prova cosi.
PHP:
var_dump(send($cid,"Benvenuto"));

Innanzitutto grazie per l'interessamento, come detto io non sono praticissimo ma cmq con telegram usando il metodo webhook se provo a fare un var_dump non mi restituisce nulla. Io questo codice l ho copiato pari pari da un tutorial che ho visto su youtube solo che a lui funziona e a me no. Ho provato in qualsiasi modo ma non riesco a capire dove sia l'errore
 
return apiRequest("sendMessage?text=$text&parse_mode=HTML &chat_id=$id");
Vedi il return di apiRequest, non ha un'output ma ha il ritorno di un qualcosa, quindi non avrai mai quello da te sperato...
Procederei in questo modo:
  1. Abilito gli errori in php (lo si può fare anche sulla pagina che stai testando)
  2. Spezzetto il codice così da provare le singole parti e individuare l'eccezione (se esiste)
  3. Controllo la che la funzione apiRequest entri effettivamente nelle condizioni scritte.
Spero sia utile
 
Scusa il ritardo...purtroppo ho provato a fare di tutto ma non essendo bravo non capisco dove sbaglio...a dire il vero speravo in voi :-)
 
OK... magari se posti effettivamente codice funzionante vediamo cosa si può fare....
così a spanna immagino che il file_get_contents abbia un json valido che tu elabori....
Sempre a spanna
non è che per caso dovresti inserire dopo bot lo "/" in questo modo?
PHP:
define('API','https://api.telegram.org/bot/'.TOKEN.'/')
;
 
OK... magari se posti effettivamente codice funzionante vediamo cosa si può fare....
così a spanna immagino che il file_get_contents abbia un json valido che tu elabori....
Sempre a spanna

non è che per caso dovresti inserire dopo bot lo "/" in questo modo?
PHP:
define('API','https://api.telegram.org/bot/'.TOKEN.'/')
;

No non ci vuole ho anche provato ma non funziona
 

Discussioni simili