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.
- 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.
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!
Gentile Roberto,
grazie per l’interesse mostrato.
Ho provato a commentare il codice a questo indirizzo https://gist.github.com/salvatorecordiano/5db0dc73baf7e6750305068753212120
Se ha bisogno di ulteriori chiarimenti può rispondere direttamente su GitHub.
A presto,
^SC
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.
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
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
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
Ciao Salvatore,
innanzitutto grazie mille per la risposta 😉
A presto
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?
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
scusa mi correggo
inserendo il https://{APP NAME}.herokuapp.com/register.php
mi visualizza 302 found
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 😉
Ciao Giulio,
mi fa piacere che ti sia stata utile questa guida.
Qui https://gist.github.com/salvatorecordiano/873c48328f91c459865632cf62e035bb trovi un esempio che fa al caso tuo.
Per capire come comportarti di conseguenza ti consiglio di consultare la documentazione qui https://core.telegram.org/bots/api#message.
A presto,
^SC
Salve penso che ci sia stata una dimenticanza nei file da caricare du dropbox manca il file register.php…correggetemi se sbaglio
risolto ora però ti rimando a questa domanda/commento.
https://gist.github.com/salvatorecordiano/873c48328f91c459865632cf62e035bb
Ho risposto al tuo commento su Gist.
A presto,
^SC
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
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 🙂
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
Ti ringrazio! Funziona tutto alla grande! 🙂 Complimenti per la guida e per la preparazione, salvo il blog tra i miei preferiti!
Grazie, troppo buono.
^SC
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.
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
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?
Ciao Ric,
dovresti ti consiglio di dare uno sguardo alla documentazione ufficiale e in particolare:
Foto > https://core.telegram.org/bots/api#sendphoto
Audio > https://core.telegram.org/bots/api#sendaudio
Video > https://core.telegram.org/bots/api#sendvideo
A presto,
Salvatore
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
Ciao Riccardo,
qui https://gist.github.com/salvatorecordiano/714bdcdf93ac489d0f55611adf6de337 trovi un esempio di bot che risponde ad ogni messaggio inviandoti l’immagine “image.png” che si trova nella stessa directory del file webhook.php.
Inoltre, per fare funzionare lo script è necessario impostare la costante BOT_TOKEN nella riga 3.
A presto,
^SC
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
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ì!
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?
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.
Ciao Ale!
Puoi prendere spunto da questo esempio: https://gist.github.com/salvatorecordiano/5db0dc73baf7e6750305068753212120#gistcomment-1766169
A presto,
^SC
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?
Esatto il messaggio è 1-1. Se vuoi mandare lo stesso messaggio a più persone devi fare più chiamate a sendMessage.
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 ^^
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
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
Ciao, ottima guida.
Avrei necessità di creare qualcosa tipo @strangerBot sai aiutarmi?
Hai un codice già scritto di esempio?
Grazie Mille
Ciao Giulio,
non è così immediato scrivere un bot come @StrangerBot, al momento non ho qualcosa che si avvicini alla tua richiesta.
A presto,
^SC
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!
Ciao Simone,
tecnicamente ciò che dici è possibile.
C’è da lavorarci un po’ per realizzarlo.
A presto,
^SC
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?
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
chiaro sei stato chiaro, ma all’atto pratico?! 🙂
All’atto pratico vuol dire che hai bisogno di un database o un’alternativa per persistere lo stato dell’utente.
A presto,
Salvatore
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?
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
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!)
Ciao Federico,
per iniziare puoi includere un file PHP in un altro utilizzando include/require, anche se esistono modi migliori di organizzare e strutturare il codice.
A presto,
^SC
ecco, peccato che heroku non accetti gli include….e per non so quale ragione non riesco ad eseguire una connessione mysql!
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.
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
Ciao Salvatore, ho controllato ma avevo già disabilitato la privacy mode. Secondo te cosa potrebbe andare storto allora?
Ciao Davide,
non perderti d’animo! Riprova a seguire il tutorial passo passo a mente fresca.
A presto,
^SC
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.
Ciao potresti dirmi come hai fatto a gestire le risposte
Ciao Ernesto,
puoi dare uno sguardo a questo esempio https://gist.github.com/salvatorecordiano/2fd5f4ece35e75ab29b49316e6b6a273
A presto,
Salvatore
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
Ciao Ernesto,
hai effettuato la procedura per fare l’impostazione del webhook?
^SC
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
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
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 ?
Ciao Ernesto,
ti ho invitato un messaggio privato.
A presto,
Salvatore
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?
Forse è più opporturno sviluppare qualcosa su misura. Non trascurare il fatto che dovrai gestire un metodo di pagamento.
A presto,
^SC
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
Ciao Simone,
ti ho scritto sull’email.
A presto,
^SC
Grazie per il tutorial, non avevo modo di avere un indirizzo https. Grazie a questo trucco ho risolto. Grazie
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?
Ciao Pietro,
prova a ripercorrere il tutorial passo passo per capire se ti sei perso qualcosa.
Fammi sapere, a presto,
Salvatore
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 ?!
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
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.
Ciao Paolo, ti ho scritto.
A presto,
Salvatore
Ciao,
ottimo, sono partito da questo tutorial e vorrei provare ad aggiungere dei bottoni con keyboard.
Hai qualche esempio?
Grazie 1000
Ciao Gianluca,
qui puoi trovare un esempio https://gist.github.com/salvatorecordiano/9ba24b3ac673d7c03a584a5d883aad2d
In particolare alla riga n. 34 trovi la creazione della keyboard.
A presto,
Salvatore
Non so come ringraziarti … mi ha sbloccato da un punto fermo.
Grazie mille
Gianluca
Ciao Salvatore, ottimo tutorial.
Volevo chiederti se è possibile inviare messaggi ad un numero telegram ma non in modalità bot.
Grazie
Ciao Lorenzo,
credo che tu ti riferisca alla possibilità di inviare messaggi come da un qualunque client (es. applicazione mobile), giusto?
Telegram ha un’API dedicata a questo. Trovi la documentazione qui https://core.telegram.org/api#telegram-api
A presto,
^SC
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
Ciao Gianluca,
qui https://gist.github.com/salvatorecordiano/8fbe96008b9a344c259ee73b11e370a3 trovi un esempio di inline keyboard.
A presto,
^SC
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!
Ciao Mario,
appena ho un attimo di tempo provo a buttare giù due righe sul funzionamento della tastiera.
In attesa prova a dare uno sguardo qui https://gist.github.com/salvatorecordiano/9ba24b3ac673d7c03a584a5d883aad2d
In particolare alla riga n. 34 trovi la creazione della keyboard.
A presto,
^SC
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?
Avevo commesso un errore di battitura nel copiare l’url del webhook. Grazie per la guida.
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 🙂
Ciao Alessio,
credo si possa fare ma non usando un bot. Prova a dare uno sguardo alla documentazione per creare un’applicazione Telegram (https://core.telegram.org/api#telegram-api).
A presto,
Salvatore
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.
Ciao Andrea,
grazie per i complimenti.
La soluzione che mi viene in mente guardando https://core.telegram.org/bots/api#message è quella di registrare/deregistrare gli utenti ad ogni messaggio new_chat_member/left_chat_member.
Per il sorteggio casuale puoi usare la funzione array_rand()
A presto,
Salvatore
Precisamente come posso utilizzare questo metodo?
Scusami ma non sono praticissimo in php.
Grazie in anticipo.
Ciao Andrea,
un esempio di utilizo di
array_rand()
la trovi qui: http://array_rand.onlinephpfunctions.com/A presto,
Salvatore
ma il file register.php dove lo trovo ?? Sono novizio, help me 🙂
Ciao Massimiliano,
il file register.php lo trovi qui https://github.com/salvatorecordiano/telegram-echo-bot/blob/master/register.php
Tutti i file del tutorial li trovi nell’archivio zip scaricabile da qui https://github.com/salvatorecordiano/telegram-echo-bot/archive/master.zip
A presto,
Salvatore
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
Ciao Camilla,
se non sei amministratore del primo gruppo (gruppo A), probabilmente è più facile ottenere quanto dici utilizzando un utente e non un bot.
A presto,
Salvatore
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.
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
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
Ciao Camilla,
si credo proprio che la cosa sia fattibile senza usare un bot ma un utente Telegram attraverso l’API.
A presto,
Salvatore
Salve, Volevo sapere se vi sia una soluzione da integrare in un sito web per poter inviare un messaggio ad un utente telegram. Grazie
Ciao Nunzio,
tecnicamente è possibile farlo. Non so se però esista qualcosa di già pronto.
A presto,
Salvatore
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.
Ciao Alberto,
potresti utilizzare i feed RSS del sito della tua scuola come indicato in questo post: https://www.salvatorecordiano.it/collegare-un-canale-telegram-ad-un-feed-rss/
A presto,
Salvatore
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 =)
Ciao Nicholas,
per fare quanto dici devi utilizzare i commands. Puoi fare riferimento alla documentazione ufficiale qui https://core.telegram.org/bots#commands
A presto,
Salvatore
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
Ciao Daniele,
si è corretto. Ti consiglio di utilizzare curl invece di file_get_contents che molto spesso è inibito per motivi di sicurezza.
A presto,
Salvatore
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 🙂
Ciao Manfredo,
pubblica il tuo code da qualche parte che provo a darti una mano.
A presto,
Salvatore
Eccolo:
(link rimosso)
(link rimosso)
Scrivimi pure via mail 🙂
Grazie
Ciao Manfredo,
ti ho scritto.
A presto,
Salvatore
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!!
Ciao Alessio,
ti ho risposto privatamente.
A presto,
^SC
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
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
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.
Aggiungo: all’improvviso ricevo questo errore durante il deploy:
—–> Failed to detect set buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/php.tgz
More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
! Push failed
c’è scritto che devo cancellare la buildpack ma non capisco come fare.
Ciao, prova a cancellare l’app Heroku e ricrearla.
A presto,
Salvatore
Ciao!
Potresti utilizzare i feed RSS come descritto in questo articolo https://www.salvatorecordiano.it/collegare-un-canale-telegram-ad-un-feed-rss/
A presto,
Salvatore
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
Ciao Riccardo,
grazie per i complimenti.
Hai reimpostato correttamente il WebHook?
Fammi sapere, a presto,
Salvatore
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
Se sono allestero non funziona come mai?
Ciao!
I bot funzionano ovunque Telegram funzioni. Mi dai qualche altra info per aiutarti?
Grazie,
Salvatore
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?
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
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.
Ciao Davide,
il messaggio può essere inviato dal bot verso un gruppo, un canale o un utente allo stesso modo.
Qui trovi la documentazione completa https://core.telegram.org/bots/api#sendmessage
Se hai 10 utenti da raggiungere, devi inviare 10 messaggi.
A presto,
Salvatore
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
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
Ciao Salvatore, potresti mandarmi un esempio documentato su come creare una tastiera per il mio bot? Grazie mille!
Ciao Davide,
potresti prendere spunto da questo esempio: https://gist.github.com/salvatorecordiano/9ba24b3ac673d7c03a584a5d883aad2d
Ti ricordo, in ogni caso, di fare riferimento all’API di Telegram qui https://core.telegram.org/bots/api#replykeyboardmarkup
A presto,
^SC
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.
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
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
Ciao!
Ti consiglio di dare una lettura alla documentazione ufficiale qui https://core.telegram.org/bots/api#inline-mode
A presto,
Salvatore
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
Ciao! Potresti pubblicare il codice da qualche parte (es. github)?
Grazie,
^SC
Ecco a te, Salvatore!
https://github.com/ticovan/Rae—Ear-training/blob/master/execute.php#L386
L’ideale sarebbe poter inviare un messaggio in risposta quando l’utente preme il tasto della inline keyboard, ma già con la semplice answercallbackquery (e quindi un pop up, se non ho interpretato male l’API) non funziona…
Grazie mille per la disponibilità!
Ciao!
Il codice è un po’ confusionario. Ti consiglio di dare una lettura approfondita alla documentazione ufficiale https://core.telegram.org/bots/api#answercallbackquery
A presto,
Salvatore
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!
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
Ciao Davide,
non ho capito bene cosa intendi per “cercare un qualsiasi file dentro un mio canale”.
Mi puoi spiegare meglio?
Grazie,
Salvatore
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
Ciao Mattia,
sei sicuro di aver completato correttamente il passaggio in cui si imposta il webhook,
utilizzando lo script register.php?
Fammi sapere, grazie,
Salva
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.
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
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 😀
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
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 😉
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
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?
Ciao Michela,
hai sostituito correttamente {TOKEN} e {APP NAME} nel file register.php?
Fammi sapere,
Salvatore
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
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
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
)
));
Ciao Semaya,
trovi un esempio di codice qui https://gist.github.com/salvatorecordiano/1a7864bab29d0d6e170493babaca5d26
Spero di esserti stato utile, a presto,
Salvatore
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
Ciao Daniele,
puoi trovare qualcosa in questo post https://www.salvatorecordiano.it/come-richiedere-il-numero-telefonico-ad-utente-telegram-da-un-bot/
A presto,
Salvatore
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
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
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
Ciao Salvatore,
complimenti per la guida, ho creato un bot per inviare delle notifiche di testo attraverso il browser,
questo è quello che invio https://api.telegram.org/bot(TOKEN)/sendMessage?chat_id=(CHAT)&text=ATTENZIONE
Vorrei fare la stessa cosa scrivendo direttamente su un gruppo, sai dirmi che stringa devo scrivere sul browser affinchè la ricevino tutti I membri del gruppo?
Grazie
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
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
Se richiami il bot dallo script PHP basta che scrivi il testo “Attenzione \nmacchina n105\nfuori controllo”, dove \n serve ad andare a capo.
A presto,
Salvatore
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!!!
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
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
Ciao Claudio,
sto pensando di scrivere un post in cui accennare ad un caso d’uso di NLP e Telegram.
Al momento, non ho nulla sottomano pronto per essere utilizzato.
A presto,
Salvatore
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
Ciao Silvano,
devi effettuare un nuovo deploy su Heroku dopo aver caricato il file su Dropbox.
A presto,
Salvatore
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
Ciao Luca,
ho risposto nel tuo commento successivo.
A presto,
Salvatore
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
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
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
Ciao Semaya,
in realtà come mostrato nel gist https://gist.github.com/salvatorecordiano/d0a6dfd36f6f92d50ff458efe5559b99
potresti fidarti del fatto che “message.chat.id” è uguale a “message.contact.user_id” solo quando ti sto mandando il mio stesso contatto.
A presto,
Salvatore
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
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?
Ciao Domenico,
non è così immediato da fare. Dovresti legare il tuo bot ad un database oppure ad esempio ad un file Google Sheet.
A presto,
Salvatore
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.
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
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?
Ciao Federico,
quello che vorresti fare non è semplice da realizzare.
Per iniziare ti consiglio di dare uno sguardo a questo stralcio di codice https://gist.github.com/salvatorecordiano/2fd5f4ece35e75ab29b49316e6b6a273
A presto,
Salvatore
ok grazie della risposta, vorrei creare un bot ma probabilmente non ho le conoscenze per farlo, per caso lei fa bot, anche a pagamento?
potresti aiutarmi a creare questo tipo di bot? non gratis ovviamente
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è?
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
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?
Ciao Giuseppe,
mi spieghi meglio cosa vuoi fare?
Ti consiglio come primo step ottenere il risultato della tutorial e poi proseguire.
A presto,
Salvatore
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.
Ciao Filippo,
ti può essere utile questo articolo https://www.salvatorecordiano.it/collegare-un-canale-telegram-ad-un-feed-rss/
Fammi sapere, a presto,
Salvatore
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.
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
Ciao Filippo,
adesso “maker” si chiama “webhooks”.
A presto,
Salvatore
Ciao Filippo,
adesso “my recipes” si chiama “my applets”, poi fai click su “new applet”.
A presto,
Salvatore
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?
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?
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
Ciao Salvatore, com’è possibile che su Heroku non mi è possibile selezionare dropbox come deployment method?
Ho già un account e dropbox sul mio computer
ho provato a fare come dice questo articolo ma manco trovo il collegamento per dropbox nel heroku.grazie salvatore ma non funziona
Ciao Salvatore,
per inviare messaggi ad un canale utilizzo con successo il format “URL”.
Ora vorrei inviare un file .xlsx che è salvato nel pc. Ho provato con sendDocument ma non funziona.
Ti metto l’indirizzo di come imposto il comando:
http://api.telegram.org/bot%5Bnomebot%5D/sendDocument?chat_id=%5Bidchat%5D&document=%5Bpathfile.xlsx%5D
Sai dirmi dove sbaglio?
Grazie mille
Alberto
A me non c’è Dropbox come deployament c’è solo GitHub, Heroku E Container Registry Cosa Devo Fare Help Me
Buongiorno,
non riesco a trovare il deploy su dropbox, come faccio?
Ciao Salvatore,
innanzitutto grazie per i consigli e la disponibilità che mi hai dato tempo fa, ora vorrei chiederti come inviare ad un canale un file o documento.
Ho provato ad utilizzare il seguente comando via URL ma senza successo, questo:
https://api.telegram.org/bot%5Bbot%5D/sendDocument?chat_id=%5Bid chat]&document='[path file]’
Sai dirmi dove sbaglio?
Grazie Mille
Alberto
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?
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
neanche a me, per caso hai trovato soluzioni, ? grazie
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
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.
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
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
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
Ciao Angelo,
potresti prendere ispirazione da questo articolo https://www.salvatorecordiano.it/debug-dei-messaggi-di-update-di-un-bot-telegram/
A presto,
Salvo
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
Ciao Maurizio,
il problema che poni non è così semplice da risolvere.
Dovrei scrivere un articolo intero in merito.
A presto,
Salvo
ciao ,a me non risponde al comando mi dice non trovato
https://000webhostapp.com/webhook.php
$WEBHOOK_URL = ‘https://{PROJECT NAME}.000webhostapp.com/webhook.php’;
$BOT_TOKEN = ‘{TOKEN}’
Ciao Felix,
devi modificare {PROJECT NAME} e {TOKEN} token come spiegato nella guida e poi caricare il file.
A presto,
Salvo
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?
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
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.
Ciao Antonio, quanto chiedi non è possibile farlo.
A presto,
Salvo
Articolo interessante.
Volevo segnalarle che purtroppo 000webhost non permette più agli account gratuiti di utilizzare script invocati da bot, ed il loro sistema di rilevamento abusi blocca l’account se ne trova.
Vedere ad esempio:
https://www.000webhost.com/forum/t/are-telegram-bots-allowed-on-free-plan/208897
https://www.000webhost.com/forum/t/telegram-bot-dont-work/177111
Grazie
Ciao Paolo,
grazie della segnalazione.
Ho aggiunto un warning sull’articolo in attesa di aggiornarlo.
A presto,
Salvo
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.
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
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?
Ciao Beatrice,
mi potresti spiegare meglio?
Grazie,
Salvo
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?
Ciao Michele,
così su due piedi non riesco ad aiutarti.
Se sicuro di avere caricato i file corretti sul tuo hosting?
Fammi sapere, a presto,
Salvo
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.
Ciao Federico,
grazie per i complimenti.
Conto di scrivere qualche esempio per autocode.com nelle prossime settimane.
A presto,
Salvatore
Ciao, non ho capito ma hostarlo su hostinger è vietato o non te lo permette di fare? Ci sono altri modi per hostarlo gratuitanente?
Ciao Ale,
ti consiglio di seguire quest’altra guida https://www.salvatorecordiano.it/creare-un-bot-telegram-senza-hosting/ oppure di acquistare un hosting condiviso con un costo annuale inferiore a 10 euro.
A presto,
Salvo
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
Ciao!
Si può fare purché il bot sia presente nel canale o gruppo.
Per aggiungere il bot al canale/gruppo devi essere amministratore del canale.
A presto,
Salvo
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.
Ciao Alex,
potresti prendere ispirazione da questo stralcio di codice: https://gist.github.com/salvatorecordiano/2fd5f4ece35e75ab29b49316e6b6a273
A presto,
Salvo
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!
Ciao Alex,
potresti prendere ispirazione da questo stralcio di codice: https://gist.github.com/salvatorecordiano/2fd5f4ece35e75ab29b49316e6b6a273
A presto,
Salvo
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?
Ciao Gabriele,
ho sostituto correttamente la varibile
$WEBHOOK_URL
con l’indirizzo del tuo hosting?Fammi sapere, a presto,
Salvo
Ciao Salvatore,
volevo sapere se avevi fatto una guida per sviluppare un BOT usando node.js
Ciao e complimenti!
Federico.
Ciao Federico,
ti consiglio questo link https://www.salvatorecordiano.it/creare-un-bot-telegram-senza-hosting/.
A presto,
Salvo
Ciao, volevo chiederti come faccio a usare un bot che inoltra un messaggio o file in un gruppo?
Grazie
Ciao Lory,
al termine dell’articolo trovi alcuni link da cui prendere spunto.
A presto,
Salvo
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?
Ciao Samuele,
in questo caso devi inoltrare il messaggio dal bot a te per ottenere quanto vuoi fare.
A presto,
Salvo
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
Ciao Diego,
sei sicuro di avere impostato il webhook correttamente?
A presto,
Salvo
cao il bot non considera $firstname,, su “ciao $firstname benvenuto”, mi scrive solo la risposta “ciao benvenuto”
salve, non mi funziona $firstname
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
altro quesito, dove si mette
if($text==”ok”)
{
$response = “Ciao $firstname, benvenuto!”;
}
si può integrate un array con risposta multipla?
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?
Ciao Luca,
sembrerebbe che lo url che hai comunicato a Telegram è errato.
A presto,
Salvo