Domanda Risolto [SEMIRISOLTO] Bot Telegram: inlinequery restituisce NULL

Stato
Discussione chiusa ad ulteriori risposte.

DamyZoriginal

Utente Iron
30 Luglio 2019
8
4
3
17
Salve ragazzi!

La mia programmazione del Bot Telegram prosegue con non poche soddisfazioni! :)

Ho però un problema di cui mi sbatto da giorni. Nella ricerca inline di "prodotti" pescati dal database, c'è un record in particolare che manda in palla il Bot. Normalmente le API telegram restituiscono un array con TRUE se è andato a buon fine, ma ho un record che se cercato mi restituisce NULL senza che ne capisca il perché.

Nella documentazione non fa riferimento a questo risultato (https://core.telegram.org/bots/api#inlinequery), dice "Use this method to send answers to an inline query. On success, True is returned.", che poi in realtà mi restituisce un array così composto:
array (
'ok' => true,
'result' => true,
)

ma c'è un record in particolare che restituisce "NULL", e non riesco a capire perché Telegram e/o il Bot si rifiuta di elencare quel risultato. Qualche idea?
 
Salve ragazzi!

La mia programmazione del Bot Telegram prosegue con non poche soddisfazioni! :)

Ho però un problema di cui mi sbatto da giorni. Nella ricerca inline di "prodotti" pescati dal database, c'è un record in particolare che manda in palla il Bot. Normalmente le API telegram restituiscono un array con TRUE se è andato a buon fine, ma ho un record che se cercato mi restituisce NULL senza che ne capisca il perché.

Nella documentazione non fa riferimento a questo risultato (https://core.telegram.org/bots/api#inlinequery), dice "Use this method to send answers to an inline query. On success, True is returned.", che poi in realtà mi restituisce un array così composto:
array (
'ok' => true,
'result' => true,
)

ma c'è un record in particolare che restituisce "NULL", e non riesco a capire perché Telegram e/o il Bot si rifiuta di elencare quel risultato. Qualche idea?
Puoi postare la porzione di codice?
 
Ultima modifica:
Grazie per la risposta! Il codice sarebbe un po' troppo lungo da postare, ed essendo un bot non ancora ufficialmente "lanciato" e con dati sensibili, eviterei.

Proseguendo con le ricerche e i test, ho scoperto un'altra cosa molto interessante. Se cambio il valore del campo "Titolo" del record incriminato, il bot restituisce normalmente il risultato. In particolare, il record incriminato si intitola "Parco Giochi Heba". Pare che la parola "Heb" dia noie, perché se rinomino il record in "Parco Giochi Zeba" tutto fila liscio :confused:

Possibile che sia una sorta di parola proibita?
Messaggio unito automaticamente:

Dopo parecchi sbattimenti ho trovato cosa di preciso genera l'errore e ho trovato una soluzione tampone. La scrivo qui affinché possa tornare utile a chiunque si trovasse a sbatterci la testa come me...

Ho scoperto che ciò che da' noia alle query inline di Telegram è qualunque stringa INIZI con la lettera H oppure contenga " H" (spazio seguito da lettera H maiuscola) al suo interno. Non chiedetemi perché, non so spiegarmelo (magari qualcuno che leggerà in futuro queste righe potrà dare una spiegazione plausibile).

Soluzione tampone: individuo via codice i campi che rispondono a questi requisiti e raggiro questo (bug? controllo sicurezza? mah) "prendendo in giro Telegram" con un %20 che viene codificato come spazio ma visto come altro carattere da Telegram. Posto il codice:

$titolo = str_replace(" H", "%20H", $titolo);
$primaLettera = substr($titolo, 0, 1);
if ($primaLettera == "H") $titolo = "%20".$titolo;

Grazie cmq per l'attenzione! ;)
 
  • Mi piace
Reazioni: zipippino
Stato
Discussione chiusa ad ulteriori risposte.