Creare un Bot Telegram: guida passo passo

In questa breve guida vedremo come creare un semplice echo bot su Telegram. Il bot non svolge nessuna azione utile se non quella di ripetere ciò che gli scriviamo.

Questa guida è rivolta a chi ha dimestichezza con il linguaggio PHP e dispone di un account Dropbox.

Inziamo! Per prima cosa procediamo ad attivare un account gratuito sulla piattaforma Heroku all’indirizzo https://www.heroku.com/.

Su Heroku selezioniamo sign up e compiliamo il form di iscrizione con i campi obbligatori (first name, last name, email). Selezioniamo come primary language PHP e facciamo click su create free account.

Riceveremo una email con un link di conferma. Attraverso quest’ultimo link completiamo la creazione del nostro account Heroku impostando la password dell’account. Per impostare la password scegliamo una stringa di almeno 8 caratteri che contenga lettere e numeri, almeno una lettera maiuscola ed una minuscola e almeno un carattere speciale. Siamo pronti a fare il primo login su Heroku.

Il passo immediatamente successivo è quello di creare un’applicazione su Heroku. Selezioniamo create new app (simbolo +) e impostiamo:

App Name: il nome della nostra applicazione, es. echobot
Region: Europe

Per completare facciamo click su create app.

Non ci resta che impostare Dropbox come metodo di deployment delle applicazioni su Heroku. Facciamo click su Dropbox nella sezione deployment method. Si aprirà una finestra del browser che ci chiede di autenticarci su Dropbox e facendo click su consenti, autorizziamo il dialogo tra Heroku e Dropbox. Al termine di questa fase sarà creata una cartella sul nostro account Dropbox denominata Applicazioni/Heroku/{APP NAME} dove {APP NAME} corrisponde al nome dell’applicazione impostata precedentemente.

heroku1

Scarichiamo da questo link gli script PHP necessari per il funzionamento del nostro bot. Carichiamo nella cartella appena creata su Dropbox i file:

  • index.php
  • Procfile
  • composer.json
  • execute.php

heroku2

Torniamo su Heroku e facciamo click su deploy nella sezione deploy changes. Se tutto è andato bene riceveremo come messaggio: Your app was successfully deployed. Facendo click su view avremo lo url della nostra applicazione PHP. Nel caso di esempio lo url è https://echobot.herokuapp.com/.

Adesso è ora di creare il nostro bot su Telegram. Per procedere alla creazione di  un bot dobbiamo chiedere ad un bot chiamato BotFather di crearlo. Questa operazione può essere effettuata tramite l’applicazione mobile scrivendo a @BotFather oppure dal client web all’indirizzo https://web.telegram.org.

Dopo aver aperto la conversazione digitiamo il comando /newbot e poi rispondiamo ai messaggi del bot.

BotFather ci scrive di scegliere il nome del bot: Alright, a new bot. How are we going to call it? Please choose a name for your bot. Rispondiamo: Echo e poi invia.

Successivamente BotFather ci chiede di scegliere lo username del bot: Good. Now let’s choose a username for your bot. It must be end in “bot”. Like this, for example: TetrisBot or tetris_bot. Rispondiamo: echobot e poi invia.

Se lo username è disponibile ed è valido il bot ci risponde come segue:

Done! Congratulations on your new bot. You will find it at telegram.me/{YOUR BOT NAME}. You can now add a description, about section and profile picture for your bot, see /help for a list of commands.
 
Use this token to access the HTTP API:
{YOUR TOKEN HERE}
 
For a description of the Bot API, see this page: https://core.telegram.org/bots/api

I campi {YOUR BOT NAME}, {YOUR TOKEN HERE} saranno opportunamente valorizzati, in particolare il secondo dei due è fondamentale per le fasi successive di configurazione del bot.

Apriamo il file register.php e individuiamo le seguenti righe:

$WEBHOOK_URL = 'https://{APP NAME}.herokuapp.com/execute.php';
$BOT_TOKEN = '{TOKEN}';

Sostituiamo {APP NAME} con il nome dell’applicazione Heroku creata ad inizio tutorial e {TOKEN} con il token comunicato dal FatherBot.

Carichiamo su Dropobox il file register.php ed effettuiamo un nuovo deploy. A deploy terminato visitiamo con un browser lo url https://{APP NAME}.herokuapp.com/register.php. In questo modo invocheremo lo script register.php che ha lo scopo di comunicare a Telegram l’indirizzo dell’applicazione web che risponderà alle richieste del bot. Se tutto è andato bene la pagina web mostra il seguente messaggio:

{"ok":true,"result":true,"description":"Webhook was set"}

Rimuoviamo il file register.php da Dropox ed effettuiamo un ultimo deploy.

bot

Il nostro bot è pronto. Non ci resta che aprire un client Telegram (app o web) ed avviare una chat con il bot cercandolo attraverso lo username scelto in precedenza.

Aggiornamento del 29/09/2016

  • Se vuoi approfondire come funziona lo script execute.php, che è il cuore del bot, puoi leggere il codice commentato qui.
  • Se vuoi realizzare un bot che risponde a specifiche richieste testuali, qui trovi un esempio.
  • Se vuoi realizzare un bot che risponde diversamente a seconda del tipo di messaggio (audio, video, etc.) ricevuto, qui trovi una bozza.
  • Se vuoi realizzare un bot che risponde ad ogni messaggio inviandoti un’immagine, qui trovi un esempio.
  • Se vuoi utilizzare la keyboard standard, qui trovi un esempio.
  • Se vuoi utilizzare la inline_keyboard, qui trovi un esempio.

Questions?

Have a question about this post or anything else? Ask away on Twitter or in my AMA repo.

182 thoughts on “Creare un Bot Telegram: guida passo passo”

  1. La ringrazio per il suo chiarissimo tutorial. Sono alle prime armi con i linguaggi di programmazione e ho qualche difficolta’ a capire il file execute.php. Sarebbe cosi’ gentile da commentarlo per noi principianti?
    La ringrazio anticipatamente!

  2. Buongiorno e grazie per la guida!
    Vorrei creare bot che abbia due funzioni: pubblicare nei gruppi le notizie di determinati siti web e una protezione contro il flood. Ho cercato tra le api di Telegram ma per me è difficile raccapezzarsi.

    1. Ciao Vincenzo,
      la tua richiesta mi ricorda il vecchio IRC 😛
      Esistono dei bot Telegram che consentono di creare altri bot senza scrivere neppure una riga di codice (es. @Paquebot, @chatfuelbot, @Manybot).
      Per quanto riguarda l’amministrazione dei gruppi (controllo flood, antispam, etc.) esiste su GitHub un progetto https://github.com/SEEDTEAM/TeleSeed che però non ho avuto ancora modo di testare.
      A presto,
      ^SC

  3. Salve, ottima guida ma una domanda…
    Come faccio a far risponde ai comandi il bot?
    es.
    Domanda 1 —> Risposta 1 etc..

    Può linkarmi il codice? O qualche esempio commentato?

    Grazie Mille

    1. Ciao Riccardo,
      grazie per aver apprezzato il mio lavoro.
      Qui https://gist.github.com/salvatorecordiano/2fd5f4ece35e75ab29b49316e6b6a273 trovi un esempio che spero faccia al caso tuo.
      Se non hai molta dimestichezza con la programmazione potresti ottenere un risultato simile a quello da te atteso utilizzando @chatfuelbot oppure @Manybot.
      Essi sono dei bot Telegram che consentono di creare altri bot senza scrivere neppure una riga di codice.
      A presto,
      ^SC

  4. scusa, ho apprezzato molto il tuo lavoro, ma, non riesco a far rispondere il mio bot, poi quando inserisco il register.php, ciò che mi appare a schermo è silence is golden, che problema ho?

    1. Ciao Pietro,
      se la tua applicazione su Heroku ha come App Name echobot, allora il suo indirizzo web corrispondente è probabilmente https://echobot.herokuapp.com/
      Quando richiami lo script register.php devi richiamarlo attraverso lo url https://echobot.herokuapp.com/register.php
      Se ti appare Silence is golden vuol dire che hai richiamato lo url https://echobot.herokuapp.com/ e non il precedente.
      A presto,
      ^SC

  5. Ciao Salvatore, ottima guida 😉

    Ti volevo chiedere solo un’informazione, come faccio a capire se l’utente invia una foto, un video o un messaggio audio?

    So che Telegram mette a disposizione i comandi photo,audio,video… ma non capisco come dichiararli nel codice qui sotto
    $message = isset($update[‘message’]) ? $update[‘message’] : “”;
    $messageId = isset($message[‘message_id’]) ? $message[‘message_id’] : “”;
    $chatId = isset($message[‘chat’][‘id’]) ? $message[‘chat’][‘id’] : “”;
    $senderId = isset($message[‘chat’][‘id’]) ? $message[‘chat’][‘id’] : “”;
    $firstname = isset($message[‘chat’][‘first_name’]) ? $message[‘chat’][‘first_name’] : “”;
    $lastname = isset($message[‘chat’][‘last_name’]) ? $message[‘chat’][‘last_name’] : “”;
    $username = isset($message[‘chat’][‘username’]) ? $message[‘chat’][‘username’] : “”;
    $date = isset($message[‘date’]) ? $message[‘date’] : “”;
    $text = isset($message[‘text’]) ? $message[‘text’] : “”;
    $text = trim($text);
    $text = strtolower($text);
    header(“Content-Type: application/json”);

    in modo da utilizzarli poi come variabili come qui sotto

    if($text==”ok”)
    {
    $response = “Ciao $firstname, benvenuto!”;
    }

    Grazie Mille,
    A presto 😉

  6. Salve penso che ci sia stata una dimenticanza nei file da caricare du dropbox manca il file register.php…correggetemi se sbaglio

  7. Ciao Salvatore, ho seguito la guida passo passo ed è andato tutto per il meglio.
    Però ho notato che il bot funziona solo in chat uno-a-uno, in quelle di gruppo non risponde. Come mai?
    Grazie per la guida e per l’aiuto 🙂

    1. Ciao Domenico,
      è corretto quello che dici. Di default ogni bot Telegram non riceve tutti messaggi dei gruppi a cui è stato aggiunto.
      Per consentirgli di ricevere i messaggi dei gruppi devi disabilitare la privacy mode.
      Scrivi al @BotFather il comando /setprivacy e poi segui le istruzioni per disabilitare la privacy mode.
      Trovi maggiori dettagli qui https://core.telegram.org/bots#privacy-mode

      A presto,
      ^SC

      1. Ti ringrazio! Funziona tutto alla grande! 🙂 Complimenti per la guida e per la preparazione, salvo il blog tra i miei preferiti!

  8. Ciao Salvatore, sono sempre io, Domenico.
    Scusami se ti disturbo ma mi sto divertendo un casino con questi bot 🙂
    Avrei un paio di domande da farti, ovvero:
    E’ possibile utilizzare un normale hosting tipo altervista al posto di heruko?
    E poi, cosa più importante, quando provo a richiamare pagine esterne a heroku con file_get_contents mi ritorna un ‘false’, come posso aggirare il problema? Se volessi “caricare il sorgente” di una pagina esterna come posso fare?
    Ti ringrazio in anticipo e mi congratulo ancora per la preparazione.
    Domenico.

    1. Ciao Domenico,
      per ricevere i messaggi utilizzando la Telegram Bot API hai due modi:
      1) i webhooks (come illustrato nel tutorial);
      2) il metodo getUpdates.
      Nel primo caso l’approccio è di tipo push: Telegram chiama il tuo script PHP ogni qualvolta viene scritto un messaggio al Bot. In questo caso è necessario disporre di un certificato SSL (trusted o self-signed), altrimenti Telegram non ti notifica.
      Nel secondo caso l’approccio è di tipo pull: sei tu periodicamente (polling) a chiamare il metodo getUpdates e processare gli aggiornamenti.
      Se attivi i webhooks come illustrato nello script register.php non puoi invocare il metodo getUpdates. E’ necessario cancellare il webhooks per far funzionare il getUpdates.
      Qui è spiegato quanto detto fin qui https://core.telegram.org/bots/api#getting-updates
      Per quanto riguarda il problema dell’utilizzo di file_get_contents, credo che Heroku non lo consenta e non consenta neppure l’utilizzo di curl che è una valida alternativa al file_get_contents.

      A presto,
      ^SC

  9. Ciao Salvatore, ti ringrazio anch’io per la tua guida.
    Volevo chiederti: come posso far sì che il mio bot risponda con immagini/audio/video a determinati messaggi?

  10. Ciao Salvatore,
    ottima guida.

    Come posso far inviare una foto al mio bot?
    Del tipo che invio “immagine” e lui invia una foto che ho slavato nel mio spazio web… E’ possibile?
    Da TelegramCore non capisco come si possa fare con PHP…
    Puoi aiutarmi magari linkandomi un codice già fatto su Git?
    Grazie Mille

  11. Ciao Salvatore,
    Ottima guida molto utile.

    Volebo chiederti se conoscevi un servizio alternativo ad Heroku oppure una estensione/funzione che consenta di caricare i file via FTP per ridurre i tempi di Deploy.

    Grazie mille,
    Ciao

  12. Ciao, Salvatore.

    Hai per caso il codice del file execute.php che permetta l’invio di più risposte possibili ad uno stesso messaggio del tipo:
    Utente scrive “Ciao”, io rispondo con “Ciao, come va?” , “Che piacere” etc. etc.. in maniera random? Magari prelevandone da un Array…
    Sai aiutarmi?
    Mi posti il codice se ne hai uno disponibile? 😉
    Grazie Mille per la cortesia,
    Ottima Guida! Continua così!

  13. Ciao,ho seguito tutti i passaggi , dopo ho seguito l’altra guida “Se vuoi realizzare un bot che risponde a specifiche richieste testuali, qui trovi un esempio”… il problema è che nei gruppi telegram non funziona…se vado in privato e scrivo “prova” lui mi risponde “prova!” come da me scelto… nei gruppi non va se non metto lo “/” prima . Consigli?

    1. Ho risolto guardando un altro commento grazie comunque 🙂 . Altra domanda vorrei creare un bot simile a spacobot (esempio: io scrivo insulta marco lui mi risponde una volta marco puzzi e un altra volta marco sei scemo (PER ESEMPIO) come posso fare a mettere risposte diverse a una domanda che cambia rispetto al nome che scrivo nel comando insulta? non so se mi sono spiegato bene in caso cerco di spiegarti meglio 😉 scusa per il disturbo.

  14. Ciao, vorrei una dritta su come faresti tu a fare quello che vorrei fare. 🙂 Allora, io un bot (server con cronjob) già ce l’ho e in genere mi invia delle email quando si verifica una particolare condizione. Quello che vorrei fare è sostituire la mail con un normale messaggio che il bot Telegram posta da sé come fosse una notifica. Ho provato da linea di comando (quindi non ancora da PHP) e sono riuscita ad inviarmi dati in questo modo:

    curl -s -X POST https://api.telegram.org/botToken/sendMessage -d text=”ciao ciao” -d chat_id=0000000 | jq .

    Sospetto, però, che questo messaggio arriverebbe soltanto a me e non a tutti quelli che hanno in bot. Sbaglio?

  15. Ho seguito vari tutorial e questo è il migliore! Finalmente sono riuscito a creare un Bot senza usare ManyBot. Ti stimo grazie mille per la guida ^^

  16. ciao Salvatore
    sono ‘nuovo’ di telegram ..
    la tua guida e’ fatta molto bene ..
    sto facendo alcune prove con php per messaggi ..
    ho creato il bot, ricevuto il codice token, il mio dubbio e’ il paarametro “chat_id” come va valorizzato?

    grazie in advance
    saluti

    Lucio

    1. Ciao Lucio,
      se devi rispondere al messaggio che ti arriva, dovresti usare lo stesso chat_id per rispondere.
      In particolare usando il metodo sendMessage il chat_id è “unique identifier for the target chat or username of the target channel”.

      Spero di aver risposto.
      A presto,
      ^SC

  17. Ciao, ottima guida.
    Avrei necessità di creare qualcosa tipo @strangerBot sai aiutarmi?
    Hai un codice già scritto di esempio?
    Grazie Mille

  18. Ciao Salvatore. Ho letto la tua guida e sono rimasto sempre pi affascinato da questo mondo.
    Ma mi sorge un dubbio. C’è un modo per fare in modo che ad un specifico comando, io possa ricevere una notizia presa (per esempio) da un rss o da una pagina twitter?
    Ipotesi: “/news” e il bot mi stampa la prima notizia in alto a prescindere che sia o no con foto.
    Vorrei non usare più bot già fatti per questo, dato che ne ho tipo 600 con news con auto-stamp, vorrei crearne uno tutto mio con richieste specifiche!
    Grazie!

  19. Ciao ottima guida, volevo sapere come gestire le risposte, o meglio:

    if(strpos($text, “/start”) === 0 || $text==”ciao”)
    {
    $response = “Salve $firstname $lastname, benvenuto sul bot del Quinto Quarto! \n \nScrivi la parola PRENOTA per prenotare un tavolo, oppure la parola MENU per conoscere il menu di oggi!”;
    }
    elseif($text==”prenota”)
    {
    $response = “Indica il numero di coperti da riservare per il giorno $date?”;
    $response = $response.”\n Volete cambiare giorno? Scrivete la parola GIORNO”;
    if ($text==”giorno”) {
    $response = “Scrivi il giorno in cui vuoi prenotare un tavolo nel formato gg-mm-aaaa (ad esempio $date)”;
    if (var_dump(validateDate($text))==true){
    $response = “Indica il numero di coperti da riservare per il giorno $text?”;
    }
    } elseif {
    if (is_numeris($text)){
    $response = “La prenotazione è andata a buon fine!”;
    }
    }}

    In pratica posso controllare la risposta e poi fare un’altra domanda?

    1. Ciao Federico,
      per gestire i due step, dovresti mantenere lo stato dell’utente.
      Non è così semplice da spiegare. In parole povere vuol dire che dopo che l’utente risponde alla prima domanda devi memorizzare il fatto che l’utente è al secondo step.
      Spero di essere stato chiaro.

      A presto,
      ^SC

          1. Un db si rimedia, ma credo che il problema sia l’utilizzo del metodo webhook. Spiegami una cosa sul funzionamento del webhook: in pratica quando invio un messaggio lui mi ricarica la pagina https://miobot.it/execute.php giusto?
            Ecco, io posso inviare un GET o un POST alla pagina execute.php con il chat_id?
            Oppure, in base alla risposta, posso indirizzare su un’altra pagina php? Oppure non funzionerebbe?

          2. Provo a risponderti raccontandoti due possibili scenari considerando solo lo scambio di messaggi utente/Bot e viceversa:

            1) Botta e risposta
            Quando l’utente scrive al bot viene chiamato da Telegram il webhook. Il webhook chiama il tuo script php (es. execute.php), se esso risponde restituendo un oggetto JSON di risposta, tu replichi al messaggio ricevuto con un altro.

            2) Ricezione messaggio e stop
            Riprendendo il primo scenario nessuno ti vieta di ricevere attraverso il webhook il messaggio inviato dall’utente e non fare nulla. Oppure rispondere all’utente facendo una chiamata al metodo sendMessage. Inoltre, aggiungo che noto il chat_id, il Bot può scrivere all’utente quando vuole, a condizione che l’utente non abbia fatto stop del Bot.

            Adesso entriamo nello specifico delle tue domande:
            – Lo script execute.php è il destinatario delle chiamate webhook e può essere lo script stesso a rispondere ai messaggi facendo uso della response oppure chiamando il metodo sendMessage.
            – La richiesta HTTP GET o POST su execute.php la fa Telegram.
            – Lo script execute.php può includere tutti i file del caso per processare ogni messaggio ricevuto e fare ciò che è necessario.
            – Uno script diverso da execute.php servendosi del metodo sendMessage può inviare messaggi agli utenti per conto del Bot.

            Spero di aver risposto a tutto.

            A presto,
            ^SC

  20. Ok perfetto sei stato chiaro ed era quello che immaginavo, ma all’atto pratico come invoco da execute.php un altro script in base alle varie ipotesi nel ciclo if else? (grazie per la pazienza!)

  21. Salve, io vorrei realizzare una funzione nel mio bot in modo che se digito “ciao” il bot sia in grado di rispondere “Ciao, @username!”. Sono riuscito a fare qualcosa di molto funzionante, ma solo in chat privata con il bot; mentre, se provavo in un gruppo con dentro il bot in questione non rispondeva.
    Saprebbe darmi delle delucidazione a riguardo?
    Grazie mille.

    1. Ciao Davide,
      probabilmente non hai tenuto conto che di default ogni bot Telegram non riceve tutti messaggi dei gruppi a cui è stato aggiunto.
      Per consentirgli di ricevere i messaggi dei gruppi devi disabilitare la privacy mode.
      Scrivi al @BotFather il comando /setprivacy e poi segui le istruzioni per disabilitare la privacy mode.
      Trovi maggiori dettagli qui https://core.telegram.org/bots#privacy-mode

      A presto,
      Salvatore

      1. Ciao Salvatore, ho controllato ma avevo già disabilitato la privacy mode. Secondo te cosa potrebbe andare storto allora?

  22. A chi dovesse interessare ho risolto i problemi di memorizzazione in un db remoto attraverso CURL di php. Per quanto riguarda la memorizzazione in base alle farie risposte date, salvo tutto in una sessione.

        1. Ciao salvatore, stranamente da ieri sto provando a scaricare i tuoi github come eco o domanda 1 e domanda 2 ma non accade nulla nonostante abbiamo un webhost sul mio sito con certificato ssl

  23. Salve, ho cercato invano un app che facesse questo, senza esito positivo. Chiedo agli esperti se con i bot si potrebbe realizzare.
    Gli smartphone hanno il blocco chiamate per alcuni numeri e il sistema funziona.

    Volevo chiedere se sarebbe possibile fare in modo che una chiamata ricevuta da certi numeri venisse girata verso un mex vocale tipo “gestore, il numero da lei … non è raggiungibile” o che faccia risultare occupato il cell.

    Ho visto che esiste il bot occupato che avvisa in caso di cell spento o non raggiungibile.

    Grazie, buona giornata

    1. Ciao Luca,
      non sono sicuro di aver capito bene. In pratica tu vorresti che le chiamate di alcuni numeri in “blacklist” venissero trasferite o rifiutate.
      Per fare ciò non credo sia necessario un bot ma usare una funzionalità come il blocco chiamate disponibile su iOS (dalla versione 7) e su Android.

      Diverso è, invece, il comportamento del bot @chiamato_bot (link http://www.moosa.it/chiamato.html) che sfrutta il trasferimento di chiamata in caso di telefono spento o non raggiungibile della rete GSM per notificare gli utenti delle chiamate quando non disponibili.

      A presto,
      ^SC

  24. Ciao Salvatore mi piacerebbe farti vedere meglio il perchè improvvisamente il mio webhook ha smesso di rispondere
    invano è stato ripartire da zero, comprare un nuovo certificato SSL, creare un nuovo bot e attivare un nuovo webhook …

    il webhook mi dice {“ok”:true,”result”:true,”description”:”Webhook is already set”}
    e non vi sono errori nel execute

    inoltre ho provato a inviare anche il certificato seguendo guide on line

    // NON APPORTARE MODIFICHE NEL CODICE SEGUENTE
    $API_URL = ‘https://api.telegram.org/bot’ . $BOT_TOKEN .’/’;
    $method = ‘setWebhook’;
    $parameters = array(‘url’ => $WEBHOOK_URL,
    ‘certificate’ => @$CERT);
    $url = $API_URL . $method. ‘?’ . http_build_query($parameters);

    ma nulla invio il messaggio ma non ottengo nessuna risposta =(

    ho provato sia il codice eco sia il codice quello con domanda 1 e domanda 2 ….

    mi puoi aiutare ?

  25. Ciao Salvatore,
    ti chiedo un consiglio se puoi aiutarmi. Io non so astutamente programmare. Avrei bisogno di creare un semplice bot di e commerce per telegram con 5/6 passaggi e 2/3 prodotti integrato poi con paypal o stirpe per il pagamento. Credi che me la posso cavare con manybot o similari. Oppure devo ricorrere a servizi più complessi quali msg.ai, api.ai, motion.ai o Commersational. Oppure addirittura ad uno sviluppatore?

      1. Grazie! Trovo difficile trovare qualcuno che si occupa di questa tipologia di sviluppi. Hai qualche consiglio su come posso indirizzarmi?
        Ciao e grazie ancora

        Simone

  26. Ciao, ho seguito la guida ma quando contatto il bot lui non riceve i messaggi e vicino al messaggio c’è l’iconcina dell’orologio. Cosa portebbe essere andato storto?

  27. Salve Salvatore, prima cosa ottima guida. Forse la migliore in circolazione.
    Volevo chiederti come faccio a salvare il messaggio/foto dell’utente su un database ?!

    1. Ciao Simone,
      grazie per i complimenti.
      Per il messaggio testuale puoi utilizzare l’estensione PDO di PHP. Ti consiglio di cercare qualche guida allo scopo.
      Per quanto riguarda la foto dell’utente devi prima persistere l’immagine sul tuo file system e poi procedere alla memorizzazione del percorso dell’immagine sul database.

      A presto,
      Salvatore

  28. Ciao Salvatore,
    perdona se disturbo le tue vacanze estive ma avrei bisogno di un chiarimento.
    Ho già un canale telegram, al quale vorrei abbinare un bot che, su richiesta, può fornire determinate risposte “libere” (cioè scritte da me) a chi lo interroga.
    Credi sia possibile implementarlo?
    Ne avrei necessità per lavoro, ho apprezzato il tuo lavoro qui e se puoi ti prego di contattarmi privatamente, grazie.

  29. Ciao,
    ottimo, sono partito da questo tutorial e vorrei provare ad aggiungere dei bottoni con keyboard.
    Hai qualche esempio?

    Grazie 1000

  30. Ciao Salvatore, ottimo tutorial.
    Volevo chiederti se è possibile inviare messaggi ad un numero telegram ma non in modalità bot.
    Grazie

  31. Ciao,
    partendo sempre dal tuo codice sto cercando di aggiungere un inline_keyboard per inserire 2 bottoni in una determinata risposta in modo da semplificare l’azione successiva.
    Hai un esempio?
    Ho cercato su internet ne non sono riuscito a farli funzionare.

    Grazie ancora
    Gianluca

  32. Ciao Salvatore! Fantastica guida davvero! Potresti crearne anche una su come usare la tastiera personalizzata oppure aiutarci dai commenti? Io sto provando ad inserirla ma brancolo nel buio! Grazie!

  33. Ottima guida. Sono riuscito a seguirla senza problemi e sono riuscito a terminare con successo tutti i passaggi. Ho creato il bot e ho utilizzato l’esempio per rispondere a determinati messaggi per riuscire ad avere una risposta dal bot. Nonostante abbia seguito pedissequamente tutti i passaggi il bot non da alcun segno di vita, non risponde a nessuno messaggio. E’ possibile che sia cambiato qualcosa?

  34. Guida molto utile, complimenti.
    La mia necessità è quella di sviluppare un bot che ogni 60 minuti vada a cliccare un pulsante creato da un altro bot (in un altra chat, ovviamente); pensi sia possibile? Potrebbe andare bene anche senza timer, ad esempio dicendogli di cliccare su quel pulsante dopo che è stato digitato qualcosa nella tastiera… il problema rimane questo: può un bot “spostarsi” in un altra chat e fare un’operazione?

    Grazie ancora 🙂

  35. Ciao
    per prima cosa complimenti per la guida, davvero impeccabile.
    Volevo chiederti come posso prendere il nome di un utente in maniera casuale da un gruppo.
    L’utilizzo è quello di sorteggiare in modo casuale una persona nel gruppo per far svolgere un determinato lavoro. Ad esempio (“Mario è il tuo turno”). Spero di essermi spigato.
    Grazie in anticipo e ancora complimenti.

  36. Mi unisco ai complimenti di tanti altri lettori.
    Un bot deve per forze essere tra i membri del gruppo nel quale si vuole che operi?
    Per esempio: se io voglio inoltrare un post dal gruppo A del quale sono membro al gruppo B del quale sono amministrtore, posso farlo senza dover far inserire il bot tra gli utenti del gruppo A?
    Grazie mille per la tua disponibilità,
    Camilla

      1. Grazie per la risposta Salvatore.
        Ma anche l’utente deve essere “autorizzato” dall’amministratore del gruppo A, immagino.
        Qui, invece, si tratta di fare un auto-forward di messaggi da un canale a un gruppo, sempre nell’ambito di Telegram.

        1. Ciao Camilla,
          no. Il tuo problema è voglio inoltrare un post dal gruppo A del quale sono membro al gruppo B del quale sono amministratore.
          Tu puoi essere un utente qualsiasi del gruppo A e rimanere in ascolto dei messaggi scritti nel canale A, invece per pubblicare nel canale B devi essere amministratore.

          A presto,
          Salvatore

          1. Grazie, Salvatore. E buon 2017, anche se un poco in ritardo.

            Quindi, poiché io sono un utente del CANALE A e amministratore del GRUPPO B, ci sarebbe la possibilità di usare un bot per inoltrare automaticamente al gruppo B i messaggi che ricevo dal canale A, senza che l’amministratore del canale A debba autorizzare il bot?
            PS – Non c’è nulla di illegale; il motivo è squisitamente personale.

            Grazie,
            Camilla

  37. Salve, Volevo sapere se vi sia una soluzione da integrare in un sito web per poter inviare un messaggio ad un utente telegram. Grazie

  38. Ciao Salvatore,
    gradirei ricevere delle info su come programmare un bot che permetta di fare la seguente operazione per la mia scuola (non conosco il linguaggio di programmazione PHP):
    nel momento in cui viene inserita una nuova circolare sul sito web della scuola (per ogni circolare c’è una pagina), gli utenti che partecipano a quel bot ricevono istantaneamente il messaggio dell’inserimento della circolare.

    Grazie anticipatamente.

  39. Ottima guida Salvatore, volevo chiedere, io voglio aggiungere un bot nel gruppo che se tipo invento il comando /webshot {LINK SITO} fa lo screen della pagina o se tipo faccio /weather {CITTÀ} da il meteo della città. Vorrei sapere se si può fare un codice così, attendo risposta =)

  40. Ciao Salvatore,
    prima di tutto grazie per la guida.

    Volevo porti tale domanda:
    Qualora volesssi ricevere dal bot gli aggiornamenti di un determinato sito che garantisce il suo risultato attraverso json, mi basterebbe semplicemente passare alla funzione file_get_contents tale url e poi successivamente gestire i vari oggetti, è coretto ?

    Grazie
    Daniele

  41. Ciao Salvatore,
    ottimo sito, e ottima mini guida per cominciare con un Bot Telegram.

    Avrei solo un problema…
    Non riesco a farlo funzionare e non capisco il motivo.

    Ho seguito tutto passo passo e provando con Postman risponde perfettamente… Solo che non parla né in privato né in chat. E ho anche disabilitato la privacy.

    Hai qualche idea di quali potrebbero essere i motivi?

    Ho provato a sostituire sendMessage con messages.sendMessage ma non è cambiato nulla…

    non capisco 🙂

  42. Buongiorno! Guida stupenda 🙂 Spero di avere la fortuna di avere una risposta anche io 🙂 ne sarei felicissimo!!!!

    Ho fatto il mio bot su telegram, con PHP, e sono riuscito ad unire Heroku postgres per il database del mio bot. In questo modo sono riuscito a fare un minimo di similarità per tra domanda al bot e domanda presente nel DB.

    $result = pg_query($pg_conn, “SELECT question, answer FROM answers”);

    while ($row = pg_fetch_row($result)) {

    similar_text($text,”$row[0]”,$percent);
    if($percent>70){
    $response = “$row[1]”;
    }
    }

    Ora, quello che vorrei fare, sarebbe cambiare l’evento di trigger del bot: ovvero far si che il mio bot scriva a tutti gli utenti che lo hanno nella loro chat ogni volta che viene inserito un nuovo valore in una tabella, fare quindi una newsletter!

    Io ho la tabella answer, ma anche la tabella news nel mio DB. Quello che vorrei fare è inviare un messaggio 1-1 a tutti gli utenti ogni volta che viene inserita una riga all’interno della tabella news. Quindi al posto di if ($text= bla bla bla) una cosa tipo if( “nuova riga nel db”) allora $response=select nuova riga from news;

    vedo che il bot risponde sempre e solo con l’interazione testuale che parte dall’utente..se io gli scrivo qualcosa, lui fa qualcosa. Non si può cambiare questo “trigger”? ovvero se io inserisco nel db, lui fa qualcosa, farlo rispondere senza che prima io gli scriva del testo!

    Grazie!!

  43. Ciao salvatore, complimenti per le guide, vengo al dunque, ho creato un bot per un gruppo ed ho la necessita che un modulo, mi permette di rispondere alla richiesta di un utente del bot, però direttamente da questo e non preimpostando una domanda. come faccio? grazie in anticipo

    1. Ciao!
      Credo che non si possa fare immediatamente, nel senso che se l’utente scrive sul gruppo al bot, il bot può rispondere in privato solo se l’utente ha già parlato con il bot precedentemente.

      A presto,
      Salvatore

  44. Ciao,
    bellissima guida,
    vorrei sapere se secondo te è possibile fare un bot che “analizzi” un sito (di terze parti) e mi notifichi quando ci sono novità (ad esempio controlla ogni ora se viene pubblicato un articolo).
    Se si, hai qualche esempio da cui posso prendere spunto?
    Saluti e grazie.

  45. Buongiorno, complimenti per il post e per il codice ben commentato…
    Ho eseguito tutto con Heroku e funziona perfettamente… Ma se metto tutto su un mio server con https non funziona…
    Hai qualche suggerimento sul codice
    grazie ancora e complimenti

      1. Ho risolto e non so come… Ho riprovato ora dopo tempo a creare un BOT e funziona.
        Probabilmente il certificato SSL non era valido e si è attivato dopo giorni.
        Ma questo rimarrà un mistero, grazie lo stesso e a presto

  46. Ciao,

    grande bella guida. Ho anche creato un bot col metodo $response = $client->sendMessage ma non riesco a metterlo in loop (mi serve che risponde la stessa cosa fino allo stop). Hai qualche idea?

    1. Ciao Pasquale,
      mi spieghi meglio cosa intendi?
      Vorresti che il bot scrivesse la stessa cosa ad ogni tuo messaggio fino al messaggio di stop
      oppure che scriva continuamente la stessa cosa finchè non gli scrivi stop?

      A presto,
      ^SC

  47. Ciao Salvatore,
    per caso sapresti spiegarmi come poter mandare un messaggio a tutte le chat (gruppi compresi) in cui è presente il mio bot? Per esempio per mandare un messaggio di news “Versione bot aggiornata, ecc ecc”. Grazie mille,
    Davide.

  48. Ciao, complimenti per il blog. Spiegato tutto in maniera semplice e chiara 😉 Ho creato il mio primo bot e vorrei arrivare ad uno step successivo. Quando l’utente inserisce un dato, vorrei che questo fosse memorizzato per poi essere rielaborato successivamente e confrontato con il risultato precedente. Dove posso memorizzare le variabili? Posso memorizzarle in Telegram diverse per ogni utente che utilizza il bot o devo utilizzare un mio database esterno per poi andare a recuperare il tutto? Posso far ripartire lo script dopo un tempo prefissato? Grazie mille

    1. Ciao Antonio,
      grazie per i complimenti.

      E’ necessario integrarsi con un database o qualcosa di simile per memorizzare le informazioni e tenere traccia dello stato del bot per ciascun utente.

      A presto,
      Salvatore

  49. Complimenti per l’ìnteressante esempio, ben spiegato! Ho testato con successo il bot che risponde a specifiche richieste testuali. Se ora volessi prendere le risposte da una base dati, quale tipo potrei installare e dove? Su Dropobox è possibile? Puoi eventualmente fare un esempio?

    Grazie in anticipo per la risposta.

    1. Ciao Carlo,
      DropBox è utilizzato solo per pubblicare i file sull’hosting di Heroku.
      Su Heroku è possibile utilizzare i database ma non sono sicuro che sia gratuito.

      Se disponi di un tuoi hosting puoi facilmente integrare Bot con qualunque base dati.

      A presto,
      Salvatore

  50. Ciao Salvatore, ma se volessi far rispondere il bot ad un determinato comando, una lista di list con pulsante in-line come faccio ?

    Ho provato a googlare ma non ho trovato nulla.

    Grazie

  51. Ciao Salvatore!
    Infiniti grazie per la tua guida! Mi hai permesso di iniziare ad approcciare il mondo della programmazione in maniera più serena!!!

    Ti importuno perché provando a rielaborare la inline keyboard da te proposta in modo da ottenere un messaggio di risposta alla pressione di un tasto, non ho avuto risultati. Ho googlato per giorni, ma sono ancora bloccata sullo stesso punto D:
    Ti scrivo uno dei miei tentativi, sperando di non aver sbagliato tutto xD

    $keyboard = [‘inline_keyboard’ => [[[‘text’ => ‘yourText’, ‘callback_data’ => “ciao”], [‘text’ => ‘open url’, ‘callback_data’ => ‘bubi’]]]];
    $parameters[“reply_markup”] = json_encode($keyboard, true);
    echo json_encode($parameters);
    $callback_query = $update[‘callback_query’];
    $callback_data = callback_query[“data”];
    $chatId = callback_query[“message”][“chat”][“id”];
    switch($callback_data) {
    case ‘ciao’:
    header(“Content-Type: application/json”);
    $parameters = array(‘chat_id’ => $chatId, ‘text’ => “bibi”, ‘show_alert’ => “true”);
    $parameters[“method”] = “answerCallbackQuery”;}
    case ‘bubi’:
    header(“Content-Type: application/json”);
    $parameters = array(‘chat_id’ => $chatId, “text” => “susi”);
    $parameters[“method”] = “sendMessage”;
    echo json_encode($parameters);
    }

    oppure avevo provato

    if($callback_query[“data”] == “ciao”){
    header(“Content-Type: application/json”);
    $parameters = array(‘chat_id’ => $chatId, ‘text’ => “bibi”, ‘show_alert’ => “true”);
    $parameters[“method”] = “answerCallbackQuery”;}
    echo json_encode($parameters);
    }

    Grazie mille per la pazienza

          1. Essendo alle prime armi ho badato più alla sostanza che alla forma xD.
            Comunque grazie Salvatore per la dritta…Ho letto e riletto la documentazione e in pratica sbagliavo a passare il chat_id.

            Ancora grazie per il supporto!

  52. ciao salvatore, ottima guida!
    se io volessi far cercare al bot un qualsiasi file dentro un canale (mio) e darmi come risposta l’id di quel file, come potrei fare?

    ho per forza bisogno di un db oppure posso utilizzare una sorta di search di telegram stesso?

    grazie

  53. Ciao, ho seguito la guida e il bot funziona ma non mi risponde alcuna cosa. Vorrei creare una chat ad hoc per provare ma non mi “saluta”.
    Ho caricato su dropbox il file aggiornato execute.php e rifatto un deploy ma quando “chatto” il bot non mi risponde nulla. Sai aiutarmi?

    Grazie

  54. Ciao Salvatore!
    Complimenti per la guida completa e molto semplice anche per principianti.
    Ho creato un bot molto base, ma ora vorrei modificarlo. Vorrei chiederti come posso permettere al bot di salvare (ad esempio, in un file di testo) determinati dati inseriti dall’utente.
    Lo scopo è quello di registrare ingressi e uscite in un luogo (con orario): il bot dovrebbe richiedere se si desidera effettuare un login o un logout, poi nome e cognome dell’utente e, se si vuole fare un login, deve prelevare nome, cognome, data e ora e scrivere questi valori in un file. Se si vuole effettuare un logout (senza troppi controlli sugli errori, non sono necessari), il bot richiede all’utente un’altra stringa di testo (lavoro svolto) e, nella stringa del file in cui precedentemente (dal login) erano stati memorizzati i dati dell’utente, scrive a fianco data e ora di uscita e la stringa richiesta. Un possibile output del file potrebbe essere:
    nome1_cognome1 8:37 12:49 “riunione generale team”
    nome2_cognome2 10:45 13:48 “blabla”

    Ho conoscenze pregresse di C, per cui, se il PHP ha simili maniere di gestione di I/O da file dovrei cavarmela. Una cosa che proprio non riesco a capire è se è possibile salvare un file di testo. Fino ad ora ho utilizzato un codice che manteneva tutto il necessario al funzionamento dentro il codice stesso (domande/risposte ben definite). Una delle cose che mi piacerebbe aggiungere a quanto detto sopra sarebbe anche un comando tipo /num che mi dice quante persone hanno effettuato il login ma non il logout (quante devono ancora uscire).

    Mi basta anche una risposta dove mi dici se è fattibile o meno, mi farebbe davvero piacere sapere se questo lavoro è realizzabile con un bot Telegram. Ti ringrazio ancora una volta per avermi fatto avvicinare a questo mondo, passa una buona serata!
    Giorgio.

    1. Ciao Giorgio,
      è possibile fare quanto dici.

      Se hai tempo e voglia l’ideale sarebbe di scrivere gli ingressi e le uscite su un database (es. MySQL), anziché un file di testo.
      In PHP il modo più scemplice per scrivere un file di testo è questo:

      $file = fopen('log.txt', 'a');
      fwrite($file, 'nome1_cognome1 8:37 12:49 riunione generale team');
      fclose($file);

      A presto,
      Salvatore

  55. Ciao Salvatore, guida eccellente anche per un “neofita”. Complimenti!
    Volevo chiederti se era possibile creare un bot che inoltrasse i messaggi, automaticamente, da un canale dove sono amministratore, ad un gruppo. E’ possibile?

    So che il post è vecchio, ma provo lo stesso a scriverti. Grazie ancora per la guida e l’aiuto 😀

    1. Ciao Giordan,
      grazie per i complimenti. Si è possibile fare quanto dici.
      Bisogna aggiungere al gruppo ed al canale il bot come amministratore e poi sono necessarie un po’ di righe di codice.

      A presto,
      Salvatore

  56. Ciao, molto interessante questa guida e ti ringrazio per avermi aiutato nella realizzazione del mio primo bot. Volevo chiederti come funzionava la parte di update, siccome avevo intenzione di realizzare un bot che prendesse due valori (per esempio una semplice somma) e li mettesse in due diverse variabili ma il messaggio text ne viene inviato solo uno dall’utente prima di una risposta del bot…devo fare un altro update? Grazie mille per la risposta 😉

    1. Ciao Daniel,
      provo a ipotizzare un possibile modo per fare la “somma” tra due numeri.

      1. L’utente scrive un messaggio al bot con primo addendo il numero 10
      2. Il bot controlla se conosce l’utente attraverso verifica del chat_id (è l’identificativo dell’utente su Telegram); essendo il primo messaggio il bot memorizza il numero 10, insieme al chat_id da qualche parte (es. file di testo, database, etc.)
      3. L’utente scrive un messaggio al bot con secondo addendo il numero 5
      4. Il bot controlla se conosce l’utente attraverso verifica del chat_id; riconosce l’utente e richiama il precedente addendo; somma al nuovo addendo il valore precedentemente memorizzato; risponde all’utente con il risultato della somma 15; cancella il primo addendo memorizzato

      A presto,
      Salvatore

  57. Ciao Salvatore,

    ho seguito la tua interessantissima guida passo per passo ma alla fine dopo aver invocato lo script register.php appare il seguente messaggio

    {“ok”:false,”error_code”:404,”description”:”Not Found”}

    Cosa ho sbagliato?

  58. Ciao Salvatore, la tua guida è molto chiara, precisa ed interessante; complimenti, sono poche le guide in rete che uniscono tutte e 3 queste qualità. Sto facendo un prototipo di bot e mi sono trovato nella necessità di chiedere all’interlocutore della chat il suo n umero di telefono. Ho letto la sintassi e varie guide, ma ogni tentativo è, purtroppo, infruttuoso. Mica potresti postare un esempio che contiene il modo per ottenere il numero di cellulare di un utente all’interno della chat, per favore?
    Un saluto
    Semaya

    1. Ciao Semaya,
      grazie per i complimenti.
      Per ottenere il numero di telefono il bot dovrebbe chiederlo direttamente come messaggio all’utente.
      Sta poi a te validare e verificare il numero. L’API non ti consente di fare nulla in merito.
      Che tentativi hai fatto?

      Fammi sapere,
      Salvatore

  59. Quindi sarebbe qualcosa del genere?

    apiRequest(“sendMessage”, array(
    ‘chat_id’ => $chat_id,
    “text” => ‘Ci vuoi inviare il tuo numero di telefono?’,
    ‘reply_markup’ => array(
    ‘keyboard’ => array(
    array(
    array(
    ‘text’=>”SHOW PHONE”,
    ‘request_contact’=>true
    )
    )
    ),

    ‘one_time_keyboard’ => true,
    ‘resize_keyboard’ => true
    )
    ));

      1. Buonasera,

        mi intrometto in questa domanda. Il bot non può rilevare il numero di telefono dell’utente che lo utilizza? Vorrei fare in modo che solo gli utenti autorizzati possano utilizzare il bot e stavo pensando ad una verifica del numero di telefono. Come potrei fare?

        Mi interessa molto, perché il bot invierà agli utenti autorizzati informazioni di lavoro che non possono essere divulgate a chiunque.

        Grazie.
        Daniele

  60. Buonasera Salvatore,

    Grazie mille per questo tutorial, mi é servito molto. In particolare ho preso spunto da questo https://gist.github.com/salvatorecordiano/2fd5f4ece35e75ab29b49316e6b6a273 per creare il mio bot personale che uso per lavoro.

    Avrei bisogno di un aiuto. Vorrei far capire al bot le richieste anche senza scrivere precisamente le parole contenute in elseif($text==
    Vorrei rilevasse determinate parole all’interno di frasi. Come potrei fare? Non sono un programmatore e se ci fosse un esempio già pronto come quello del link precedente lo preferirei.

    Inoltre mi piacerebbe vedere un esempio per fare in modo che il bot invii della documentazione in pdf o altri formati, in base a determinate richieste. Cioé al posto di risposte testuali vorrei inviasse dei file contenuti su dropbox. Stessa cosa per video e immagini specifiche.

    Grazie.
    A presto,
    Daniele

    1. Ciao Daniele,
      per identificare parole all’interno di una frase puoi utilizzare la funzione di PHP stripos, al link http://php.net/manual/en/function.stripos.php trovi la documentazione completa.

      Sarebbe interessante usare un approccio più intelligente rispetto a stripos facendo NLP, qui trovi qualche info https://it.wikipedia.org/wiki/Elaborazione_del_linguaggio_naturale

      Per quanto riguarda l’invio di file, immagini e video ti suggerisco di inziare a dare una lettura a questo esempio https://gist.github.com/salvatorecordiano/714bdcdf93ac489d0f55611adf6de337 e poi di fare riferimento alla documentazione di Telegram.

      A presto,
      Salvatore

  61. Ciao Salvatore,
    intanto grazie mille per la tua disponibilità e scusami per la brevità del messaggio precedente, ma ero in condizioni disperate con una connessione ballerina che forse arrivava a 3G, per un massimo di pochi millisecondi.
    Sperimento e ti faccio sapere.
    Nel frattempo ti auguro buone vacanze agostane.
    Un saluto
    Semaya

    1. Ciao Alberto,
      grazie per i complimenti.

      Devi sostituire all’url da te indicato TOKEN con l’API token del bot e CHAT con l’id del gruppo.

      Per ottenere l’id del gruppo ti consiglio di seguire i seguenti passi:
      1) Crea il gruppo
      2) Aggiungi il bot @vardumpbot al gruppo. Per farlo le istruzioni da seguire sono: vai al gruppo, clicca sul nome del gruppo, clicca su aggiungi membri, nella casella di ricerca scrivi vardumpbot, selezionalo e clicca aggiungi
      3) Scrivi un messaggio nel gruppo
      4) Leggi il debug del bot sul canale. Nel “blocco” chat e poi id trovi l’id del gruppo. E’ un numero che inizia con il segno meno davanti. Un esempio di messaggio del bot nel gruppo lo trovi qui: https://www.salvatorecordiano.it/wp-content/uploads/2017/08/sample.jpg
      5) Rimuovi il bot degli utenti del gruppo

      Per capire qualcosa di più ti consiglio di leggere anche questo post https://www.salvatorecordiano.it/debug-dei-messaggi-di-update-di-un-bot-telegram/

      A presto,
      Salvatore

      1. Ottimo, tutto funziona, grazie.
        Ho un altra domanda relativa alla formattazione del testo.
        Nel browser quando vado a scrivere il testo dopo &text=MESSAGGIO, vorrei fare in modo che venga visualizzato nel gruppo con più testo a capo. Mi spiego:
        MESSAGGIO= Attenzione macchina n105 fuori controllo
        nel gruppo si deve visualizzare così
        Attenzione
        macchina n105
        fuori controllo

        E’ possibile farlo con qualche sintassi mentre scrivo il messaggio o c’è qualche bot che mi permette questo?

        Grazie Ancora

  62. Complimenti per il tutorial, davvero utile!!!
    Ho creato un semplice bot per “leggere” i messaggi della chat, tutto questo in python dato che non sono esperto in php.
    Ho inserito il bot in un gruppo (in cui non sono amministratore), ma quando qualcuno scrive nel gruppo, non succede niente nella mia console di python, mentre se scrivo nella chat del bot si.
    Ho già cambiato le impostazioni in /setprivacy to disable. Ma niente, non funziona.
    Sai per caso come fare?

    Grazie mille!!!

  63. Ciao Salvatore, ti ringrazio per la guida molto esaustiva e completa per iniziare, ho un problema io non sono un esperto ma bensì autodidatta di programmazione e php.
    Ho lo stesso problema di Daniele non riesco ad utilizzare stripos, o l’alternativa NLP vorrei che il bot riconosca una parola all’interno di una frase. E postasse una risposta magari random.
    Ringraziandoti anticipatamente saluti Claudio

  64. Salvatore grazie per il fantastico tutorial ma ho un problema che mi sta facendo arrabbiare un sacco.
    Come mai quando modifico il file execute.php il bot non prende le modifiche. Fa sempre la stessa cosa, cioè rispondermi con lo stesso messaggio che ho inviato con un lowcase.
    Controllo la sincronizzazione di dropbox ed avviene. Non riesco a capire il motivo.
    Grazie di tutto

  65. Buongiorno Salvatore
    le chiedo una informazione velocissima.
    Vorrei creare un BOT tipo STRANGERBOT di TELEGRAM…ma facendo in modo, per questioni di policy di non avere accesso alle chat scambiate (sempre e cmq one to one tra gli utenti. Cosa che vorremmo assolutamente evitare. E’ fattibile questa fattispecie ? Il BOT in questione ha accesso alle CHAT private oppure dirotta solo gli utenti a dialogare tra loro in assoluto anonimato, quindi in completa PRIVACY ?
    Grazie in anticipo e cordiali saluti
    Luca

  66. Buongiorno Salvatore
    complimenti innanzitutto per le guide , molto esaustive.
    Ho provato ad inviare un msg una mezz’ora fa ma temo che non sia giunto a destino. Volevo porre una questione molto veloce. Non sono uno sviluppatore ma ho una idea commerciale legata ad un BOT su TELEGRAM.
    Il modello di riferimento é STRANGERBOT di TELEGRAM capace di porre in relazione due persone in chat…ma, per questioni di privacy (e di delicatezza dei contenuti in esse veicolate..) il mio obbiettivo e quello di rendere lo scambio di messaggi una questione assolutamente privata e anonima tra le due persone poste in comunicazione. Il BOT dovrebbe essere posto nella condizione di NON leggere nulla di questi scambi di informazioni. In STANGERBOT succede questo o sto chiedendo qualcosa di assolutamente impossibile ? E soprattutto mi saprebbe consigliare qualcuno in grado di sviluppare un BOT di questo tipo…meglio se in VENETO..per questioni di prossimità.
    Ringrazio in anticipo porgendo cordiali saluti
    Luca

    1. Ciao Luca,
      senza volere entrare nel tecnico del discorso, possiamo semplificare lo scenario di comunicazione utenti-bot come segue.

      La comunicazione tra un utente ed un bot viene mediata dai server di Telegram. Questo vuol dire che l’utente non “parla” mai direttamente con un bot, ma lo fa per tramite di Telegram.
      Telegram deve assicurare la comunicazione sicura tra il proprio mondo e gli utenti.
      La comunicazione, invece, tra Telegram e il server che ospita il bot deve essere resa sicura da entrambe le parti.

      A presto,
      Salvatore

  67. Ciao Salvatore
    ho implementato un bot e avevo basato il sistema di autenticazione sul numero di telefono; effettuando vari test purtroppo è emerso che un utente può inviare invece del suo numero di telefono un numero di un qualsiasi contatto in rubrica.
    Quindi volevo chiederti se esistevano che tu sappia, differenze tra i dati inviati tramite il tasto condividi numero di telefono e il condividi contatto da rubrica e se, contestualmente, è possibile disattivare quest’ultima azione all’interno della chat.
    Ti rinnovo i miei ringraziamenti per i tuoi preziosi suggerimenti che hanno reso possibili sviluppi che non avrei mai immaginato.
    Un saluto Semaya

  68. Ciao Salvatore
    ora funziona il sistema di autenticazione sul numero di telefono; dovrei solo riuscire a disattivare l’invio di robe diverse da testo all’interno della chat e l’app di test è quasi perfetta 😉
    Di nuovo grazie per i suggerimenti che hanno reso possibile tutto questo.
    Un saluto
    Semaya

  69. Ciao, innanzitutto ottima guida.. ascolta, io sarei interessato a creare un bot che si colleghi direttamente ad una lista ed assegni in automatico dei codici presi dalla lista stessa.. come potrei fare?

Leave a Reply

Your email address will not be published. Required fields are marked *