Cách xây dựng một Bot Telegram cơ bản với Python 3

Cách xây dựng một Bot Telegram cơ bản với Python 3

Nếu bạn là người dùng Telegram, chắc chắn bạn đã có một cuộc ‘trò chuyện’ với một chatbot tại một thời điểm nào đó. Với khả năng tùy chỉnh tuyệt vời, bot của Telegram mang lại nhiều lợi thế --- có thể là để tự động hóa các tác vụ hoặc chỉ để giải trí với các trò chơi trong nhóm trò chuyện của bạn.





Mặc dù một số người có thể thấy việc phát triển một bot là một nhiệm vụ khó khăn, nhưng thực sự thì không. Với kế hoạch phù hợp, bạn có thể có một bot Telegram hoạt động trong vòng chưa đầy một giờ! Dưới đây là cách tạo một bot Telegram đơn giản để xuất ra những bức ảnh dễ thương về những chú mèo trên Internet khi được nhắc.





Bắt đầu

Đối với hướng dẫn này, chúng tôi sẽ sử dụng Python 3, python-telegram-botyêu cầu thư viện, và TheCatAPI .





Mỗi bot trong Telegram đều có một mã thông báo duy nhất giúp nó giao tiếp với API bot để sử dụng giao diện nhắn tin của ứng dụng. Bot API, một trong những tính năng phổ biến nhất của Telegram giữa các nhà phát triển, cho phép bạn sử dụng các thông điệp của nó làm giao diện.

cách xóa hình mờ khỏi ảnh

Để nhận mã thông báo, hãy bắt đầu cuộc trò chuyện với @BotFather , như tên cho thấy, là một bot chính thức cho phép bạn tạo và tùy chỉnh các bot của riêng mình. Bạn có thể truy cập bot bằng liên kết đã cho hoặc tìm kiếm ‘@botfather’ trên Telegram.



Khi ở trong cuộc trò chuyện, hãy tạo bot của bạn bằng cách nhập / newbot chỉ huy. Tiếp tục đặt tên và tên người dùng cho bot của bạn (chúng tôi quyết định đặt tên là @pawsomebot của chúng tôi). Sau đó, bạn sẽ nhận được một mã thông báo duy nhất cho bot của mình.

Bây giờ chúng ta đã có tất cả các điều kiện tiên quyết, đã đến lúc bắt đầu phần thú vị!





Cài đặt thư viện

Nếu bạn đang sử dụng Windows, hãy mở dấu nhắc lệnh và nhập các lệnh sau:

pip install python-telegram-bot
pip install requests

Nếu bạn đang sử dụng macOS hoặc Linux, hãy sử dụng các lệnh sau trên thiết bị đầu cuối của bạn. Ngoài ra trong Linux, hãy đảm bảo rằng bạn đã đăng nhập với tư cách là người dùng có đặc quyền sudo.





pip3 install python-telegram-bot
pip3 install requests

Viết chương trình

Tạo một thư mục mới trên máy tính của bạn và mở nó trong trình chỉnh sửa yêu thích của bạn. Tạo một tệp mới và đặt tên là main.py. Tệp này sẽ chứa mã nguồn cho bot của bạn.

Bây giờ, hãy nhập các thư viện mà chúng tôi đã cài đặt trước đó cùng với một số chức năng tích hợp của chúng.

from telegram.ext import Updater, CommandHandler
import requests
import re

Quy trình của chương trình từ đây trở đi là truy cập TheCatAPI, lấy URL của một hình ảnh ngẫu nhiên và gửi hình ảnh đó đến cuộc trò chuyện của người dùng.

Hãy bắt đầu với một chức năng để lấy URL hình ảnh, có thể được thực hiện bằng cách sử dụng mô-đun yêu cầu. Trong chức năng này, chúng tôi tải dữ liệu JSON của một tệp ngẫu nhiên do TheCatAPI cung cấp và trích xuất URL của nó để sử dụng sau này. Để xem định dạng của đối tượng JSON, hãy xem https://api.thecatapi.com/v1/images/search trên trình duyệt của bạn. Bạn sẽ nhận thấy một cái gì đó như thế này:

[{'breeds':[],'id':'a8c','url':'url.jpg','width':800,'height':533}]

Lưu ý rằng đối tượng JSON là một mảng chứa từ điển. Từ điển này chứa URL với khóa 'url'. Để trích xuất URL, chúng ta cần tham chiếu đến phần tử đầu tiên của mảng, sau đó là khóa có liên quan.

def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url

Tiếp theo, chúng tôi cần gửi hình ảnh này vào cuộc trò chuyện của người dùng. Đối với điều này, chúng tôi cần một URL hình ảnh cũng như ID duy nhất của cuộc trò chuyện của người dùng. Hãy tạo một hàm trình bao bọc để thực hiện việc này. Đầu tiên, chúng tôi gọi là getUrl () . hàm để lấy URL của một hình ảnh ngẫu nhiên --- URL này thay đổi mỗi khi chương trình của bạn lặp lại qua hàm.

Sau đó, việc này được thực hiện bằng cách lấy ID trò chuyện của người nhận, xác định vị trí mục tiêu của bot cho các tin nhắn và phân tích cú pháp URL thông qua API Bot có sẵn gửi ảnh() hàm số.

def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)

Để tìm hiểu thêm về các chức năng có sẵn khác nhau của Bot API và cách chúng hoạt động, vui lòng xem Telegram’s tài liệu chính thức sau hướng dẫn này.

Cuối cùng, hãy tạo một chức năng kiểm soát hoạt động chung của bot. Hàm này --- thường được gọi là main () --- là nơi chúng tôi gửi một yêu cầu HTTP đến Bot API bằng cách sử dụng mã thông báo mà chúng tôi thu được ở đầu hướng dẫn và sau đó xác định tương tác với người dùng của bot sẽ như thế nào. Trong trường hợp đơn giản như của chúng tôi, điều này về cơ bản có nghĩa là khởi tạo bot và gọi Gửi hình ảnh () chức năng khi được người dùng nhắc.

def main():
updater = Updater('1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c')
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

Chương trình cuối cùng của bạn sẽ trông như thế này:

from telegram.ext import Updater, CommandHandler
import requests
import re
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
def main():
updater = Updater('1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c')
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

Bot Telegram của riêng bạn

Xin chúc mừng! Bạn đã xây dựng bot giảm căng thẳng của riêng mình để gửi hình ảnh mã nguồn mở về những con mèo Internet dễ thương nhất khi được nhắc nhở. Thử chạy chương trình của bạn và nhập /meo trong cuộc trò chuyện của bot của bạn để kích hoạt nó.

Mặc dù đây có thể là một bot đơn giản với chức năng hạn chế, nhưng nó cho thấy hệ sinh thái phát triển bot của Telegram mạnh mẽ như thế nào. Bạn có thể thêm vào bất kỳ số lượng chương trình con và tính năng phức tạp nào để nâng cao chức năng cho bot của mình --- bầu trời là giới hạn. Để tìm hiểu thêm về các chương trình Telegram tuyệt vời mà những người đóng góp đã thực hiện trong những năm qua, hãy xem danh sách các bot Telegram hữu ích .

Bạn cũng có thể tìm thấy nhiều chương trình được cấp phép mã nguồn mở cho bot Telegram trên các nền tảng như GitHub. Hầu hết các giấy phép nguồn mở cho phép bạn sử dụng, nghiên cứu, tải xuống hoặc sửa đổi mã nguồn của một chương trình.

Lưu trữ Bot Telegram của bạn trực tuyến

Bây giờ bạn đã thiết lập và chạy bot của mình, hãy thử đóng main.py trên PC và sử dụng bot trên ứng dụng nhắn tin Telegram của bạn. Nó vẫn phản hồi /meo chỉ huy? Không, nó không.

Là người mới bắt đầu, bạn có thể bối rối tại sao main.py trên PC của bạn cần phải được thiết lập và chạy khi bạn đã tạo một bot chạy trên internet. Lý do cho điều này là chương trình sử dụng PC của bạn làm máy chủ cục bộ để gửi các yêu cầu HTTP đến các API được sử dụng trong chương trình này.

Do đó, việc phải chạy chương trình mỗi khi bạn muốn sử dụng ứng dụng là không khả thi và cũng không thuận tiện. Để giải quyết vấn đề này, chúng tôi cần xóa sự phụ thuộc của bot vào thiết bị của bạn

Một cách để làm như vậy là sử dụng bảng mạch in (PCB) giá rẻ, chẳng hạn như Raspberry Pi, để thiết lập máy chủ web của riêng bạn và sử dụng nó để chạy chương trình của bạn. Nó có những lợi ích tương tự như việc chạy chương trình trên PC của bạn mà không tốn chi phí lưu giữ nó cả ngày lẫn đêm vì PCB có xu hướng tiêu tốn năng lượng thấp hơn đáng kể.

Ngoài ra, bạn cũng có thể triển khai chương trình của mình lên đám mây. Chuyển đến nền tảng lưu trữ ứng dụng web như Heroku, AWS, Google Cloud hoặc Microsoft Azure và chọn đăng ký phù hợp nhất với nhu cầu của bạn. Chúng tôi khuyên bạn nên chọn bản dùng thử hoặc đăng ký miễn phí và nâng cấp khi bạn tăng quy mô hoặc phạm vi chương trình của mình.

Đăng lại Đăng lại tiếng riu ríu E-mail Cách lưu trữ trang web Python của bạn miễn phí trên Heroku

Cần lưu trữ một trang web nhỏ miễn phí? Heroku có thể là thứ bạn đang tìm kiếm.

Đọc tiếp
Chủ đề liên quan
  • Lập trình
  • Python
  • Telegram
  • Chatbot
  • Bots trên mạng xã hội
Giới thiệu về tác giả Yash Chellani(10 bài báo đã xuất bản)

Yash là một sinh viên khoa học máy tính đầy tham vọng, thích xây dựng mọi thứ và viết về mọi thứ công nghệ. Khi rảnh rỗi, anh ấy thích chơi Squash, đọc bản sao của Murakami mới nhất và săn rồng trong Skyrim.

Xem thêm từ Yash Chellani

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký