Creare un Bot Telegram: guida passo passo

In questa breve guida vedremo come creare un semplice echo bot su Telegram.

Questo articolo è stato pubblicato a gennaio 2016, ma è stato aggiornato il 18 ottobre 2020.

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 hosting PHP.

L’hosting è uno spazio web dove sono ospitati i file che compongono il tuo sito. Se non disponi di un tuo spazio hosting puoi utilizzare un servizio gratuito tra i tanti disponibili sulla rete. In questo tutorial vedremo utilizzare Hostinger come servizio di hosting gratuito.

Warning del 18 ottobre 2020: Hostinger e Altervista non consentono più di ospitare bot poiché non permessi nei termini e condizioni. Ti consiglio di procurarti uno spazio hosting PHP per poter procedere con questo tutorial.

Se non disponi di uno spazio hosting PHP puoi seguire la guida Creare un Bot Telegram senza hosting.

Iniziamo! Per prima cosa procediamo alla registrazione su Hostinger all’indirizzo https://it.000webhost.com/.

Facciamo click su “Registrati gratis” come mostrato nello screenshot sopra. Apparirà il modulo di registrazione che richiede un indirizzo e-mail valido ed una password.

Compilato il modulo facciamo click su “Registrati”.

Riceveremo una conferma di registrazione via e-mail, come quella riportata di seguito, con un link di conferma da cliccare.

Facciamo click su “Verifica email”. Dopo il messaggio di conferma apparirà una pagina come quella seguente.

Questo step ci consente di creare uno spazio web da dedicare al nostro bot. Compiliamo il nome del progetto e impostiamo una password.

Il nome del progetto è importante perchè determina il nome dello spazio web.

Nel caso di esempio ho scelto telegram-bot e quindi lo URL a cui sarà raggiungibile lo spazio web sarà di conseguenza https://telegram-bot.000webhostapp.com.

Per proseguire scegliamo la terza opzione proposta: “Upload your site”.

A questo punto apparirà la schermata che riporta i file presenti sull’hosting web appena creato.

Facciamo click sulla cartella “public_html” dall’icona a sinistra della pagina.

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

  • index.php
  • webhook.php

Per caricare i file facciamo click sul bottone “Upload Files” che si trova in alto a destra. Il bottone è contraddistinto dall’icona di una nuvoletta e una freccia.

Apparirà una finestra che consente di selezionare i predetti file dal computer.

Facciamo click su “Upload”.

Se tutto è andato bene navigando l’indirizzo https://telegram-bot.000webhostapp.com dove telegram-bot deve essere sostituito con il nome del progetto scelto in precedenza, apparirà una schermata come quella seguente.

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 t.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}
Keep your token secure and store it safely, it can be used by anyone to control your bot.

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://{PROJECT NAME}.000webhostapp.com/webhook.php';
$BOT_TOKEN = '{TOKEN}';

Sostituiamo {PROJECT NAME} con il nome del progetto creato su Hostinger ad inizio tutorial e {TOKEN} con il token comunicato dal FatherBot.

Carichiamo il file register.php utilizzando la funzione “Upload Files” già utilizzata in precedenza sul pannello di gestione file di Hostinger. Adesso visitiamo con un browser lo url https://{PROJECT NAME}.000webhostapp.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 dal file manager di Hostinger selezionando il file e poi facendo click sull’icona del cestino “Delete”.

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.

bot

  • Se vuoi approfondire come funziona lo script webhook.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.

262 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 webhook.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

    1. Ciao Roberto,
      il file register.php viene caricato in un secondo momento nel tutorial e poi cancellato. Lo scopo è quello di utilizzarlo giusto il tempo necessario.

      A presto,
      Salvatore

  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 webhook.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/webhook.php giusto?
            Ecco, io posso inviare un GET o un POST alla pagina webhook.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. webhook.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 webhook.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 webhook.php la fa Telegram.
            – Lo script webhook.php può includere tutti i file del caso per processare ogni messaggio ricevuto e fare ciò che è necessario.
            – Uno script diverso da webhook.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 webhook.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. Grazie per il tutorial, non avevo modo di avere un indirizzo https. Grazie a questo trucco ho risolto. Grazie

  27. 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?

  28. 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

  29. 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.

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

    Grazie 1000

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

  32. 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

  33. 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!

  34. 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?

  35. 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 🙂

  36. 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.

  37. 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

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

  39. 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.

  40. 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 =)

  41. 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

  42. 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 🙂

  43. 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!!

  44. 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

  45. 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.

  46. 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

  47. 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

  48. 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.

  49. 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

  50. 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

  51. 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

  52. 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!

  53. 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

  54. 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 webhook.php e rifatto un deploy ma quando “chatto” il bot non mi risponde nulla. Sai aiutarmi?

    Grazie

  55. 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

  56. 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

  57. 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

  58. 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?

  59. 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

  60. 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

  61. 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

  62. 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

  63. 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!!!

    1. Ciao Akuma,
      prova a seguire i seguenti passaggi:

      1) Disabilita privacy mode per il bot con @Botfather
      2) Rimuovi il bot dal gruppo
      3) Aggiungi il bot al gruppo

      L’ordine è importante.

      A presto,
      Salvatore

  64. 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

  65. Salvatore grazie per il fantastico tutorial ma ho un problema che mi sta facendo arrabbiare un sacco.
    Come mai quando modifico il file webhook.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

  66. 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

  67. 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

  68. 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

  69. 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

  70. 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?

  71. Grazie della guida. Sono iscritto a molti canali telegram che postano in continuazione messaggi e per questo ho disattivato le notifiche… Vorrei un bot che “leggesse” le parole postate nei canali e mi segnalasse quando viene postata una certa parola, ad esempio “Milano” o “iPhone”. Esiste ? E’ complicato da realizzare ? Grazie mille.

    1. Ciao Fabrizio,
      solo gli amministratori di un canale possono aggiungere un bot al canale stesso.
      Puoi ovviare al problema utilizzando il tuo account personale per rimanere in ascolto di particolari messaggi su un canale.

      A presto,
      Salvatore

  72. Ciao ottima guida, ma io che sono alle prime armi purtroppo non ho capito proprio tutto. A me servirebbe un bot che in base a cosa si risponde, il bot risponde a sua volta con altre frasi. Per spiegarmi meglio, se il bot dice “ciao come ti chiami?” e io rispondo “federico” il bot dovrebbe rispondere “ciao federico come stai?” insomma una specie di conversazione ma che riprende ciò che scrive colui che utilizza il bot, come si fa a farlo?

      1. ok grazie della risposta, vorrei creare un bot ma probabilmente non ho le conoscenze per farlo, per caso lei fa bot, anche a pagamento?

  73. ciao, io ho questo problema, ho realizzato un bot, se scrivo nella chat del bot, reagisce a qualsiasi cosa e in php poi riesco ad intercettare e rispondere.
    Ma…..voglio che questo bot intercetti i messaggi del mio canale, dove l’ho già aggiunto come amministratore.

    sembra una scemenza ma non reagisce mai.

    lo stesso bot, se gli scrivo in chat privata reagisce, nel canale dove è un amministratore no, perchè?

    1. Ciao Roberto,
      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

  74. Ciao Salvatore,
    ho seguito la guida per creare il bot, non so se sia normale, ma al comando start non da risposte.

    Volevo semplicemente un bot che mi permettesse di inoltrare dal canale al gruppo. potresti dirmi come fare?

  75. Ciao Salvatore, puoi aiutarmi a capire come fare un bot che invi un pdf relativo alla pubblicazione di un articolo joomla? Oppure
    qualcosa di simile che mi possa aiutare a capire come fare?

    Grazie mille.

      1. Ciao Salvatore, intanto grazie per la risposta, ho seguito il link che mi hai indicato, ma non trovo la voce “my recipes” puoi indicarmi qualche altra info?
        Ancora grazie.
        Ciao Filippo.

        1. Ho trovato la sezione, ma adesso non trovo “maker” esce soltanto “we mo maker” .Comunque se non ho capito male, questo sistema dovrebbe inviarti sul canale telegram creato precedentemente gli aggiornamento dei rss quando il sito in questione li aggiorna, è corretto quello che ho capito?
          Come posso fare su joomla?

          Ancora grazie

  76. Ciao Salvatore! Sto cercando di imparare a programmare un bot di telegram e mi interessava sapere se è possibile effettuare delle prenotazioni con un bot. Ad esempio, io utente vorrei prenotare un campo da calcetto presso il palazzetto “X” per il giorno “Y”.. Come può effettivamente questo bot comunicare con il gestore del palazzetto per notificargli la prenotazione dell’utente?

  77. Ciao Salvatore! Sto cercando di imparare a programmare un bot di telegram e mi interessava sapere se è possibile effettuare delle prenotazioni con un bot. Ad esempio, io utente vorrei prenotare un campo da calcetto presso il palazzetto “X” per il giorno “Y”.. Come può effettivamente questo bot comunicare con il gestore del palazzetto per notificargli la prenotazione dell’utente?

  78. Salve, innanzitutto la ringrazio per il lavoro di divulgazione/condivisione di conoscenza , purtroppo io sono a completo digiuno di programmazione e la mia domanda è fuori tema oltre che ad un livello ultrabasico, spero possa darmi comunque qualche aiuto o dritta: Vorrei che Telegram su Raspberry Pi salvasse in automatico ogni immagine e video in una cartella predefinita (e poi che un lettore mandasse in play tutti i contenuti di tale cartella). Su Telegram Desktop per Windows devo cliccare ogni volta sul media ricevuto per salvarlo (anche con download automatico impostato)… che soluzioni mi consiglia? E’ necessario creare un Bot per il salvataggio automatico? Grazie mille per l’eventuale aiuto, Francesco

  79. Ciao Salvatore, com’è possibile che su Heroku non mi è possibile selezionare dropbox come deployment method?
    Ho già un account e dropbox sul mio computer

  80. ho provato a fare come dice questo articolo ma manco trovo il collegamento per dropbox nel heroku.grazie salvatore ma non funziona

  81. Ciao Salvatore, grazie per la guida. Avrei bisogno di creare un bot per fornire assistenza agli utenti che mi contattano. C’è qualcosa di già preimpostato e personalizzabile?

  82. Buonasera, grazie per quest guida. Ho copiato e modificato il bot base, tuttavia ho notato che se si danno i comandi dal canale, i dati di chi li pesegue non vengono acquisiti. Nel senso che su Ciao $fistname ! spunta solo Ciao !
    Come ovviare a questo problema

  83. Ciao Salvatore,
    guida molto utile la tua, avrei una cosa da chiederti: ho intenzione di fare un bot che prendendo del test in input in un gruppo tramite un trigger da me stabilito mi fornisca in uscita un link.
    Esempio: in un gruppo un utente scrive: “!cerca città via indirizzo numerocivico” il bot dovrebbe restituirmi nel gruppo un testo del genere: “www.google.com/città+via+indizzo+numerocivico”

    in pratica digitando un indirizzo mi restituisce un link a google maps

    grazie mille

  84. Salve, voglio farle prima di tutto i miei complimenti per l’aiuto che da a tutti noi.
    Io sono qui per chiedere un’informazione, cercherò di spiegarmi il meglio possibile:
    avrei la necessità di fare un canale in cui i vari amministratori devono scrivere, ma vorrei che fossero venisse scritto in questo canale o altri canali o bot.
    Esempio:
    Canale del paese in cui può scriverci canale/bot del gruppo donatori di sangue, gruppo parrocchia, gruppo feste, ecc.

    Spero di essere stato chiaro e che ci sia la possibilità di fare quanto richiesto.

    Grazie e saluti.

  85. Ciao, ammetto di essere capitato sulla tua pagina per caso. Ho già creato un mio bot su telegram utilizzando Manybot e mi chiedevo se ci fosse la possibilità di proteggere il BOT facendo inserire una password prima di accedere al BOT stesso. Grazie

    1. Ciao Alessandro, non uso Manybot da molto tempo. Non credo sia possibile proteggere il bot.

      Invece, se hai dimestichezza con la programmazione – a partire da questa guida – vedrai che è molto semplice fare in modo che il bot risponda solo ad un elenco predefinito di utenti.

      A presto,
      Salvo

  86. Innanzitutto complimenti x la guida…
    Avrei necessità di creare un bot che prenda i messaggi da un canale, li modifichi e li inoltri in un altro canale…
    Potresti aiutarmi?
    Grazie mille in anticipo

  87. Buongiorno grazie per la guida . Io vorrei creare un bot che si utile alla associazione di sangue della quale faccio parte . Il bot dovrebbe consentire la prenotazione del posto per la donazione . Nello specifico il soggetto si prenota al posto libero delle ore 9 è così via . Potrebbe consigliarmi? Saluti

  88. salve….io sto cercando di creare un bot che facci questo determinato lavoro:
    il bot si trova allinterno di un canale che appena entra una persona “X” salvi in un data base username o id della persona dopodiche dopo tot giorni avvisa la persona che la sua permanenza nel canale sta per scadere….riesci ad aiutami?

    1. Ciao Livio,
      non è così facile da spiegarti. Ci vuole qualche ora di lavoro per ottenere quello che chiedi.
      Prova a verificare se c’è già qualche bot che fa questa cosa.

      A presto,
      Salvo

  89. Innanzitutto la ringrazio per le sue guide, le volevo chiedere come posso creare un Bot che prende tutti i membri di un gruppo e li trasferisce in un’altro gruppo, grazie.

  90. Bellissima guida complimenti!
    Sto iniziando a giocare anche io con i bot, nella fattispecie avrei necessità di sapere se sia possibile o meno avere un bot super semplice che possa mostrarmi dei pulsanti sulla base di un comando lanciato (dentro un gruppo) e relative risposte.
    Ad esempio:
    creo e lancio /scegli, l’utente viene invitato a cliccare su uno dei pulsanti
    che offrono tre messaggi di testo diversi (magari con dell’html dentro per abbellirli).
    Niente altro.

    Sarebbe possibile?

    Grazie.

    1. Ciao Emanuele,
      grazie per i complimenti.

      Se vuoi approfondire il discorso “bottoni” sui Bot Telegram ti consiglio di leggere questa parte della documentazione https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating.
      Trovi due esempi di utilizzo della keyboard qui https://gist.github.com/salvatorecordiano/9ba24b3ac673d7c03a584a5d883aad2d e qui https://gist.github.com/salvatorecordiano/8fbe96008b9a344c259ee73b11e370a3.

      A presto,
      Salvo

  91. Ciao Salvatore,
    l’altro giorno ho seguito la tua guida, per fare un bot, fantastica è andato tutto bene.
    Mi avevano chiesto di farne un altro per il nostro gruppo, ho creato un altro profilo con un altro progetto,tutto seguendo passo passo la tua guida ancora una volta, ma sta volta quando metto il link non viene fuori nulla, solo una pagina bianca. Come posso risolvere?

  92. Ho creato il bot e fatto l’operazione di webhook correttamente. Solo che quando poi vado a testare il bot non risponde. Cosa posso aver sbagliato?

  93. Ciao, intanto complimenti per la guida per impostare un bot tramite autocode.com! Purtroppo mi sono fermato lì perchè non sono riuscito a capire come sviluppare bot più complessi di quello che hai messo come esempio, ho provato anche ad includere la libreria Telegraf ma non ho avuto i risultati sperati, puoi indirizzarmi su qualche guida per sviluppare tramite “autocode.com”?
    Ciao e grazie,
    Federico.

  94. Ciao, non ho capito ma hostarlo su hostinger è vietato o non te lo permette di fare? Ci sono altri modi per hostarlo gratuitanente?

  95. Salve avrei bisogno di un bot che mi invii una notifica ogni volta che una specifica parole viene emessa in un canale o gruppo…si può fare? Grazie

  96. Buongiorno Salvatore, innanzitutto complimenti per il lavoro che hai svolto.
    Volevo chiederti, sarebbe possibile creare un BOT che, all’invio di un qualsiasi link di Amazon, mi restituisca il link stesso ma con il mio referral? Se si, mi potresti dare qualche dritta? Grazie in anticipo per l’attenzione.

  97. Buonasera Salvatore, innanzitutto grazie per il tuo lavoro!
    In secondo luogo volevo chiederti: come posso creare un BOT telegram che accetti in ingresso un qualsiasi link Amazon e mi restituisca lo stesso link con il mio referral? Se cortesemente puoi darmi qualche istruzione.
    Grazie in anticipo per la cortese attenzione!

  98. Ciao salvatore, la tua guida è ottima!
    Ho un solo problema, posseggo un dominio su netsons, con il quale volevo appoggiarmi per il mio BOT.
    Quando effettuo il test con il file register.php, mi va a buon fine, però poi muore li, quando interpello il bot dal canale telegram (ho provato a fare un balissimo copia incolla del tuo esempio del file webhook.php) non risponde nulla, sembra morto….cosa sto sbagliando?

  99. Ciao Salvatore,
    volevo sapere se avevi fatto una guida per sviluppare un BOT usando node.js
    Ciao e complimenti!
    Federico.

  100. Ho apprezzato moltissimo la sua guida e mi è stata molto utile.
    Volevo avere dei chiarimenti
    Ho bisogno di un bot che riceva i messaggi e foto anonimamente dagli utenti e risponda con una frase semplice.
    Fin qui ci sono arrivato, ma anche se attivo, il bot riceve i messaggi però a mia volta io non li ricevo, quale può essere il problema? O più semplicemente, sono io che non conosco il modo per visualizzarli dal mio profilo?

  101. Ciao, ho un hosting windows su aruba. ho seguito la tua guida. ma il bot non risponde. cosa posso provare a fare? c’è un modo per capire se la richiesta sta arrivando e/o in quale step c’è qualcosa che non va?
    Grazie

  102. cao il bot non considera $firstname,, su “ciao $firstname benvenuto”, mi scrive solo la risposta “ciao benvenuto”

  103. ciao raga, ho visto che in privato funziona,, in questo caso se nella variabile $message chat, …si mette $message from…. funziona anche in chat di gruppo

  104. altro quesito, dove si mette

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

    si può integrate un array con risposta multipla?

  105. Ciao e grazi per il tuo tutorial, molto chiaro però seguendo tutte le tue indicazioni, quando apro il register.php sulla mia applicazione mi esce questo messaggio:

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

    quindi il webhook non è settato… cosa sbaglio?

  106. ciao Salvatore,
    mi daresti una dritta per dare dei punteggi agli utenti di un gruppo.
    ad esempio un utente scrive: @feedback @username
    e il bot assegna un punto a @username.
    se un utente scrive: /info @username il bot mostra le info di @username contenente anche il punteggio che ha.

Leave a Reply

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