Xây dựng bot Telegram trong Yandex.Cloud

Xây dựng bot Telegram trong Yandex.Cloud

Hôm nay, từ những vật liệu ngẫu hứng, chúng tôi sẽ thu thập trong Yandex.Cloud Bot Telegram sử dụng Chức năng đám mây Yandex (hoặc chức năng Yandex cho ngắn gọn) và Lưu trữ đối tượng Yandex (hoặc lưu trữ đối tượng - cho rõ ràng). Mã sẽ được bật Node.js. Tuy nhiên, có một hoàn cảnh thú vị - một tổ chức nào đó được gọi là, giả sử, RossKomKiểm duyệt (kiểm duyệt bị cấm theo điều 29 của Hiến pháp Liên bang Nga), không cho phép các nhà cung cấp Internet ở Nga chuyển yêu cầu tới API Telegram theo địa chỉ: https://api.telegram.org/. Chà, chúng tôi sẽ không - không, không. Thật vậy, trong túi của chúng tôi có cái gọi là. webhook - với sự giúp đỡ của họ, chúng tôi không gửi yêu cầu đến một địa chỉ cụ thể mà chỉ gửi yêu cầu của chúng tôi dưới dạng phản hồi cho bất kỳ yêu cầu nào đối với chúng tôi. Đó là, như ở Odessa - chúng tôi trả lời một câu hỏi bằng một câu hỏi. đó là lý do tại sao API Telegram sẽ không xuất hiện trong mã của chúng tôi.

Tuyên bố từ chối trách nhiệmTên của bất kỳ tổ chức nhà nước nào được đề cập trong bài viết này là hư cấu và sự trùng hợp có thể xảy ra với tên của các tổ chức ngoài đời thực là do ngẫu nhiên.

Vì vậy, chúng tôi sẽ tạo một bot cung cấp cho chúng tôi những suy nghĩ thông minh. Chính xác như trong hình:

Xây dựng bot Telegram trong Yandex.Cloud

Bạn có thể thử nó trong thực tế - đây là tên: @SmartThoughtsBot. Chú ý nút "Kỹ năng của Alice"? Điều này là do bot là một loại "bạn đồng hành" cho cùng tên Kỹ năng của Alice, I E. nó thực hiện các chức năng tương tự như Kỹ năng của Alice và, có lẽ, rằng họ có thể cùng tồn tại một cách hòa bình với nhau. Về cách tạo Kỹ năng tư duy thông minh mô tả trong bài viết Alice có được kỹ năng. Bây giờ (sau khi thực hiện một số thay đổi sau khi xuất bản bài viết trên) trên điện thoại thông minh này kỹ năng sẽ trông giống như thế này:

Xây dựng bot Telegram trong Yandex.Cloud

Tạo bot

Tôi muốn hướng dẫn này hữu ích cho mọi người, bao gồm cả. và "người xây dựng bot" mới bắt đầu. Do đó, trong phần này tôi sẽ mô tả một số chi tiết về cách tạo nói chung trong Telegram'e bot. Đối với những người không cần thông tin này, hãy chuyển sang các phần tiếp theo.

Mở ứng dụng điện báo, chúng tôi gọi là cha đẻ của tất cả các bot (chúng có mọi thứ như con người) - @BotFather - và để bắt đầu, chúng tôi sẽ đưa cho anh ấy lệnh / help để làm mới trí nhớ của chúng tôi về những gì chúng tôi có thể làm. Bây giờ chúng tôi quan tâm đến đội / newbot.

Xây dựng bot Telegram trong Yandex.Cloud

Vì bot được mô tả ở đây đã được tạo, vì mục đích minh họa, tôi sẽ tạo một bot khác trong một thời gian ngắn (sau đó tôi sẽ xóa nó). Tôi sẽ gọi anh ấy Bản DemoHabrBot. tên (tên truy nhập) tất cả bot điện tín phải kết thúc bằng một từ bot, ví dụ: MyCoolBot hoặc my_cool_bot Cái này dành cho bot. Nhưng trước tiên, hãy đặt tên cho bot (tên) dành cho người. Tên có thể bằng bất kỳ ngôn ngữ nào, chứa dấu cách, không nhất thiết phải kết thúc bằng một từ bot, và thậm chí không cần phải là duy nhất. Trong ví dụ này, tôi đã gọi bot này Demo Habr.

Xây dựng bot Telegram trong Yandex.Cloud

Bây giờ hãy chọn tên cho bot (tên truy nhập, cái dành cho bot). Hãy gọi nó là Bản DemoHabrBot. Mọi thứ liên quan đến tên của bot (tên) hoàn toàn không liên quan đến tên của anh ấy - tên truy nhập (hoặc áp dụng, nhưng hoàn toàn ngược lại). Sau khi tạo thành công một tên bot duy nhất, chúng ta cần sao chép và lưu (với độ tin cậy cao nhất!) mã thông báo được hiển thị trong ảnh chụp màn hình có mũi tên màu đỏ. Với sự giúp đỡ của nó, sau này chúng tôi sẽ cài đặt thư đi Telegram'một webhook cho chúng tôi chức năng Yandex.

Xây dựng bot Telegram trong Yandex.Cloud

Và bây giờ chúng tôi sẽ đưa ra lệnh cho cha của tất cả các bot: /mybotvà nó sẽ hiển thị cho chúng tôi danh sách tất cả các bot mà chúng tôi đã tạo. Bây giờ hãy để bot mới nướng một mình Demo Habr (nó được tạo ra để hiển thị cách tạo bot, nhưng chúng tôi sẽ sử dụng nó hôm nay cho các mục đích trình diễn khác) và xem xét bot suy nghĩ thông minh (@SmartThoughtsBot). Nhấp vào nút có tên trong danh sách bot.

Xây dựng bot Telegram trong Yandex.Cloud

Đây là nơi chúng ta có thể thiết lập bot của mình. Nhấn một nút Biên tập… chúng tôi sẽ chuyển sang chỉnh sửa một hoặc một tùy chọn khác. Ví dụ, bằng cách nhấp vào nút Chỉnh sửa tên chúng ta có thể thay đổi tên của bot, nói thay vì suy nghĩ thông minh, viết ý tưởng điên rồ. botpic - đây là hình đại diện của bot, phải ít nhất 150 x 150 px. Mô tả là một mô tả ngắn mà người dùng nhìn thấy khi bot được khởi chạy lần đầu tiên, như một câu trả lời cho câu hỏi: Bot này có thể làm gì? Giới thiệu - một mô tả thậm chí còn ngắn hơn, được truyền cùng với một liên kết đến bot (https://t.me/SmartThoughtsBot) hoặc khi xem thông tin về nó.

Xây dựng bot Telegram trong Yandex.Cloud

Chúng ta chỉ cần thiết lập các lệnh. Để làm điều này, nhấn nút Chỉnh sửa lệnh. Để chuẩn hóa thực hành người dùng Telegram khuyến nghị luôn sử dụng hai lệnh: / bắt đầu и /Cứu giúpvà nếu bot cần cài đặt, lệnh bổ sung /settings. Bot của chúng tôi đơn giản như một quả bóng, vì vậy nó chưa cần bất kỳ cài đặt nào. Chúng tôi viết hai lệnh đầu tiên, sau đó chúng tôi sẽ xử lý trong mã. Bây giờ, nếu người dùng nhập dấu gạch chéo (ký tự gạch chéo: /) vào trường nhập liệu, một danh sách các lệnh sẽ xuất hiện để họ lựa chọn nhanh. Mọi thứ giống như trong hình: bên trái - chúng tôi đặt lệnh thông qua bot-cha; ở bên phải, những lệnh này đã có sẵn cho người dùng trong bot của chúng tôi.

Xây dựng bot Telegram trong Yandex.Cloud

chức năng Yandex

Bây giờ bot của chúng tôi đã được tạo, hãy chuyển đến Yandex.Cloudđể tạo một chức năng sẽ thực thi mã bot của chúng tôi. Nếu bạn chưa từng làm việc với Yandex.Cloud đọc tài liệu Alice ở xứ sở Bitrix, và sau đó - Chức năng Yandex gửi thư. Tôi gần như chắc chắn rằng hai bài viết tương đối nhỏ này sẽ đủ để bạn có hiểu biết cơ bản về chủ đề này.

Vì vậy, trong bảng điều khiển Yandex.Clouds trong menu điều hướng bên trái, hãy chọn mục Chức năng đám mây, rồi nhấn nút Tạo một chức năng. Chúng tôi đặt tên cho nó và cho chính chúng tôi - một mô tả ngắn gọn.

Xây dựng bot Telegram trong Yandex.Cloud

Sau khi nhấn nút sáng tạo và sau vài giây, chức năng mới sẽ xuất hiện trong danh sách tất cả các chức năng. Nhấp vào tên của cô ấy - điều này sẽ đưa chúng tôi đến trang Xem xét chức năng của chúng tôi. Ở đây bạn cần kích hoạtOn) công tắc chức năng công cộngđể làm cho nó có sẵn từ bên ngoài (đối với Yandex.Clouds) của thế giới và giá trị của các trường Liên kết để gọi и Định danh - giữ bí mật sâu sắc với mọi người ngoại trừ bạn và Telegram, để những kẻ lừa đảo khác nhau không thể gọi chức năng của bạn.

Xây dựng bot Telegram trong Yandex.Cloud

Bây giờ sử dụng menu bên trái đi đến Người biên tập chức năng. Hãy để chúng tôi đặt sang một bên trong giây lát của chúng tôi suy nghĩ thông minhvà tạo một chức năng mẫu tối thiểu để kiểm tra hiệu suất của bot của chúng tôi ... Tuy nhiên, trong bối cảnh này, chức năng này là bot của chúng tôi ... Tóm lại, bây giờ và ngay tại đây, chúng tôi sẽ tạo một bot đơn giản nhất sẽ "phản chiếu" ( tức là gửi lại ) yêu cầu của người dùng. Mẫu này luôn có thể được sử dụng khi tạo bot điện tín mới để đảm bảo rằng giao tiếp với điện tín'om hoạt động tốt. Nhấp chuột tạo tập tin, gọi nó đi chỉ mục.jsvà trực tuyến biên tập mã dán đoạn mã sau vào tập tin này:

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

Trong bảng điều khiển Yandex.Cloud, giao diện sẽ giống như sau:

Xây dựng bot Telegram trong Yandex.Cloud

Dưới đây, chúng tôi chỉ ra điểm vào - chỉ mục.botĐâu chỉ số đây là tên tệp (chỉ mục.js) và bot - Tên chức năng (module.exports.bot). Để lại tất cả các trường khác "nguyên trạng" và ở góc trên bên phải, nhấp vào nút Tạo phiên bản. Sau vài giây, phiên bản chức năng này sẽ được tạo. Ngay sau khi thử nghiệm webhook, chúng tôi sẽ tạo một phiên bản mới - suy nghĩ thông minh.

Xây dựng bot Telegram trong Yandex.Cloud

lưu trữ đối tượng

Bây giờ chúng ta đã thiết lập chức năng Yandexchúng ta hãy đi trong khi chúng ta đang ở trong bảng điều khiển Yandex.Clouds, tạo cái gọi là. Gầu múc (, I E. một cái xô bằng tiếng Nga, không có nghĩa là một bó hoa) để lưu trữ các tệp hình ảnh sẽ được sử dụng trong bot của chúng tôi suy nghĩ thông minh. Chọn từ menu điều hướng bên trái Lưu trữ đối tượng, Nhấn nút Tạo thùng, đặt tên cho nó, ví dụ, img-xô, và quan trọng nhất, Đọc quyền truy cập vào các đối tượng đặt nó ở chế độ công khai - nếu không thì Telegram sẽ không nhìn thấy ảnh của chúng tôi. Tất cả các lĩnh vực khác được giữ nguyên. Chúng tôi nhấn nút Tạo thùng.

Xây dựng bot Telegram trong Yandex.Cloud

Sau đó, một danh sách tất cả các nhóm có thể giống như thế này (nếu đây là nhóm duy nhất của bạn):

Xây dựng bot Telegram trong Yandex.Cloud

Bây giờ tôi đề xuất nhấp vào tên của nhóm và tạo một thư mục bên trong nó để tổ chức lưu trữ ảnh cho các ứng dụng khác nhau. Ví dụ: đối với bot điện tín suy nghĩ thông minh tôi đã tạo một thư mục có tên tg-bot-smart-suy nghĩ (Không có gì, tôi sẽ hiểu mật mã này). Tạo một quá.

Xây dựng bot Telegram trong Yandex.Cloud

Bây giờ bạn có thể nhấp vào tên thư mục, vào đó và tải tệp lên:

Xây dựng bot Telegram trong Yandex.Cloud

Và nhấp vào tên tệp - lấy nó URL để sử dụng trong bot của chúng tôi và nói chung - ở mọi nơi (nhưng, không xuất bản URL không cần thiết, vì lưu lượng truy cập từ lưu trữ đối tượng tính phí).

Xây dựng bot Telegram trong Yandex.Cloud

Ở đây, trên thực tế, đó là tất cả lưu trữ đối tượng. Bây giờ bạn sẽ biết phải làm gì khi thấy lời nhắc tải tệp lên ở đó.

webhook

Bây giờ chúng ta sẽ cài đặt webhook - I E. khi bot nhận được cập nhật (ví dụ: tin nhắn từ người dùng), từ máy chủ Telegram vào của chúng tôi chức năng Yandex yêu cầu sẽ được gửiyêu cầu) với dữ liệu. Đây là một chuỗi mà bạn có thể chỉ cần dán vào trường địa chỉ của trình duyệt, sau đó làm mới trang (việc này chỉ cần thực hiện một lần): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Chỉ cần thay thế {bot_token} đến mã thông báo mà chúng tôi đã nhận được từ bot cha khi tạo bot của chúng tôi và {webhook_url} - trên URL của chúng tôi chức năng Yandex. Đợi tí! Nhưng RossKomKiểm duyệt cấm các nhà cung cấp ở Liên bang Nga phục vụ địa chỉ https://api.telegram.org. Vâng đúng vậy. Nhưng bạn có thể nghĩ về một cái gì đó. Rốt cuộc, chẳng hạn, bạn có thể hỏi bà của mình về điều đó ở Ukraine, Israel hoặc Canada - không có "sự kiểm duyệt của Nga" ở đó và chỉ có Chúa mới biết mọi người sống như thế nào nếu không có nó. Do đó, phản hồi yêu cầu khi cài đặt webhook sẽ như sau:

Xây dựng bot Telegram trong Yandex.Cloud

thử nghiệm. Nên được nhân đôi.

Xây dựng bot Telegram trong Yandex.Cloud

Đây là sự thật. Lời chúc mừng của chúng tôi - bây giờ chức năng Yandex đã trở thành Telegram-người máy!

suy nghĩ thông minh

Và bây giờ chúng ta làm Smart Thoughts. mã đang mở và nằm trên GitHub. Nó được bình luận khá tốt, và nó chỉ dài một trăm dòng. Hãy đọc nó như một bản libretto của diva opera!

Xây dựng bot Telegram trong Yandex.Cloud

Sao chép dự án và cài đặt các phụ thuộc:

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

Thực hiện các thay đổi bạn cần đối với tệp chỉ mục.js (tùy chọn; bạn không thể thay đổi bất cứ điều gì). Tạo nên zip-archive, với một tập tin chỉ mục.js và thư mục nút_mô-đun bên trong, ví dụ, được gọi là thông minh.zip.

Xây dựng bot Telegram trong Yandex.Cloud

Bây giờ hãy vào bảng điều khiển để chức năng Yandex, chọn tab kho lưu trữ ZIP, Nhấn nút Chọn một tập tinvà tải xuống kho lưu trữ của chúng tôi thông minh.zip. Cuối cùng, ở góc trên bên phải, nhấp vào nút Tạo phiên bản.

Xây dựng bot Telegram trong Yandex.Cloud

Trong vài giây nữa, khi chức năng được cập nhật, chúng tôi sẽ kiểm tra lại bot của mình. Giờ đây, anh ấy không còn “làm gương” nữa mà đưa ra những suy nghĩ thông minh!

Xây dựng bot Telegram trong Yandex.Cloud

Đó là tất cả cho ngày hôm nay. Các bài viết khác theo sau. Nếu bạn muốn đọc nó, hãy đăng ký nhận thông báo về các bài viết mới. Bạn có thể đăng ký tại đây hoặc Telegram-kênh truyền hình Hướng dẫn CNTT ZakharHoặc Twitter @mikezaharov.

tài liệu tham khảo

Mã trên GitHub
Chức năng đám mây Yandex
Lưu trữ đối tượng Yandex
Bots: Giới thiệu dành cho nhà phát triển
API Telegram Bot

Quyên góp

Xây dựng bot Telegram trong Yandex.Cloud

Nguồn: www.habr.com

Thêm một lời nhận xét