Δημιουργία bot Telegram στο Yandex.Cloud

Δημιουργία bot Telegram στο Yandex.Cloud

Σήμερα, από αυτοσχέδια υλικά, θα συλλέξουμε μέσα Yandex.Cloud Τηλεγράφημα bot χρησιμοποιώντας Λειτουργίες Yandex CloudΛειτουργίες Yandex για συντομία) και Αποθήκευση αντικειμένων YandexΑποθήκευση αντικειμένων - για λογους σαφηνειας). Ο κωδικός θα είναι ενεργοποιημένος Node.js. Ωστόσο, υπάρχει μια πικάντικη περίσταση - μια συγκεκριμένη οργάνωση που ονομάζεται, ας πούμε, RossKomCensorship (η λογοκρισία απαγορεύεται από το άρθρο 29 του Συντάγματος της Ρωσικής Ομοσπονδίας), δεν επιτρέπει στους παρόχους Διαδικτύου στη Ρωσία να μεταφέρουν αιτήματα σε Telegram API по адресу: https://api.telegram.org/. Λοιπόν, δεν θα το κάνουμε - όχι, όχι. Πράγματι, στην τσάντα μας υπάρχουν τα λεγόμενα. webhooks - με τη βοήθειά τους, δεν κάνουμε αιτήματα σε συγκεκριμένη διεύθυνση, αλλά αποστέλλουμε μόνο το αίτημά μας ως απάντηση σε οποιοδήποτε αίτημα προς εμάς. Δηλαδή, όπως στην Οδησσό - απαντάμε σε μια ερώτηση με μια ερώτηση. Να γιατί Telegram API δεν θα εμφανιστεί στον κώδικά μας.

Αποποίηση ευθυνώνΤα ονόματα οποιωνδήποτε κρατικών οργανισμών που αναφέρονται σε αυτό το άρθρο είναι εικονικά και πιθανές συμπτώσεις με ονόματα οργανισμών της πραγματικής ζωής είναι τυχαίες.

Έτσι, θα φτιάξουμε ένα bot που θα μας εφοδιάζει με έξυπνες σκέψεις. Ακριβώς όπως στην εικόνα:

Δημιουργία bot Telegram στο Yandex.Cloud

Μπορείτε να το δοκιμάσετε στην πράξη - εδώ είναι το όνομα: @SmartThoughtsBot. Παρατηρήστε το κουμπί "Η ικανότητα της Αλίκης"? Κι αυτό γιατί το bot είναι ένα είδος «συντρόφου» για τους επώνυμους Η ικανότητα της Αλίκης, δηλ. εκτελεί τις ίδιες λειτουργίες όπως Η ικανότητα της Αλίκης και, ίσως, ότι μπορούν να συνυπάρχουν ειρηνικά διαφημίζοντας ο ένας τον άλλον. Σχετικά με τον τρόπο δημιουργίας Ικανότητα Έξυπνης Σκέψης που περιγράφεται στο άρθρο Η Αλίκη αποκτά τη δεξιότητα. Τώρα (αφού έγιναν κάποιες αλλαγές μετά τη δημοσίευση του παραπάνω άρθρου) σε smartphone αυτό επιδεξιότητα θα μοιάζει κάπως έτσι:

Δημιουργία bot Telegram στο Yandex.Cloud

Δημιουργία bot

Θα ήθελα αυτό το σεμινάριο να είναι χρήσιμο σε όλους, συμπεριλαμβανομένου. και αρχάριοι "bot builders". Ως εκ τούτου, σε αυτήν την ενότητα θα περιγράψω λεπτομερώς πώς να δημιουργήσετε γενικά Telegramείναι bots. Για όσους δεν χρειάζονται αυτές τις πληροφορίες, προχωρήστε στις επόμενες ενότητες.

Ανοίξτε την εφαρμογή Telegaram, λέμε τον πατέρα όλων των ρομπότ (τα έχουν όλα σαν άνθρωποι) - @BotFather - και για αρχή, θα του δώσουμε την εντολή / help για να ανανεώσει τη μνήμη μας για το τι μπορούμε να κάνουμε. Τώρα μας ενδιαφέρει η ομάδα / newbot.

Δημιουργία bot Telegram στο Yandex.Cloud

Επειδή το bot που περιγράφεται εδώ έχει ήδη δημιουργηθεί, για λόγους επίδειξης θα δημιουργήσω ένα άλλο bot για σύντομο χρονικό διάστημα (μετά θα το διαγράψω). Θα του τηλεφωνήσω DemoHabrBot. Ονόματα (όνομα χρήστη) όλα τα ρομπότ τηλεγραφήματος πρέπει να τελειώνουν με μια λέξη του bot, για παράδειγμα: MyCoolBot ή my_cool_bot Αυτό είναι για bots. Αλλά πρώτα, δώστε στο bot ένα όνομα (όνομα) είναι για ανθρώπους. Το όνομα μπορεί να είναι σε οποιαδήποτε γλώσσα, να περιέχει κενά, δεν χρειάζεται να τελειώνει με μια λέξη του bot, και δεν χρειάζεται καν να είναι μοναδικό. Σε αυτό το παράδειγμα, κάλεσα αυτό το bot Demo Habr.

Δημιουργία bot Telegram στο Yandex.Cloud

Τώρα επιλέξτε ένα όνομα για το ρομπότ (όνομα χρήστη, αυτό για bots). Ας το ονομάσουμε DemoHabrBot. Όλα όσα σχετίζονται με το όνομα του bot (όνομα) δεν σχετίζεται καθόλου με το όνομά του - όνομα χρήστη (ή ισχύει, αλλά ακριβώς το αντίθετο). Αφού δημιουργήσουμε με επιτυχία ένα μοναδικό όνομα bot, πρέπει να αντιγράψουμε και να αποθηκεύσουμε (με απόλυτη εχεμύθεια!) το διακριτικό που εμφανίζεται στο στιγμιότυπο οθόνης με ένα κόκκινο βέλος. Με τη βοήθειά του, θα εγκαταστήσουμε αργότερα την εξερχόμενη TelegramΈνα webhook για μας Λειτουργία Yandex.

Δημιουργία bot Telegram στο Yandex.Cloud

Και τώρα θα δώσουμε την εντολή στον πατέρα όλων των bot: /mybotsκαι θα μας δείξει μια λίστα με όλα τα bots που έχουμε δημιουργήσει. Ας αφήσουμε το φρεσκοψημένο μποτ ήσυχο προς το παρόν Demo Habr (δημιουργήθηκε για να δείξει πώς να δημιουργήσετε bots, αλλά θα το χρησιμοποιήσουμε σήμερα για άλλους σκοπούς επίδειξης) και σκεφτείτε το ρομπότ Έξυπνες Σκέψεις (@SmartThoughtsBot). Κάντε κλικ στο κουμπί με το όνομά του στη λίστα των bots.

Δημιουργία bot Telegram στο Yandex.Cloud

Εδώ μπορούμε να ρυθμίσουμε το bot μας. Πατώντας ένα κουμπί Επεξεργασία… θα προχωρήσουμε στην επεξεργασία μιας ή άλλης επιλογής. Για παράδειγμα, κάνοντας κλικ στο κουμπί Επεξεργασία ονόματος μπορούμε να αλλάξουμε το όνομα του bot, ας πούμε αντί για Έξυπνες Σκέψεις, γράψε τρελές ιδέες. Botpic - αυτό είναι το avatar του bot, πρέπει να είναι τουλάχιστον 150 x 150 px. Περιγραφή είναι μια σύντομη περιγραφή που βλέπει ο χρήστης όταν το bot εκκινείται για πρώτη φορά, ως απάντηση στην ερώτηση: Τι μπορεί να κάνει αυτό το bot; Σχετικά - μια ακόμη πιο σύντομη περιγραφή, η οποία μεταδίδεται με έναν σύνδεσμο στο bot (https://t.me/SmartThoughtsBot) ή κατά την προβολή πληροφοριών σχετικά με αυτό.

Δημιουργία bot Telegram στο Yandex.Cloud

Απλά πρέπει να ρυθμίσουμε τις εντολές. Για να το κάνετε αυτό, πατήστε το κουμπί Επεξεργασία εντολών. Για την τυποποίηση των πρακτικών των χρηστών Telegram συνιστά να χρησιμοποιείτε πάντα δύο εντολές: /αρχή и /βοήθεια, και εάν το bot χρειάζεται ρυθμίσεις, μια πρόσθετη εντολή /settings. Το bot μας είναι τόσο απλό όσο μια μπάλα, επομένως δεν χρειάζεται ακόμα ρυθμίσεις. Γράφουμε τις δύο πρώτες εντολές, τις οποίες στη συνέχεια θα επεξεργαστούμε στον κώδικα. Τώρα, εάν ο χρήστης εισάγει κάθετο (κάθετος χαρακτήρας: /) στο πεδίο εισαγωγής, θα εμφανιστεί μια λίστα εντολών για τη γρήγορη επιλογή του. Όλα είναι όπως στην εικόνα: στα αριστερά - ορίζουμε εντολές μέσω του bot-father. στα δεξιά, αυτές οι εντολές είναι ήδη διαθέσιμες στους χρήστες στο bot μας.

Δημιουργία bot Telegram στο Yandex.Cloud

Λειτουργία Yandex

Τώρα που δημιουργήθηκε το bot μας, ας πάμε στο Yandex.Cloudγια να δημιουργήσουμε μια συνάρτηση που θα εκτελεί τον κώδικα bot μας. Εάν δεν έχετε συνεργαστεί με Yandex.Cloud διαβάστε το υλικό Η Αλίκη στη χώρα του Μπίτριξ, και μετά - Οι λειτουργίες Yandex στέλνουν αλληλογραφία. Είμαι σχεδόν σίγουρος ότι αυτά τα δύο σχετικά μικρά άρθρα θα είναι αρκετά για να έχετε μια βασική κατανόηση του θέματος.

Στην κονσόλα λοιπόν Yandex.Clouds στο αριστερό μενού πλοήγησης, επιλέξτε το στοιχείο Λειτουργίες Cloudκαι, στη συνέχεια, πατήστε το κουμπί Δημιουργήστε μια συνάρτηση. Του δίνουμε ένα όνομα και για εμάς - μια σύντομη περιγραφή.

Δημιουργία bot Telegram στο Yandex.Cloud

Αφού πατήσετε το κουμπί δημιουργήσετε και μετά από μερικά δευτερόλεπτα, η νέα λειτουργία θα εμφανιστεί στη λίστα όλων των λειτουργιών. Κάντε κλικ στο όνομά της - αυτό θα μας μεταφέρει στη σελίδα Αναθεώρηση η λειτουργία μας. Εδώ πρέπει να ενεργοποιήσετεOn) διακόπτης δημόσια λειτουργίαγια να το καταστήσετε διαθέσιμο από το εξωτερικό (για Yandex.Clouds) του κόσμου και την αξία των πεδίων Σύνδεσμος για κλήση и Αναγνωριστικό - Κράτα το βαθιά μυστικό από όλους εκτός από τον εαυτό σου και το Telegram, ώστε διάφοροι απατεώνες να μην μπορούν να καλέσουν τη λειτουργία σου.

Δημιουργία bot Telegram στο Yandex.Cloud

Τώρα χρησιμοποιώντας το αριστερό μενού μεταβείτε στο Ο συντάκτης λειτουργίες. Ας αφήσουμε για λίγο στην άκρη το δικό μας Έξυπνες Σκέψεις, και δημιουργήστε μια minimal συνάρτηση προτύπου για να ελέγξετε την απόδοση του bot μας... Ωστόσο, σε αυτό το πλαίσιο, αυτή η συνάρτηση είναι το bot μας... Εν ολίγοις, τώρα και εδώ θα φτιάξουμε ένα απλό bot που θα "καθρεφτίζει" ( δηλ. αποστολή πίσω ) αιτημάτων χρηστών. Αυτό το πρότυπο μπορεί πάντα να χρησιμοποιηθεί κατά τη δημιουργία νέων bot τηλεγραφήματος για να βεβαιωθείτε ότι η επικοινωνία με Τηλεγράφημα'om δουλεύει μια χαρά. Κάντε κλικ Δημιουργία αρχείου, κάλεσε το index.js, και on-line Επεξεργαστής κώδικα επικολλήστε τον ακόλουθο κώδικα σε αυτό το αρχείο:

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
  };
};

Στην κονσόλα Yandex.Cloud, θα πρέπει να μοιάζει κάπως έτσι:

Δημιουργία bot Telegram στο Yandex.Cloud

Παρακάτω, αναφέρουμε σημείο εισόδου - index.botΌπου ευρετήριο αυτό είναι το όνομα αρχείου (index.js), και του bot - όνομα συνάρτησης (module.exports.bot). Αφήστε όλα τα άλλα πεδία "ως έχουν" και κάντε κλικ στο κουμπί στην επάνω δεξιά γωνία Δημιουργία έκδοσης. Μετά από λίγα δευτερόλεπτα, θα δημιουργηθεί αυτή η έκδοση της συνάρτησης. Αμέσως μετά τη δοκιμή webhook, θα δημιουργήσουμε μια νέα έκδοση − Έξυπνες Σκέψεις.

Δημιουργία bot Telegram στο Yandex.Cloud

Αποθήκευση αντικειμένων

Τώρα που έχουμε στήσει Λειτουργία Yandexας πάμε όσο είμαστε στην κονσόλα Yandex.Clouds, δημιουργήστε ένα λεγόμενο. κουβάς (κάδος, δηλ. κάδος στα ρωσικά, σε καμία περίπτωση μπουκέτο) για την αποθήκευση αρχείων εικόνας που θα χρησιμοποιηθούν στο bot μας Έξυπνες Σκέψεις. Επιλέξτε από το αριστερό μενού πλοήγησης Αποθήκευση αντικειμένων, πάτα το κουμπί Δημιουργία κουβά, δώστε του ένα όνομα, για παράδειγμα, img-bucket, και το πιο σημαντικό, Πρόσβαση ανάγνωσης σε αντικείμενα δημοσιοποιήστε το - διαφορετικά το Telegram δεν θα βλέπει τις φωτογραφίες μας. Όλα τα άλλα πεδία παραμένουν αμετάβλητα. Πατάμε το κουμπί Δημιουργία κουβά.

Δημιουργία bot Telegram στο Yandex.Cloud

Μετά από αυτό, μια λίστα με όλους τους κάδους μπορεί να μοιάζει κάπως έτσι (αν αυτός είναι ο μόνος σας κάδος):

Δημιουργία bot Telegram στο Yandex.Cloud

Τώρα προτείνω να κάνετε κλικ στο όνομα του κάδου και να δημιουργήσετε έναν φάκελο μέσα σε αυτόν για να οργανώσετε την αποθήκευση εικόνων για διαφορετικές εφαρμογές. Για παράδειγμα, για ένα bot τηλεγραφήματος Έξυπνες Σκέψεις δημιούργησα ένα φάκελο που ονομάζεται tg-bot-smart-thoughts (Τίποτα, θα καταλάβω αυτόν τον κρυπτογράφηση). Δημιουργήστε κι εσείς ένα.

Δημιουργία bot Telegram στο Yandex.Cloud

Τώρα μπορείτε να κάνετε κλικ στο όνομα του φακέλου, να μεταβείτε σε αυτόν και να ανεβάσετε αρχεία:

Δημιουργία bot Telegram στο Yandex.Cloud

Και κάνοντας κλικ στο όνομα του αρχείου - αποκτήστε το URL για χρήση στο bot μας και γενικά - οπουδήποτε (αλλά, μην το δημοσιεύσετε URL αναίτια, αφού η κίνηση από αποθήκευση αντικειμένων φορτισμένα).

Δημιουργία bot Telegram στο Yandex.Cloud

Εδώ, στην πραγματικότητα, αυτό είναι όλο αποθήκευση αντικειμένων. Τώρα θα ξέρετε τι να κάνετε όταν δείτε την προτροπή για αποστολή αρχείων εκεί.

Webhook

Τώρα θα εγκαταστήσουμε webhook — δηλ. όταν το bot λαμβάνει μια ενημέρωση (για παράδειγμα, ένα μήνυμα από τον χρήστη), από το διακομιστή Telegram στο δικό μας Λειτουργία Yandex θα σταλεί αίτημαζητήσει) με δεδομένα. Ακολουθεί μια συμβολοσειρά που μπορείτε απλά να επικολλήσετε στο πεδίο διεύθυνσης του προγράμματος περιήγησης και στη συνέχεια να ανανεώσετε τη σελίδα (αυτό πρέπει να γίνει μόνο μία φορά): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Απλώς αντικαταστήστε {bot_token} στο διακριτικό που λάβαμε από το πατέρα bot κατά τη δημιουργία του bot μας, και {webhook_url} - επί URL μας Λειτουργίες Yandex. Περίμενε ένα λεπτό! Αλλά RossKomCensorship απαγορεύει στους παρόχους στη Ρωσική Ομοσπονδία να παρέχουν τη διεύθυνση https://api.telegram.org. Ναι, σωστά. Αλλά μπορείς να σκεφτείς κάτι. Μετά από όλα, μπορείτε, για παράδειγμα, να ρωτήσετε τη γιαγιά σας για αυτό στην Ουκρανία, το Ισραήλ ή τον Καναδά - δεν υπάρχουν "ρωσικές λογοκρισίες" εκεί και μόνο ο Θεός ξέρει πώς ζουν οι άνθρωποι χωρίς αυτό. Ως αποτέλεσμα, το αίτημα-απόκριση κατά την εγκατάσταση του webhook θα πρέπει να μοιάζει με αυτό:

Δημιουργία bot Telegram στο Yandex.Cloud

Δοκιμές. Θα πρέπει να αντικατοπτρίζεται.

Δημιουργία bot Telegram στο Yandex.Cloud

Αυτό είναι αλήθεια. Τα συγχαρητήριά μας - τώρα Λειτουργία Yandex έχει γίνει Telegram-bot!

Έξυπνες Σκέψεις

Και τώρα κάνουμε Έξυπνες Σκέψεις. Ο κωδικός είναι ανοιχτός και βρίσκεται GitHub. Είναι αρκετά καλά σχολιασμένο, και έχει μόνο εκατό γραμμές. Διαβάστε το σαν λιμπρέτο της ντίβας της όπερας!

Δημιουργία bot Telegram στο Yandex.Cloud

Κλωνοποιήστε το έργο και εγκαταστήστε τις εξαρτήσεις:

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

Κάντε τις αλλαγές που χρειάζεστε στο αρχείο index.js (προαιρετικό, δεν μπορείτε να αλλάξετε τίποτα). Δημιουργώ zip-αρχείο, με αρχείο index.js και φάκελο node_modules μέσα, για παράδειγμα, ονομάζεται smart.zip.

Δημιουργία bot Telegram στο Yandex.Cloud

Τώρα πηγαίνετε στην κονσόλα στο δικό μας Λειτουργίες Yandex, επιλέξτε την καρτέλα Αρχείο ZIP, πάτα το κουμπί Επιλέξτε αρχείοκαι κατεβάστε το αρχείο μας smart.zip. Τέλος, στην επάνω δεξιά γωνία, κάντε κλικ στο κουμπί Δημιουργία έκδοσης.

Δημιουργία bot Telegram στο Yandex.Cloud

Σε λίγα δευτερόλεπτα, όταν ενημερωθεί η λειτουργία, θα δοκιμάσουμε ξανά το bot μας. Τώρα πλέον δεν «καθρεφτίζει», αλλά παραδίδει έξυπνες σκέψεις!

Δημιουργία bot Telegram στο Yandex.Cloud

Αυτά για σήμερα. Ακολουθούν και άλλα άρθρα. Εάν ενδιαφέρεστε να το διαβάσετε, εγγραφείτε στις ειδοποιήσεις νέων άρθρων. Μπορείτε να εγγραφείτε εδώ ή Telegram-Κανάλι Εκμάθηση Πληροφορικής ZakharΉ Twitter @mikezaharov.

παραπομπές

Κωδικός στο GitHub
Λειτουργίες Yandex Cloud
Αποθήκευση αντικειμένων Yandex
Bots: Μια εισαγωγή για προγραμματιστές
Τηλεγράφημα API Bot

Δωρεές

Δημιουργία bot Telegram στο Yandex.Cloud

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο