
Oggi costruiremo in un bot di Telegram utilizzando (o funzioni di Yandex — per brevità) e (o Storage a Oggetti — per chiarezza). Il codice sarà su Node.js. Tuttavia, c'è un piccolo dettaglio: un'agenzia chiamata, per così dire, RosKomTsenzur (la censura è vietata dall'articolo 29 della Costituzione della Federazione Russa), non consente ai fornitori di servizi Internet russi di inviare richieste a Telegram API all'indirizzo: https://api.telegram.org/. Ma noi non lo faremo — se non si può, non si può. Infondo nel nostro borsone abbiamo i cosiddetti webhook — grazie ai quali non facciamo richieste a un indirizzo specifico, ma semplicemente inviamo la nostra richiesta come risposta a qualsiasi richiesta che riceviamo. Cioè, come a Odessa — rispondiamo a una domanda con un'altra domanda. Pertanto Telegram API non sarà presente nel nostro codice.
DisclaimerI nomi delle organizzazioni statali menzionati in questo articolo sono inventati e ogni somiglianza con nomi di organizzazioni realmente esistenti è puramente casuale.
Quindi, creeremo un bot che ci fornirà pensieri intelligenti. Proprio come nell'immagine:
Puoi provarlo in azione — ecco il nome: @SmartThoughtsBot. Hai notato il pulsante «Competenze di Alice»? Это потому, что бот является своеобразным «компаньоном» для одноименного abilità di Alice, cioè svolge le stesse funzioni di abilità di Alice e, forse, potranno coesistere pacificamente pubblicizzando l'uno l'altro. Di cosa fare per creare l'abilità Pensieri Intelligenti è spiegato nell'articolo . Ora (dopo aver apportato alcune modifiche già dopo la pubblicazione dell'articolo sopra menzionato) su uno smartphone questa abilità apparirà più o meno così:
Creazione del bot
Mi piacerebbe che questo tutorial fosse utile a tutti, compresi i principianti 'costruttori di bot'. Pertanto, in questa sezione descriverò piuttosto dettagliatamente come creare bot in Telegram‘e. Per chi non ha bisogno di questa informazione — passa alle sezioni successive.
Apriamo l'applicazione Telegaram, chiamiamo il padre di tutti i bot (loro hanno tutto come le persone) — @BotFather — e iniziamo dando il comando /help, per rinfrescare la memoria su cosa possiamo fare. Ora ci interesserà il comando /newbot.

Poiché il bot descritto qui è già stato creato, per scopi dimostrativi creerò per un breve periodo un altro bot (dopo lo cancellerò). Lo chiamerò DemoHabrBot. I nomi (username) di tutti i bot di Telegram devono terminare con la parola bot, per esempio: MyCoolBot o my_cool_bot — questo è per i bot. Ma prima diamo al bot un nome (name) — e questo per le persone. Il nome può essere in qualsiasi lingua, contenere spazi e non deve necessariamente finire con una parola bot, e non deve nemmeno essere unico. In questo esempio ho chiamato questo bot Demo Habra.

Ora scegliamo un nome per il bot (username, quello per i bot). Chiamiamolo DemoHabrBot. Tutto ciò che riguardava il nome del bot (name) non ha nulla a che fare con il suo nome — username (o ha a che fare, ma con precisione inversa). Dopo aver creato con successo un nome unico per il bot, dobbiamo copiare e conservare (nella massima segretezza!) il token mostrato nella schermata con la freccia rossa. Con questo faremo qualcosa di più tardi Telegram‘a webhook per la nostra funzione Yandex.

Ora diamo un comando al padre di tutti i bot: /mybots, e ci mostrerà l'elenco di tutti i bot che abbiamo creato. Lasciamo per ora in pace il nostro bot appena sfornato Demo Habra (è stato creato per mostrare come creare bot, ma lo utilizzeremo oggi anche per altre dimostrazioni), e consideriamo il bot Pensieri Intelligenti (@SmartThoughtsBot). Facciamo clic nel elenco di bot sul pulsante con il suo nome.

Qui possiamo configurare il nostro bot. Facendo clic sul pulsante Modifica… passeremo alla modifica di una delle opzioni. Ad esempio, cliccando sul pulsante Modifica Nome possiamo cambiare il nome del bot, ad esempio invece di Pensieri Intelligenti, scrivere Idee Strampalate. Botpic — è l'avatar del bot, deve essere non meno di 150 x 150 px. Descrizione — è una breve descrizione che l'utente vede al primo avvio del bot, come risposta alla domanda: Cosa può fare questo bot? Informazioni — una descrizione ancora più breve, che viene trasmessa con il link al bot (https://t.me/SmartThoughtsBot) o durante la visualizzazione delle informazioni su di esso.

Rimane solo da configurare i comandi. Per farlo, facciamo clic sul pulsante Modifica Comandi. Per standardizzare la pratica degli utenti Telegram è consigliato utilizzare sempre due comandi: /start e /help, e se il bot ha bisogno di impostazioni — un ulteriore comando /settings. Il nostro bot è semplice come una palla, quindi per ora non ha bisogno di impostazioni. Scriviamo i primi due comandi, che poi gestiremo nel codice. Ora, se nel campo di input l'utente inserirà uno slash (il segno della barra obliqua: /), apparirà un elenco di comandi per una rapida selezione. Tutto come nell'immagine: a sinistra — impostiamo i comandi tramite il bot padre; a destra questi comandi sono già disponibili per gli utenti nel nostro bot.

funzione Yandex
Ora, quando il nostro bot è stato creato, passiamo a Yandex.Cloud, per creare una funzione che eseguirà il codice del nostro bot. Se non hai mai lavorato con Yandex.Cloud , leggi il materiale , e poi — . Sono quasi sicuro che questi due articoli relativamente brevi ti daranno una buona comprensione di base dell'argomento.
Quindi, nella console di Yandex.Cloud , nel menu di navigazione a sinistra seleziona il punto Cloud Functions, e poi clicca sul pulsante Crea funzione. Assegna un nome e per te stesso una breve descrizione.

Dopo aver premuto il pulsante Crea e dopo pochi secondi, la nuova funzione apparirà nell'elenco di tutte le funzioni. Fai clic sul suo nome — ti porterà alla pagina Panoramica della nostra funzione. Qui devi attivare (On) l'interruttore Funzione pubblica, affinché sia accessibile dal mondo esterno (per il di Yandex.Cloud) e il valore dei campi Link per la chiamata e Identificatore — mantenerlo ben nascosto da tutti tranne che da te stesso e da Telegram, affinché la tua funzione non possa essere richiamata da diversi truffatori.

Ora, utilizzando il menu a sinistra, passiamo a Redattore funzioni. Mettiamo da parte per un breve momento i nostri Pensieri Intelligenti, e creiamo una funzione modello minima per testare il funzionamento del nostro bot... D'altra parte, in questo contesto, questa funzione è già il nostro bot... In breve, ora e proprio qui faremo un bot semplicissimo che "risponderà" (cioè invierà indietro) le richieste degli utenti. Questo modello può essere utilizzato ogni volta che crei nuovi bot di Telegram, per assicurarti che la connessione con Telegramfunzioni correttamente. Clicchiamo su Crea file, lo chiamiamo index.js, e nell'editor di codice online incolliamo il seguente codice in questo file: module.exports.bot = async (event) => { const body = JSON.parse(event.body);const msg = { 'method': 'sendMessage', 'chat_id': body.message.chat.id, 'text': body.message.text };return { 'statusCode': 200, 'headers': { 'Content-Type': 'application/json' }, 'body': JSON.stringify(msg), 'isBase64Encoded': false }; };
Nella console di Yandex.Cloud dovrebbe apparire più o meno così:
Successivamente, un po' più in basso indichiamo

Punto di ingresso index.bot — index, dove è il nome del file ( — nome della funzione (index.js), e bot module.exports.bot). Lascia gli altri campi "come sono" e in alto a destra clicca sul pulsanteCrea versione . Dopo pochi secondi, questa versione della funzione verrà creata. Nel breve termine, dopo il testdel webhook , creeremo una nuova versione —Ora, quando abbiamo creato Pensieri Intelligenti.

Storage a Oggetti
, vediamo, mentre siamo nella console funzione Yandex, facciamo, mentre siamo nella console di Yandex.Cloud, creeremo il cosiddetto bucket (bucket, ovvero secchio in russo, non certamente bouquet) per la conservazione di file immagine che saranno utilizzati nel nostro bot Pensieri Intelligenti. Nel menu di navigazione a sinistra, selezioniamo la voce Object Storage, premiamo il pulsante Crea bucket, diamo un nome, per esempio, img-bucket, e, cosa più importante, Accesso in lettura agli oggetti lo rendiamo pubblico—altrimenti Telegram non potrà vedere le nostre immagini. Tutti gli altri campi li lasciamo senza modifiche. Premi il pulsante Crea bucket.

Dopo di che, l'elenco di tutti i bucket potrebbe apparire più o meno così (se questo è il tuo unico bucket):

Ora ti propongo di cliccare sul nome del bucket e all'interno crearci una cartella per organizzare la conservazione delle immagini per le diverse tue applicazioni. Ad esempio, per il bot di Telegram, Pensieri Intelligenti ho creato una cartella chiamata tg-bot-smart-thoughts (non ti preoccupare, capirò questo codice). Creane anche tu una.

Ora puoi cliccare sul nome della cartella, entrarci e caricare i file:

E cliccando sul nome del file—ottenerlo URL per utilizzarlo nel nostro bot, e in generale—da qualche parte (ma non pubblicarlo URL senza necessità, poiché il traffico da Storage oggetti è a pagamento).

Ecco, insomma, tutto qui con Storage oggetti. Ora saprai cosa fare quando vedrai la richiesta di caricare file lì.
Webhook
Adesso impostiamo il webhook —cioè, quando il bot riceve un aggiornamento (ad esempio, un messaggio da un utente), dal server Telegram verrà inviato a noi funzione Yandex una richiesta (request) con i dati. Ecco la stringa che puoi semplicemente incollare nella barra degli indirizzi del browser e poi aggiornare la pagina (è necessario farlo solo una volta): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Basterà solo sostituire {bot_token} con il token che abbiamo ricevuto dal bot padre al momento della creazione del nostro bot, e {webhook_url} —con URL il nostro funzioni di Yandex. Un momento! Ma RosKomTsenzur impedisce ai provider in RF di servire l'indirizzo https://api.telegram.org. Giusto. Ma tu inventa qualcosa. Puoi, per esempio, chiedere a tua nonna in Ucraina, Israele o Canada—lì non ci sono censure «russo», e Dio solo sa come vivono le persone senza di esse. Di conseguenza, la richiesta-risposta nell'impostare il webhook dovrebbe apparire così:

Stiamo testando. Dovrebbe «rispecchiare».

E così è. Le nostre congratulazioni—ora funzione Yandex è diventato Telegram-bot!
Pensieri Intelligenti
Ora facciamo Pensieri Intelligenti. Il codice è aperto e si trova su . È ben commentato e contiene solo un centinaio di righe. Leggilo come una diva dell'opera leggendo il libretto!

Clona il progetto e installa le dipendenze:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Fai le modifiche necessarie nel file index.js (opzionale; puoi non modificare nulla). Crea zip-archivio, con il file index.js e la cartella node_modules all'interno, ad esempio chiamandolo smart.zip.

Ora vai nel terminale alla nostra funzioni di Yandex, seleziona la scheda ARCHIVIO ZIP, clicca il bottone Scegli il file, e carica il nostro archivio smart.zip. Infine, in alto a destra, premi il pulsante . Dopo pochi secondi, questa versione della funzione verrà creata. Nel breve termine, dopo il test.

Dopo qualche secondo, quando la funzione si aggiorna, testiamo di nuovo il nostro bot. Ora non "rispecchia" più, ma fornisce pensieri intelligenti!

Per oggi è tutto. Altri articoli seguiranno. Chi è interessato a leggere contenuti simili può iscriversi alle notifiche per nuovi articoli. Puoi iscriverti qui, o su Telegram-canale , o Twitter .
Link
Donazioni
Fonte: habr.com
