Creare un bot telegram in V

In questo breve articolo vi spiegherò come creare un semplice bot telegram con il nuovo linguaggio di programmazione V.

Prequisiti

Installazione

La libreria può esssere installata in due modi: o con il gestore dei pacchetti ufficiale o con vpkg
Per installare la libreria, eseguire su terminale:
v install dariotarantini.vgram

Utilizzo

Utilizzare la libreria è molto semplice, ogni metodo si utilizza esattamente come descritto sul sito ufficiale di Telegram.
Dopo aver creato il bot da @BotFather, creare un file con estensione .v. All interno, iniziare dichiarando il modulo e importando la libreria con:

module main

import dariotarantini.vgram

fn main(){
    bot := vgram.new_bot('IL TUO TOKEN QUI')
}

Cosa abbiamo fatto? Abbiamo inizializzato nella variabile bot una struttura vgram.Bot che ci permetterà di chiamare tutte le funzioni del bot.
Ora, se volessimo inviare un messaggio basterà chiamare la funzione send_message con i parametri obbligatori, in questo caso l’id della chat e il testo da inviare.

bot.send_message({
    chat_id: "IL TUO ID UTENTE", // <- modificare questo campo!
    text: 'Ehilà, sono stato creato con V!'
})

Ora, rimane il problema di renderlo un vero e proprio “chatbot”.
Quando inviare qualcosa all interno di una chat in cui è presente un bot (o anche in chat stessa con il bot) il bot riceve un update, un oggetto json che contiene informazioni su tutto quello che ha ricevuto. Ogni update è identificato da un’ID univoco.
Può contenere testo, immagini, audio ecc.
In vgram, l’oggetto vgram.Update è semplicemente una struttura V contenente tutte quei dati.
Ad esempio, se volessimo rispondere a un messaggio come “ciao”, il codice dovrebbe essere il seguente:

mut updates := []vgram.Update{} // dichiariamo un array di Update (mut perchè di default ogni variabile in V è immutabile!)
mut last_offset := 0 // inizializziamo un contatore per l'ultimo update processato
for {
    updates = bot.get_updates({offset: last_offset, limit: 100}) // chiamiamo il metodo get_updates 
    for update in updates { // dato che get_updates ritorna un array, processiamo per ogni elemento
        if last_offset < update.update_id {
            last_offset = update.update_id // aggiorniamo l'ultimo id update
            if update.message.text == "ciao" {
                bot.send_message({
                    chat_id: update.message.from.id.str(), // chat_id è di tipo stringa, quindi dobbiamo chiamare .str()
                    text: 'Ciao, come va?'
                })
            }
        }
    }
}