Creare un Bot Telegram senza hosting

Nel 2016 ho scritto una guida per creare un bot Telegram step by step, oggi a distanza di più di 4 anni provo a riproporre un modo alternativo per fare la stessa cosa senza richiedere un servizio di hosting.

Anche in questo caso vedremo passo dopo passo come creare bot per Telegram semplicissimo.

Il bot non svolge nessuna azione utile se non quella di ripetere ciò che gli scriviamo.

Per prima cosa procediamo con la creazione del 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 Telegram scrivendo a @BotFather oppure dal client web all’indirizzo https://web.telegram.org.

Dopo aver avviato 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.

La fase successiva consiste nella creazione di un account sulla piattaforma Autocode.com che funzionerà da hosting del nostro bot Telegram.

Andiamo sul sito autocode.com, apparirà una pagina come quella seguente.

Facciamo click su Start building for free. A questo punto apparirà il seguente form.

Procediamo con la registrazione inserendo il nostro e-mail address, lo username da associare al nostro account ed una password. Per completare la registrazione facciamo click sul bottone Sign Up FREE.

Autocode ci porrà una serie di domande per conoscerci meglio. Al momento qualunque risposta diamo alle domande non ha alcun impatto sul nostro account.

L’ultima domanda ci chiede quale tipologia di piano vogliamo usare, noi sceglieremo Basic Free, quindi la versione gratuita.

Per proseguire facciamo click su Continue to Autocode. Apparirà la seguente schermata.

Facciamo click sul bottone Save in basso a destra. Nel popup che appare ci verrà richiesto di definire il nome del progetto. Inseriamo ad esempio echo-bot e facciamo click su Save new project.

L’area mostrata dalla figura seguente è l’editor che contiene il codice di esempio dello script __main__.js.

Cancelliamo il contenuto dell’editor e sostituiamolo con il codice contenuto su GitHub qui. Così facendo l’editor apparirà come nella schermata seguente.

Facciamo nuovamente click sul bottone Save per salvare le modifiche fatte.

Adesso dobbiamo comunicare a Telegram come raggiungere il nostro script Node.js pubblicato su Autocode. Per fare ciò dobbiamo recuperare il deploy url da autocode, che si trova in basso, racchiuso tra parentesi quadre.

Come mostrato nell’immagine sopra, il deploy url inizia con https ed è colorato di blu.

Proseguiamo con la modifica della stringa dell’indirizzo web che segue, sostituendo {YOUR TOKEN HERE} con il token generato da Bot Father ad inizio guida e {YOUR URL HERE} con il deploy url appena copiato.

https://api.telegram.org/bot{YOUR TOKEN HERE}/setWebhook?url={YOUR URL HERE}

Per costruire correttamente lo url come mostrato nell’immagine sottostante è necessario sostituire i testi segnaposto {YOUR TOKEN HERE} e {YOUR URL HERE} con i valori ottenuti durante il tutorial.

Nell’immagine che segue è mostrato un url ben formato.

Copia ed incolla l’url ben formato sulla finestra del tuo browser. Se tutto è andato bene la pagina web mostra il seguente messaggio

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

Altrimenti controlla di aver effettuato le sostituzioni correttamente.

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

Questions?

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

15 thoughts on “Creare un Bot Telegram senza hosting”

  1. Salve, ho provato a seguire la procedura indicata tuttavia nella compilazione del codice su Autocode spunta fuori il seguente errore:
    RuntimeError: Cannot read property ‘chat’ of undefined

    TypeError: Cannot read property ‘chat’ of undefined
    at module.exports (/functions/__main__.js:11:36)

    The JSON output of the error is below.

  2. Ciao Antonio volevo chiarimenti, perché dal passo successivo alla registrazione la guida è cambiata probabilmente il sito è stato aggiornato, non saprei.
    Sto provando a seguirla cercando ad intuito ma non riesco, puoi rifarla con il nuovo aggiornamento.
    Grazie mille

  3. Ciao Salvatore, volevo capire come poter implementare una funzione che permetta al bot di restituire foto scelte a caso da una cartella ad una determinata istruzione.

    Grazie mille per la disponibilità.

    Teo

  4. Buongiorno Salvatore,
    intanto ti ringrazio per la tua guida e per il lavoro che hai condiviso. Su Autocode ho provato ad implementare BOT piu’ complessi utilizzando telegraf, ma non si riesce ad attivare la libreria. Hai qualche suggerimento?

  5. Buongiorno Salvatore
    ho seguito la guida passo passo
    premetto che sono alle prime armi…

    nel codice php ho modificato un codice presente su github per la realizzazione di un bot telegram per il meteo
    ho anche provato con il codice non moficato (inserendo ovviamente il token del bot e l API per il servizio meteo) ma
    nel momento in cui lancio
    https://api.telegram.org/bot{YOUR TOKEN HERE}/setWebhook?url={YOUR URL HERE} la risposta del browser è corretta
    quindi controllo su telegram ma il bot non funziona allora lancio sul browser:
    {YOUR URL HERE} (ovviamente il mio url) e mi da un messaggio di errore:
    {“error”:{“type”:”SaveError”,”message”:”Function definition error (functions/__main__.js)\nUnexpected token (1:0)”}}
    puoi essermi d’aiuto??
    grazie

Leave a Reply

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