Cách cài đặt bot trong Telegram. Flibusta, Anton và các bot khác trên điện tín - đánh giá

Chúng tôi viết /bắt đầu với anh ấy và nhận được danh sách tất cả các lệnh của anh ấy.
Cái đầu tiên và cái chính - /newbot - chúng tôi gửi nó cho anh ấy và bot yêu cầu anh ấy đặt tên cho bot mới của chúng tôi. Hạn chế duy nhất về tên là nó phải kết thúc bằng “bot”. Nếu thành công, BotFather sẽ trả lại mã thông báo bot và một liên kết để nhanh chóng thêm bot vào danh bạ của bạn, nếu không, bạn sẽ phải vắt óc tìm tên.

Điều này đã đủ để bắt đầu. Những người đặc biệt có tính mô phạm có thể chỉ định hình đại diện, mô tả và thông báo chào mừng cho bot tại đây.

Đừng quên kiểm tra mã thông báo đã nhận bằng liên kết api.telegram.org/bot /getMe, họ nói, không phải lúc nào cũng hiệu quả trong lần đầu tiên.

2. Lập trình

Tôi sẽ tạo bot bằng Python3, tuy nhiên, do tính đầy đủ của ngôn ngữ này nên các thuật toán có thể dễ dàng được chuyển sang bất kỳ ngôn ngữ nào khác.

Telegram cho phép bạn không tải tin nhắn lên theo cách thủ công mà cài đặt webHook, sau đó họ sẽ tự gửi từng tin nhắn. Đối với Python, để không phải bận tâm đến cgi và các luồng, việc sử dụng một số loại lò phản ứng sẽ thuận tiện hơn nên tôi đã chọn Tornado.web để triển khai. (đối với GAE, thật thuận tiện khi sử dụng kết hợp Python2 + Flask)

Khung bot:

URL = "https://api.telegram.org/bot%s/" % BOT_TOKEN MyURL = "https://example.com/hook" api = request.Session() ứng dụng = cơn lốc xoáy.web.Application([ ( r"/", Handler), ]) if __name__ == "__main__": signal.signal(signal.SIGTERM, signal_term_handler) thử: set_hook = api.get(URL + "setWebhook?url=%s" % MyURL) if set_hook.status_code != 200: log.error("Không thể" đặt hook: %s. Thoát." % set_hook.text) exit(1) application.listen(8888) lốc xoáy.ioloop.IOLoop.current().start () ngoại trừ Bàn phímInterrupt: signal_term_handler(signal.SIGTERM, None)
Tại đây, khi khởi động bot, chúng tôi cài đặt một webhook tại địa chỉ của mình và bắt tín hiệu thoát để quay lại hành vi dỡ bỏ các sự kiện theo cách thủ công.

Ứng dụng cơn lốc xoáy để xử lý các yêu cầu chấp nhận lớp Tornado.web.RequestHandler, lớp này sẽ chứa logic bot.

Trình xử lý lớp(tornado.web.RequestHandler): def post(self): thử: log.debug("Nhận được yêu cầu: %s" % self.request.body) update = cơn lốc xoáy.escape.json_decode(self.request.body) message = update["message"] text = message.get("text") if text:logging.info("MESSAGE\t%s\t%s" % (message["chat"]["id"], text)) if text == "/": command, *arguments = text.split(" ", 1) reply = CMD.get(command, not_found)(arguments, message)logging.info("REPLY\t%s \t%s" % (tin nhắn["chat"]["id"], phản hồi)) send_reply(response) ngoại trừ Ngoại lệ là e: log.warning(str(e))
Ở đây CMD là một từ điển gồm các lệnh có sẵn và send_reply là một hàm để gửi phản hồi, lấy một đối tượng Message đã được tạo làm đầu vào.

Trên thực tế, mã của nó khá đơn giản:

Def send_reply(response): nếu "text" phản hồi: api.post(URL + "sendMessage", data=response)

Bây giờ tất cả logic của bot đã được mô tả, bạn có thể bắt đầu đưa ra các lệnh cho nó.

3. Đội

Trước hết, bạn cần tuân theo quy ước của Telegram và dạy cho bot hai lệnh: /start và /help:

Def help_message(arguments, message): reply = ("chat_id": message["chat"]["id"]) result = ["Hey, %s!" % message["from"].get("first_name"), "\rI chỉ có thể chấp nhận các lệnh sau:"] cho lệnh trong CMD: result.append(command) reply["text"] = "\n\t" .join(kết quả) trả về phản hồi

Cấu trúc message["from"] là một đối tượng thuộc loại User , nó cung cấp cho bot thông tin về cả id người dùng và tên của người đó. Để trả lời, sẽ hữu ích hơn khi sử dụng tin nhắn["chat"]["id"] - trong trường hợp giao tiếp cá nhân sẽ có Người dùng và trong trường hợp trò chuyện - id trò chuyện. Nếu không, bạn có thể gặp tình huống người dùng viết trong cuộc trò chuyện và bot sẽ trả lời bằng tin nhắn cá nhân.

Lệnh /start không có tham số nhằm mục đích hiển thị thông tin về bot và với các tham số, nó nhằm mục đích nhận dạng. Sẽ rất hữu ích khi sử dụng nó cho các hành động yêu cầu sự cho phép.

Sau này, bạn có thể thêm một số lệnh của riêng mình, ví dụ /base64:

Def base64_decode(arguments, message): reply = ("chat_id": message["chat"]["id"]) try: reply["text"] = b64decode(" ".join(arguments).encode("utf8 ")) ngoại trừ: reply["text"] = "Không thể giải mã được" cuối cùng: trả về phản hồi

Đối với người dùng Telegram trên thiết bị di động, sẽ rất hữu ích khi cho @BotFather biết những lệnh mà bot của chúng tôi chấp nhận:
Tôi: /setcommands
BotFather: Chọn bot để thay đổi danh sách lệnh.
Tôi: @******_bot
BotFather: Được rồi. Gửi cho tôi danh sách các lệnh cho bot của bạn. Vui lòng sử dụng định dạng này:

Lệnh1 - Mô tả
lệnh2 - Một mô tả khác
TÔI:
whoisyourdaddy - Thông tin về tác giả
base64 - Giải mã Base64
BotFather: Thành công! Danh sách lệnh được cập nhật. /giúp đỡ

Với mô tả này, nếu người dùng gõ /, Telegram sẽ hiển thị danh sách tất cả các lệnh có sẵn một cách hữu ích.

4. Tự do

Như bạn có thể thấy, Telegram gửi toàn bộ tin nhắn chứ không chia nhỏ và việc hạn chế các lệnh bắt đầu bằng dấu gạch chéo chỉ nhằm mục đích thuận tiện cho người dùng di động. Nhờ đó, bạn có thể dạy bot nói chuyện giống con người một chút.

CẬP NHẬT: Như họ đã đề xuất một cách chính xác, điều này sẽ chỉ xảy ra thông qua giao tiếp cá nhân. Trong cuộc trò chuyện, chỉ những tin nhắn bắt đầu bằng lệnh (/ ) (https://core.telegram.org/bots#privacy-mode)

Để bot nhận được tất cả tin nhắn trong nhóm, hãy viết lệnh @BotFather /setprivacy và tắt quyền riêng tư.

Đầu tiên, thêm một trình xử lý vào Handler:

Nếu văn bản == "/": ... khác: phản hồi = CMD[" "](tin nhắn)logging.info("REPLY\t%s\t%s" % (tin nhắn["chat"]["id"], phản hồi)) send_reply(response)
Và sau đó chúng tôi thêm giọng nói giả vào danh sách các lệnh:

RESPONSES = ( "Xin chào": ["Xin chào!", "Xin chào!", "Chào mừng!", "Xin chào, (tên)!"], "Xin chào": ["Xin chào!", "Xin chào, (tên) ) )!", "Xin chào!", "Chào mừng!"], "Xin chào!": ["Xin chào!", "Xin chào, (tên)!", "Chào mừng!", "Xin chào!"], "Chào mừng " : ["Xin chào!", "Xin chào!", "Xin chào!", "Xin chào, (tên)!",], ) def human_response(message): leven = fuzzywuzzy.process.extract(message.get(" text ", ""), RESPONSES.keys(), limit=1) reply = ("chat_id": message["chat"]["id"]) if leven< 75: response["text"] = "I can not understand you" else: response["text"] = random.choice(RESPONSES.get(leven)).format_map({"name": message["from"].get("first_name", "")}) return response
Ở đây, hằng số thực nghiệm 75 phản ánh tương đối tốt xác suất mà người dùng thực sự muốn nói. Và format_map thuận tiện cho việc mô tả cùng một chuỗi cả yêu cầu thay thế và không cần thay thế. Bây giờ bot sẽ đáp lại lời chào và đôi khi còn gọi bạn bằng tên.

5. Không nhắn tin.

Bot, giống như bất kỳ người dùng Telegram bình thường nào, không chỉ có thể viết tin nhắn mà còn có thể chia sẻ hình ảnh, âm nhạc và nhãn dán.

Ví dụ: hãy mở rộng từ điển RESPONSES:

TRẢ LỜI["Mấy giờ rồi?"] = [" ", "(ngày) UTC"]
Và chúng ta sẽ bắt được văn bản :

Nếu phản hồi["text"] == " ": reply["sticker"] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC" del reply["text"]
Có thể thấy hiện tại cấu trúc Message không còn chứa text nên cần sửa lại send_reply:

Def send_reply(response): nếu "sticker" phản hồi: api.post(URL + "sendSticker", data=response) elif "text" phản hồi: api.post(URL + "sendMessage", data=response)
Và thế là xong, bây giờ bot sẽ thỉnh thoảng gửi nhãn dán thay cho thời gian:

6. Cơ hội

Nhờ sự tiện lợi của API và khởi động nhanh, các bot Telegram có thể trở thành một nền tảng tốt để tự động hóa hành động của chúng, thiết lập thông báo, tạo câu đố và các cuộc thi dựa trên nhiệm vụ (CTF, DozoR và các cuộc thi khác).

Nhìn lại, tôi có thể nói rằng bây giờ đã ít những biến thái hơn, công việc cũng minh bạch hơn.

7. Hạn chế

Thật không may, hiện tại có một hạn chế trong việc sử dụng webHook - nó chỉ hoạt động trên https và chỉ với chứng chỉ hợp lệ, chẳng hạn, điều này vẫn rất quan trọng đối với tôi do cơ quan chứng nhận thiếu hỗ trợ cho DNS động.

May mắn thay, Telegram cũng có thể hoạt động với các bản cập nhật thủ công, do đó, không cần thay đổi mã, bạn có thể tạo một dịch vụ Puller khác để tải xuống và gửi chúng đến địa chỉ địa phương:

Trong khi Đúng: r = request.get(URL + "?offset=%s" % (last + 1)) if r.status_code == 200: cho tin nhắn trong r.json()["result"]: Last = int (tin nhắn["update_id"]) request.post("http://localhost:8888/", data=json.dumps(message), headers=("Content-type": "application/json", "Accept" : "text/plain")) else: log.warning("FAIL " + r.text) time.sleep(3)

tái bút Về điểm 7, tôi đã tìm thấy một giải pháp thuận tiện - lưu trữ bot không phải ở nhà mà trên Heroku, vì tất cả các tên như *.herokuapp.com đều được bảo vệ bằng chứng chỉ riêng của chúng.

CẬP NHẬT: Telegram đã cải thiện Bot Api, đó là lý do tại sao không còn cần thiết phải có chức năng gửi tin nhắn riêng khi cài đặt webhook và để đáp lại yêu cầu POST, bạn có thể phản hồi bằng cùng một JSON được tạo bằng thông báo phản hồi , trong đó một trong các trường được đặt là h "method ": "sendMessage" (hoặc bất kỳ phương thức nào khác được bot sử dụng).

Thẻ: Thêm thẻ

Nó nhanh chóng trở nên phổ biến, mặc dù thực tế là nó mới xuất hiện khá gần đây. Tính năng thuận lợi của trình nhắn tin là mã hóa dữ liệu đáng tin cậy bằng giao thức MTProto. Số lượng người dùng Telegram đang tăng lên mỗi ngày, mang lại cơ hội lớn cho việc kinh doanh. Nhóm phát triển đã tạo ra nhiều công cụ cho phép bạn sử dụng ứng dụng không chỉ để giải trí mà còn nhằm mục đích tổ chức và duy trì quy trình làm việc của bạn.

Các nhóm, kênh và bot trong Telegram có thể trở thành trợ lý hữu ích nếu bạn quyết định tham gia vào các hoạt động thương mại thông qua tài nguyên Internet. Nhiều công ty lớn sử dụng thành công các công cụ Telegram để làm việc với khách hàng. Mở cộng đồng, kênh riêng hay ra mắt robot không khó nhưng sẽ mang lại lợi ích to lớn. Bot có thể sử dụng nhiều tùy chọn khác nhau, từ thông báo cho mọi người về các chương trình khuyến mãi, giảm giá sắp tới và các tin tức khác, tư vấn trực tuyến cho đến mua hàng. Đối với các cửa hàng, đây là cơ hội bổ sung để tăng doanh thu.

Bất kỳ ai có ít nhất kỹ năng lập trình cơ bản đều có thể tạo bot bán hàng. Một công cụ như vậy sẽ giải phóng chủ nhân của nó khỏi công việc thường ngày và giúp điều hành doanh nghiệp. Đối với những người không nói được ngôn ngữ lập trình, sẽ tốt hơn nếu sử dụng dịch vụ tạo robot.

Cách tạo bot trong Telegram

Bạn có thể tự tạo bot bằng cách sử dụng các bước tuần tự. Đầu tiên bạn cần tạo một khoảng trống tiêu chuẩn. Sau đó, nó cần được trang bị các tùy chọn cần thiết để biến bot nguyên thủy thành người bán thực sự, có khả năng bán hàng một cách độc lập. Cũng có thể liên kết một cửa hàng đã tồn tại trên Internet.

Quá trình tạo bắt đầu bằng cách liên hệ với bot BotFather, công ty mẹ của robot Telegram. Với sự giúp đỡ của nó, hầu hết các trợ lý cho các mục đích khác nhau đều được thực hiện. Chúng tôi tạo bot của riêng mình bằng cách sử dụng cha của gia đình, để làm được điều này, bạn cần:

Dịch vụ tạo bot

Robot được tạo bằng BotFather cần được phát triển hơn nữa. Một số dịch vụ cung cấp cơ hội đào tạo anh ta miễn phí.

  1. Hàm tạo sẽ cho phép bạn định cấu hình bot mà không cần kiến ​​thức đặc biệt về lập trình viên. Để thực hiện việc này, bạn cần tìm và thêm robot @Chatfuel trong Telegram, sau đó đưa ra lệnh /addbot và nhập mã thông báo đã nhận được từ BotFather. Tác phẩm mới của bạn sẽ được lưu trên dịch vụ Paquebot, từ đó bạn có thể lập trình nó để phù hợp với bất kỳ nhu cầu nào của mình, bao gồm cả việc thiết lập bot bán hàng tự động Telegram.
  2. Dòng chảy XO. Một dịch vụ chuyên về bot kinh doanh. Một số tùy chọn nền tảng là miễn phí, nhưng chức năng chính có mức giá khác nhau.
  3. Dịch vụ này cho phép bạn tạo một cửa hàng trong Telegram và bạn không cần phải liên kết nó với một trang hiện có. Bằng cách sử dụng robot @botoboto_bot, bạn có thể có bot bán hàng của riêng mình. Botobot có thể được sử dụng miễn phí bởi các cửa hàng có tối đa 20 sản phẩm; trên con số này, dịch vụ sẽ áp dụng thuế.

Bot bán hàng hoặc công cụ kinh doanh khác có thể được các chuyên gia từ một trong các dịch vụ tùy chỉnh. Đây là cách robot bán hàng tự động Qiwi được tạo ra, cho phép người dùng làm việc với ví Qiwi của họ. Các chuyên gia giàu kinh nghiệm sẽ giúp bạn thiết lập thanh toán cho hàng hóa và tính đến tất cả các sắc thái của cửa hàng. Bạn có thể yêu cầu trợ giúp từ các thành viên của cộng đồng chuyên biệt trong Telegram.

Chúng tôi tạo một bot đơn giản để xuất bản tin tức trong một kênh và tự động trả lời các câu hỏi trong 6 bước.

Để đánh dấu

Vật liệu được chuẩn bị với sự hỗ trợ của

Sau những cuộc thảo luận sôi nổi trên báo chí CNTT về tính hiệu quả của chatbot, họ đã tìm thấy vị trí thích hợp trong hệ sinh thái người dùng và công ty. Ví dụ: các dự án thường triển khai bot để thông báo về một số sự kiện nhất định và các dịch vụ hỗ trợ sử dụng chúng để trả lời nhanh các câu hỏi thường gặp của khách hàng.

Trong hướng dẫn này, chúng ta sẽ xem xét cách dễ nhất để tạo bot bằng chính đôi tay của bạn và giải thích cách hoạt động của nó.

Hãy bắt đầu với việc phát triển một bot có thể tự động gửi tin tức của công ty được đăng trên trang web hoặc Facebook tới kênh Telegram.

Bước 1. Tạo bot trong Telegram

Bot Telegram được tạo bằng cách sử dụng một bot khác có tên BotFather. Chúng tôi gửi cho anh ấy lệnh /newbot, chọn tên sẽ được hiển thị trong danh sách liên hệ và địa chỉ. Ví dụ: “Bot for DTF” có địa chỉ “dtf_news_bot”.

Nếu địa chỉ không bận và tên được nhập chính xác, BotFather sẽ trả lời bằng một tin nhắn có mã thông báo - “chìa khóa” để truy cập vào bot đã tạo. Nó phải được giữ và không cho bất cứ ai xem.

Thông qua BotFather, bạn cũng có thể thêm hình đại diện cho bot, mô tả, v.v.

Bước 2. Tạo kênh trong Telegram

Bây giờ chúng tôi tạo một kênh với bất kỳ tên và địa chỉ nào và đi tới cài đặt của kênh đó. Tất cả những gì cần thiết là thêm bot chúng tôi đã tạo vào danh sách quản trị viên - bot này sẽ xuất bản ghi chú lên kênh.

Để tìm kiếm bot, bạn có thể sử dụng địa chỉ của nó. Ví dụ: "dtf_news_bot".

Bước 3: Tạo điều kiện

Giai đoạn tiếp theo là dạy bot gửi tin tức từ trang web đến kênh đã tạo. Để làm điều này, chúng tôi sẽ sử dụng dịch vụ tự động hóa phổ biến IFTTT.

Với sự trợ giúp của nó, bạn có thể tạo hướng dẫn để bot hoạt động. Trong trường hợp của chúng tôi, nó trông như thế này: mỗi khi một mục mới xuất hiện trong nguồn cấp dữ liệu RSS của trang web, nó phải gửi một thông báo đến kênh Telegram.

IFTTT là viết tắt của If This Then That

Đi tới phần IFTTT "Applet của tôi", nhấp vào nút "Applet mới" và sau đó nhấp vào liên kết "This". Tìm trình kích hoạt Nguồn cấp dữ liệu, Mục nguồn cấp dữ liệu mới trong danh sách các chức năng và cho biết URL của nguồn cấp dữ liệu RSS của chúng tôi. Ví dụ: đối với các trang Wordpress, nó thường nằm ở example.com/feed/.

Thay vì nguồn cấp dữ liệu RSS, bạn có thể theo dõi sự xuất hiện của các bài đăng mới trong tài khoản Twitter hoặc Facebook của mình - IFTTT có các mô-đun riêng cho từng chức năng.

Bây giờ chúng ta hãy chuyển sang bước thứ hai - chọn hành động sẽ được thực hiện khi phát hiện thấy một mục mới trong RSS. Nhấp vào “That” và tìm Maker Webhook, “Tạo yêu cầu web” - bằng cách sử dụng mô-đun này, bạn có thể gửi yêu cầu tới bất kỳ dịch vụ nào. Trong trường hợp của chúng tôi - với bot trong Telegram.

Trong biểu mẫu mở ra, trong trường URL, bạn cần chỉ định liên kết https://api.telegram.org/bot MÃ THÔNG BÁO/sendMessage, thay thế mã thông báo được tạo ở bước đầu tiên vào đó. Phương thức: POST, loại nội dung: application/json.

Nội dung - trường dành cho mẫu yêu cầu sẽ được gửi tới Telegram. Trong đó, chúng tôi chỉ ra tin nhắn sẽ được gửi đến kênh nào và nên viết gì trong đó:

("chat_id":@channel_address", "text":((EntryTitle)) ((FeedUrl))")

  • trò chuyện_id- địa chỉ của kênh mà tin nhắn sẽ được gửi tới. Do đó, một bot có thể được kết nối với nhiều kênh cùng một lúc. Bạn cũng có thể chỉ định một người dùng cụ thể làm người nhận. Trong trường hợp này, thay vì địa chỉ kênh, bạn phải chỉ định ID của kênh đó (có thể lấy được bằng bot).
  • chữ- nội dung tin nhắn. Ví dụ: tiêu đề của tài liệu từ RSS (EntryTitle), nội dung của nó (EntryContent) và liên kết (FeedUrl). Danh sách các tùy chọn có sẵn có thể được xem bằng cách nhấp vào nút Thành phần.

Nếu mọi thứ được cấu hình đúng, bot sẽ gửi tin nhắn từ nguồn cấp dữ liệu RSS tới kênh. Trình kích hoạt trong IFTTT có độ trễ nên tin nhắn xuất hiện trong nguồn cấp dữ liệu RSS sẽ không được gửi đến Telegram ngay lập tức mà sau 30-60 phút.

Bạn có thể chọn bất kỳ kịch bản nào khác có sẵn trên IFTTT làm điều kiện để gửi tin nhắn. Ví dụ: Weather Underground có thể gửi tin nhắn hàng ngày kèm theo dự báo thời tiết cho ngày mai. Trình kích hoạt Cổ phiếu có thể được cấu hình để gửi giá cổ phiếu khi kết thúc giao dịch.

Bây giờ chúng tôi sẽ giải quyết một vấn đề phức tạp hơn - chúng tôi sẽ dạy bot đã tạo cách trả lời tin nhắn của người dùng. Ví dụ: gửi bảng giá, địa chỉ liên hệ hoặc trả lời các câu hỏi thường gặp của khách hàng.

Bước 4. Kết nối máy chủ

Ở giai đoạn này, bạn sẽ cần dịch vụ lưu trữ web và chứng chỉ SSL, có thể nhận được miễn phí bằng dịch vụ Let's Encrypt.

Cách thuận tiện nhất là tạo một tên miền phụ riêng cho bot - ví dụ: bot.example.com - và đặt một tệp index.php trên đó. Bên trong tệp, chúng tôi đặt mã của một bot đơn giản từ trang web Telegram.

Bạn chỉ cần thực hiện hai thay đổi đối với mã bot:

  • xếp hàng định nghĩa ("BOT_TOKEN", "12345678: thay thế tôi bằng mã thông báo thực"); thay vì 12345678:replace-me-with-real-token hãy viết mã thông báo thu được ở bước đầu tiên;
  • xếp hàng xác định ("WEBHOOK_URL", "https://my-site.example.com/secret-path-for-webhooks/"); Thay vì https://my-site.example.com/secret-path-for-webhooks/, hãy chỉ định URL của tệp có mã cho bot: https://bot.example.com/index.php.

Bước 5. Liên kết bot Telegram và máy chủ

Bây giờ chúng ta cần liên kết Telegram và tệp trên máy chủ để các yêu cầu gửi đến bot trong trình nhắn tin được tập lệnh của chúng tôi xử lý.

Bạn sẽ cần một bàn điều khiển cho việc này. Đối với các nhà cung cấp dịch vụ lưu trữ khác nhau, nó có thể nằm ở các phần khác nhau của giao diện quản lý trang. Bạn cũng có thể sử dụng chương trình Terminal trên macOS bằng cách nhập lệnh tên người dùng ssh@địa chỉ tên miền.

Sau khi nhập mật khẩu, chúng tôi in một lệnh đơn giản cho tên miền phụ của mình :

php -f /var/www/bot.example.com/index.php

Rất vui được gặp bạn - phản hồi của bot đối với tin nhắn do người dùng gửi.

Dưới đây trong mã, chúng tôi thêm các phản hồi bổ sung. Ví dụ, để tùy theo từ được gửi, bot sẽ gửi các thông tin cần thiết cho người dùng (như trong

Telegram gần đây đã được mọi người nhắc đến. Chúng ta phải công nhận bộ phận tiếp thị của ứng dụng này, họ đã tạo ra rất nhiều sự cường điệu. Một trong những tính năng chính của Telegram là tính bảo mật được cho là của nó - theo Pavel Durov, tất cả thư từ giữa người dùng đều được mã hóa. Hơn nữa, không có cơ quan tình báo nào trên thế giới có quyền truy cập vào tin nhắn của bạn. Nhưng bài viết này không nói về điều đó. Hôm nay tôi muốn nói về một tính năng thú vị không kém trong Telegram, đó là bot. Ngoài thực tế là mạng đã có đầy đủ thông tin về các loại bot Telegram khác nhau (ví dụ như bot github), trình nhắn tin đã mở API cho các nhà phát triển và giờ đây mọi người đều có thể tạo bot của riêng mình bằng blackjack và tiền thưởng.

Trong bài viết này, tôi sẽ đưa ra một ví dụ về cách viết bot trực tuyến bằng khung Python và Django. Nghĩa là, chúng tôi sẽ xây dựng một ứng dụng web chính thức chạy trên máy chủ từ xa và nhận lệnh từ người dùng. Tất cả mã nguồn đều có sẵn trong kho github của tôi.

Có tài liệu mô tả quá trình tương tác với bot Telegram. Để không phát minh lại bánh xe, tôi đã tìm thấy một thư viện Python tốt thực hiện tất cả các chức năng cơ bản của bot - telepot. Như tôi đã đề cập trước đó, để phục vụ người dùng bot, chúng tôi sẽ phát triển một ứng dụng web bằng khung Django.

Làm cách nào để tạo bot Telegram?

Đầu tiên, chúng ta cần đăng ký bot tương lai của mình trên Telegram. Điều này được thực hiện như sau:

  • Bạn cần cài đặt ứng dụng Telegram trên điện thoại hoặc máy tính. Bạn có thể tải xuống ứng dụng
  • Thêm bot có tên vào danh sách liên hệ của bạn cha bot
  • Chúng tôi bắt đầu quy trình “giao tiếp” với bot bằng cách nhấn nút Bắt đầu. Tiếp theo, chúng ta sẽ thấy danh sách các lệnh chính xác như trong ảnh chụp màn hình.
  • Để tạo bot mới bạn cần chạy lệnh /newbot và làm theo hướng dẫn. lưu ý rằng tên người dùng cho bot phải luôn có chữ bot ở cuối. Ví dụ: DjangoBot hoặc Django_bot.

  • Đối với bot của chúng tôi, tôi đã chọn tên PythonPlanetBot, vì chức năng chính của nó là phân tích nguồn cấp dữ liệu RSS của trang web Python Planet và cung cấp thông tin về các bài đăng mới nhất cho người dùng :)

Sau khi tạo xong bot chú ý đến dòng text:

Sử dụng mã thông báo này để truy cập API HTTP:

Tiếp theo là cái gọi là mã thông báo mà chúng tôi sẽ thao tác với bot của mình. Ngoài chức năng tạo bot telegram, BotFather còn có một số tính năng khác:

  • Cung cấp cho bot một mô tả
  • Đặt hình đại diện
  • Thay đổi mã thông báo

Hãy bắt đầu viết mã

Như tôi đã đề cập trước đó, chúng tôi sẽ viết Ứng dụng web Django. Nhưng điều đáng chú ý là điều này là không cần thiết. Bạn có thể thực hiện bằng tập lệnh Python thông thường, mặc dù trong trường hợp này, bạn sẽ cần thăm dò Telegram định kỳ để biết các yêu cầu mới từ người dùng bot (sử dụng phương thức cập nhật) và tăng độ lệch để có được dữ liệu mới nhất mà không bị lặp lại. Trong Telegram, có hai phương pháp loại trừ lẫn nhau để nhận lệnh/tin nhắn cho bot của bạn.

  • Sử dụng lệnh gọi phương thức API cập nhật
  • Cài đặt webhook

Thiết lập Webhook bao gồm việc chuyển một URL đặc biệt tới bot mà yêu cầu POST sẽ được gửi tới mỗi khi ai đó bắt đầu gửi tin nhắn tới bot. Đây là tùy chọn mà chúng tôi sẽ sử dụng để tương tác giữa bot và người dùng của nó. Để đặt URL, bạn phải sử dụng phương thức API bộWebhook. Tôi lưu ý rằng URL phải bắt đầu bằng https, nghĩa là có kết nối SSL an toàn với chứng chỉ hợp lệ. Telegram cho phép bạn sử dụng chứng chỉ tự ký, mặc dù điều này yêu cầu một phương pháp bộWebhook cũng truyền khóa chung ở định dạng PEM (ASCII base64). Hoặc bạn có thể lấy nó từ Let's Encrypt.

Đọc thêm về cập nhậtbộWebhook có thể được đọc tương ứng và .

Vì vậy, hãy quay lại thư viện python để làm việc với Telegram - điện thoại. Hiện nay phiên bản mới nhất của nó là 6.7. Cài đặt nó trong môi trường ảo python virtualenv:

Pip cài đặt telepot

Cách đơn giản nhất để tương tác với bot Telegram bằng Python như sau:

Nhập mã thông báo telepot = "123456" TelegramBot = telepot.Bot(token) print TelegramBot.getMe()

Biến token được gán giá trị của token nhận được khi tạo bot thông qua BotFather. Kết quả sau khi thực hiện các lệnh này chúng ta sẽ nhận được:

(u"tên người dùng": u"PythonPlanetBot", u"first_name": u"Python Planet Bot", u"id": 199266571)

Chúc mừng! Chúng tôi gọi yêu cầu API đơn giản nhất là getMe, yêu cầu này trả về thông tin về bot: tên người dùng, id, first_name.

Hãy thêm bot của chúng ta vào danh sách liên hệ và gửi cho nó lệnh tiêu chuẩn đầu tiên /start

Thực thi mã:

TelegramBot.getUpdates() [(u"message": (u"date": 1459927254, u"text": u"/start", u"from": (u"tên người dùng": u"adilkhash", u"first_name ": u"Adil", u"id": 31337), u"message_id": 1, u"chat": (u"tên người dùng": u"adilkhash", u"first_name": u"Adil", u" gõ": u"riêng tư", u"id": 7350)), u"update_id": 649179764)]

Quá trình liên lạc với bot điện tín diễn ra thông qua HTTPS; JSON được sử dụng để truyền dữ liệu. Phương pháp cập nhật trả về một danh sách/mảng các đối tượng loại Cập nhật. Cập nhật bên trong là một đối tượng Tin nhắn. Để tương tác tiêu chuẩn với bot, chúng tôi thực sự quan tâm đến đối tượng Tin nhắn, từ đó chúng tôi đọc thuộc tính văn bản, lưu trữ văn bản được gửi đến bot và đối tượng trò chuyện, chứa thông tin về người dùng đã bắt đầu cuộc trò chuyện với Telegram của chúng tôi người máy. Ngoài ra còn có tham số update_id đóng vai trò là tham số offset khi gọi phương thức getUpdates. Nghĩa là, update_id+1 sẽ trả về tất cả các tin nhắn nhận được sau update_id cuối cùng, trong khi tất cả các tin nhắn trước đó sẽ bị xóa.

TelegramBot.getUpdates(649179764+1) [(u"message": (u"date": 1459928527, u"text": u"hello bro", u"from": (u"tên người dùng": u"adilkhash", u"first_name": u"Adil", u"id": 31337), u"message_id": 13, u"chat": (u"tên người dùng": u"adilkhash", u"first_name": u"Adil" , u"type": u"private", u"id": 7350)), u"update_id": 649179765)]

Ở giai đoạn viết bot Telegram đơn giản nhất, những cuộc gọi này là đủ đối với chúng tôi. Hãy bắt đầu viết một ứng dụng Django để phục vụ người dùng của chúng ta.

Một hàm phân tích nguồn cấp dữ liệu RSS của Planet Python đơn giản trông như thế này:

# -*- mã hóa: utf8 -*- from xml.etree import cElementTree yêu cầu nhập def pars_planetpy_rss(): """Phân tích 10 mục đầu tiên từ http://planetpython.org/rss20.xml """ reply = request.get ("http://planetpython.org/rss20.xml") Parsed_xml = cElementTree.fromstring(response.content) items = cho nút trong Parsed_xml.iter(): if node.tag == "item": item = () đối với item_node trong danh sách (nút): if item_node.tag == "title": item["title"] = item_node.text if item_node.tag == "link": item["link"] = item_node.text items. nối thêm(item) trả lại items[:10]

Messenger đang nhanh chóng trở nên phổ biến đối với người dùng Internet do tính tiện lợi, tốc độ hoạt động và không có thông tin không cần thiết như trong mạng xã hội.

Một trong những ứng dụng nhắn tin tức thời phổ biến nhất vì nó cung cấp mức độ bảo mật cao cho thư từ.

Do đó, đôi khi người dùng có thể có câu hỏi - làm cách nào để tạo chatbot trong Telegram để quảng bá tích cực nhất các sản phẩm và dịch vụ của họ tới người tiêu dùng tiềm năng.

Sự định nghĩa

Chatbot là gì? Chatbot hay đơn giản là bot là một thuật toán máy tính được thiết kế để tự động thực hiện trao đổi thư từ và đối thoại với người dùng thực.

Thuật toán này hoạt động không theo nguyên tắc của trí tuệ nhân tạo mà theo một hệ thống cụ thể để phân tích tin nhắn đến và chọn các tùy chọn phản hồi từ cơ sở dữ liệu hiện có.

Do đó, trong một số trường hợp hiếm hoi, câu trả lời của bot không phù hợp, nhưng thường thì một bot phát triển tốt không chỉ có khả năng duy trì một cuộc đối thoại đầy đủ mà còn có thể trả lời các câu hỏi của người dùng, đưa ra lời khuyên, v.v.

Chatbots phổ biến trên các loại trang web.

Chúng thường được tìm thấy trên mạng xã hội và có nhiều biến thể khác nhau, chẳng hạn như Art-bot, tự động tạo bản phác thảo dựa trên ảnh đã gửi, trên trang web của các công ty và công ty, trên nhiều tài nguyên khác, trong trình nhắn tin, các nhóm và trang công khai trên mạng xã hội.

Phạm vi ứng dụng

Tại sao bạn có thể cần bot trong Telegram?

Trong hầu hết các trường hợp, bot, đặc biệt là những bot được sử dụng trong bot, được yêu cầu để quảng bá sản phẩm và dịch vụ của tổ chức.

Họ có thể cung cấp tư vấn về sản phẩm và/hoặc dịch vụ, điều kiện hoạt động của tổ chức, v.v.

Vì mục đích gì mà một công ty cụ thể có thể cần một bot như vậy:

  • Để làm việc đồng thời với số lượng lớn khách hàng;
  • Để tư vấn cho người tiêu dùng tiềm năng về các vấn đề cơ bản và các thông số đơn giản;
  • Để giảm tải cho các nhà điều hành đường dây nóng hoặc hỗ trợ khách hàng;
  • Để giảm chi phí trả thù lao cho các chuyên gia tư vấn và giảm số lượng nhân viên của họ;
  • Phân phối các yêu cầu của khách hàng giữa các nhà khai thác ở giai đoạn đầu của công việc;
  • Để chuyển tiếp các câu hỏi phức tạp của khách hàng đến một nhà tư vấn thực sự.

Việc sử dụng chatbot có thể mang lại những thay đổi tích cực nào?

đầu tiênĐây là sự giảm tải cho các nhà khai thác thực tế, đồng nghĩa với việc giảm nhân viên và giờ làm việc, dẫn đến tiết kiệm đáng kể tiền bạc.

Thứ hai, điều này cho phép bạn làm việc đồng thời với nhiều khách hàng hơn trước, có khả năng dẫn đến tăng lợi nhuận cho tổ chức.

Khuyên bảo!Điều quan trọng cần nhớ là bot chỉ hoạt động tốt và hiệu quả đối với các chủ đề công việc tương đối đơn giản khi tư vấn có thuật toán rõ ràng. Và chỉ ở giai đoạn đầu làm việc với khách hàng tiềm năng hoặc khách hàng hiện tại.

Sự sáng tạo

Telegram cho phép bạn tạo bot và thậm chí còn có một số thuật toán tích hợp để phát triển và kích hoạt chúng.

Việc tạo bot trong trình nhắn tin này khá đơn giản và nhanh chóng, điều này cũng làm tăng thêm mức độ phổ biến của ứng dụng này và khiến nó trở thành ứng dụng chính được sử dụng trong hầu hết các tổ chức và công ty.

Mặc dù bản thân việc phát triển bot không thể được gọi là một quá trình rất đơn giản và nhanh chóng - ngay cả với nền tảng tích hợp tiện lợi như Telegram, nó vẫn sẽ mất khá nhiều thời gian.

Thuật toán tạo

Sẽ thuận tiện nhất khi tạo bot trên máy tính vì bạn sẽ cần khá nhiều tệp bổ sung.

Để thực hiện việc này, bạn có thể tải xuống và cài đặt Telegram trên máy tính của mình, sau đó tạo bot.

Nhưng bạn có thể làm điều này từ điện thoại của bạn.

1 Sau khi quá trình cài đặt Telegram hoàn tất, mở ứng dụng và trong thanh tìm kiếm được đánh dấu bằng biểu tượng kính lúp, gõ Manybot;

2 Nhấn nút Tìm kiếm trong cửa sổ hoặc nút Đầu vào bàn phímđể thực hiện tìm kiếm;

3 Khi kết quả tìm kiếm xuất hiện, nhấp vào nút Bắt đầu, nằm ở cuối cửa sổ chương trình bên phải;

4 Nhấn nút Thêm bot mới;

5 Đáp lại, một tin nhắn dịch vụ từ Telegram sẽ xuất hiện trong cửa sổ tin nhắn, chứa hướng dẫn về các hành động tiếp theo của bạn để tạo bot - bạn phải tuân thủ chính xác chúng;

6 Theo hướng dẫn, truy cập tài khoản @BotFather bằng cách nhấp vào liên kết màu xanh có tên tài khoản;

7 Bây giờ nhấp vào nút Gửi tin nhắnđể bắt đầu trao đổi thư từ với “người dùng” này;

8 Nhập lệnh /bắt đầu và để đáp lại nó, bạn sẽ nhận được một danh sách các lệnh có thể được sử dụng khi tạo bot;

9 Gửi lệnh /khởi động mới;

10 Chờ phản hồi;

11 Gửi tên bot ban đầu bạn đã tạo– đây là những gì sẽ được hiển thị khi tìm kiếm;

12 Bây giờ hãy đợi phản hồi và gửi tên kỹ thuật của bot– nó phải được viết bằng tiếng Anh và kết thúc bằng “bot”;

13 Ở giai đoạn này nên sao chép mã thông báo API;

14 Quay lại lần nữa @Manybot;

15 Dán bản sao đã sao chép ở mã thông báo API giai đoạn trước;

16 Chờ phản hồi;

17 Bây giờ hãy nhập mục tiêu của bot của bạn– nó cần thiết để làm gì và nó sẽ hoạt động như thế nào;

18 Bạn có thể bỏ qua bước này - để thực hiện việc này, hãy nhập /nhảy;

19 Chờ phản hồi, thông báo rằng quá trình tạo bot đã hoàn tất.

Bot hiện đã được tạo và sẵn sàng để sử dụng. Trong tin nhắn phản hồi, bạn được cung cấp một liên kết đến bot để mời người dùng từ danh sách liên hệ của bạn tham gia. Nó cũng cung cấp danh sách các lệnh được khuyến nghị để đăng và tự động đăng lên mạng xã hội.

Kiểm tra chức năng

Bây giờ bạn cần kiểm tra xem bot của bạn có hoạt động tốt không.

Để thực hiện việc này, hãy thử tìm nó qua , nhập tên tìm kiếm chứ không phải tên kỹ thuật.

Nếu bạn đã làm mọi thứ chính xác ở giai đoạn trước, bot sẽ hiển thị trong kết quả tìm kiếm và hoạt động bình thường.

Tạo nhóm

Nếu bot hoạt động bình thường thì bạn có thể bắt đầu tạo nhóm của riêng mình trong đó.

Các lệnh là cần thiết để khi người dùng hỏi bot một câu hỏi, bot sẽ trả lời bằng thông tin cần thiết và các lệnh cần phải được tạo cho tất cả các bot.

Để làm điều này, hãy làm như sau:

1 quay số /lệnh trong trường đầu vào;

2 Nhập tên của nhóm bạn đang tạo;

3 Nhập văn bản mà bot sẽ đưa ra để đáp lại lệnh này– đây có thể là một hoặc nhiều tin nhắn, có thể bao gồm hình ảnh, âm nhạc, video;

Giờ đây bạn có thể thoải mái tạo các lệnh khác đáp ứng các yêu cầu khác với số lượng không giới hạn.

Việc chỉnh sửa lệnh đã tạo cũng được chấp nhận, để làm điều này, hãy làm như sau:

1 Nhập /lệnh, /Tên nhóm;

2 Bấm vào nút lệnh Hiển thị và phản hồi mà người dùng nhận được đối với lệnh đó sẽ xuất hiện;

3 Theo đó, nút Chỉnh sửa phản hồi lệnh sẽ cho phép bạn chỉnh sửa phản hồi mà lệnh đưa ra cho người dùng.

Twitter hoặc RSS.

Để thiết lập chương trình phát sóng như vậy, hãy làm như sau:

1 Nhập bot của bạn /lệnh đăng tự động;

2 Bây giờ trong số các nút ở cuối cửa sổ chọn mạng xã hội mà bạn muốn thiết lập phát sóng tự động và bấm vào nó;

3 Nhập liên kết tới trang đó, từ đó bạn muốn phát tin tức trên Telegram (đây không nhất thiết phải là trang được ủy quyền, tức là bạn có thể thiết lập tính năng tự động đăng không phải từ trang của mình hoặc không được ủy quyền trên trang web).

Định dạng này rất phù hợp để phân phối tin tức tới một số lượng lớn người đăng ký.

Tuy nhiên, nó không phù hợp để tư vấn cho khách hàng chẳng hạn.