HomeLập trìnhPythonTìm hiểu cách...

Tìm hiểu cách xây dựng bot đầu tiên của bạn trong Telegram bằng Python


Hãy tưởng tượng điều này, có một bot tin nhắn sẽ gửi cho bạn một hình ảnh chú chó dễ thương ngẫu nhiên bất cứ khi nào bạn muốn, nghe thật tuyệt phải không? Hãy làm một!

Đối với hướng dẫn này, chúng tôi sẽ sử dụng Python 3, python-telegram-bot, và API công khai con chó ngẫu nhiên.

Vào cuối hướng dẫn này, bạn sẽ có một bot giảm căng thẳng sẽ gửi cho bạn những hình ảnh chú chó dễ thương mỗi khi bạn cần, yay!

Bắt đầu

Trước khi bắt đầu viết chương trình, chúng ta cần tạo mã thông báo cho bot của mình. Cần có mã thông báo để truy cập API Telegram và cài đặt các phụ thuộc cần thiết.

1. Tạo bot mới trong BotFather

Nếu bạn muốn tạo bot trong Telegram, trước tiên bạn phải “đăng ký” bot của mình trước khi sử dụng. Khi chúng tôi “đăng ký” bot của mình, chúng tôi sẽ nhận được mã thông báo để truy cập API Telegram.

Truy cập BotFather (nếu bạn mở nó trên máy tính để bàn, hãy đảm bảo rằng bạn có ứng dụng Telegram), sau đó tạo bot mới bằng cách gửi /newbot chỉ huy. Làm theo các bước cho đến khi bạn nhận được tên người dùng và mã thông báo cho bot của mình. Bạn có thể truy cập bot của mình bằng cách truy cập URL này: https://telegram.me/YOUR_BOT_USERNAME và mã thông báo của bạn sẽ trông như thế này.

704418931:AAEtcZ*************

2. Cài đặt thư viện

Vì chúng ta sẽ sử dụng một thư viện cho hướng dẫn này, hãy cài đặt nó bằng lệnh này.

pip3 install python-telegram-bot

Nếu thư viện được cài đặt thành công, thì chúng ta đã sẵn sàng.

Đọc thêm  Cách chỉnh sửa PYTHONPATH trên Windows

Viết chương trình

Hãy tạo bot đầu tiên của chúng ta. Bot này sẽ trả lại hình ảnh con chó khi chúng tôi gửi /bop chỉ huy. Để có thể làm điều này, chúng ta có thể sử dụng API công khai từ con chó ngẫu nhiên để giúp chúng tôi tạo hình ảnh con chó ngẫu nhiên.

Quy trình làm việc của bot của chúng tôi đơn giản như sau:

truy cập API -> lấy URL hình ảnh -> gửi hình ảnh

1. Nhập thư viện

Đầu tiên, nhập tất cả các thư viện chúng tôi cần.

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

2. Truy cập API và lấy URL hình ảnh

Hãy tạo một hàm để lấy URL. Sử dụng thư viện yêu cầu, chúng tôi có thể truy cập API và lấy dữ liệu json.

contents = requests.get('https://random.dog/woof.json').json()

Bạn có thể kiểm tra dữ liệu json bằng cách truy cập URL đó: https://random.dog/woof.json trong trình duyệt của bạn. Bạn sẽ thấy một cái gì đó như thế này trên màn hình của bạn:

{“url":"https://random.dog/*****.JPG"}

Nhận URL hình ảnh vì chúng tôi cần tham số đó để có thể gửi hình ảnh.

image_url = contents['url']

Gói mã này vào một chức năng gọi là get_url() .

def get_url():
    contents = requests.get('https://random.dog/woof.json').json()    
    url = contents['url']
    return url

3. Gửi hình ảnh

Để gửi tin nhắn/hình ảnh, chúng tôi cần hai tham số, URL của hình ảnh và ID của người nhận — đây có thể là ID nhóm hoặc ID người dùng.

Chúng tôi có thể lấy URL hình ảnh bằng cách gọi get_url() chức năng.

url = get_url()

Nhận ID của người nhận bằng mã này:

chat_id = update.message.chat_id

Sau khi chúng tôi nhận được URL hình ảnh và ID của người nhận, đã đến lúc gửi tin nhắn, đó là một hình ảnh.

bot.send_photo(chat_id=chat_id, photo=url)

Bọc mã đó trong một chức năng gọi là bop và đảm bảo rằng mã của bạn trông như thế này:

def bop(bot, update):
    url = get_url()
    chat_id = update.message.chat_id
    bot.send_photo(chat_id=chat_id, photo=url)

4. Main program

Cuối cùng, tạo một chức năng khác gọi là main để chạy chương trình của chúng tôi. Đừng quên thay đổi YOUR_TOKEN với mã thông báo mà chúng tôi đã tạo trước đó trong hướng dẫn này.

def main():
    updater = Updater('YOUR_TOKEN')
    dp = updater.dispatcher
    dp.add_handler(CommandHandler('bop',bop))
    updater.start_polling()
    updater.idle()
    
if __name__ == '__main__':
    main()

Cuối cùng, mã của bạn sẽ trông như thế này:

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

def get_url():
    contents = requests.get('https://random.dog/woof.json').json()    
    url = contents['url']
    return url

def bop(bot, update):
    url = get_url()
    chat_id = update.message.chat_id
    bot.send_photo(chat_id=chat_id, photo=url)

def main():
    updater = Updater('YOUR_TOKEN')
    dp = updater.dispatcher
    dp.add_handler(CommandHandler('bop',bop))
    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

5. Chạy chương trình

Thật tuyệt vời! Bạn đã hoàn thành chương trình đầu tiên của mình. Bây giờ hãy kiểm tra xem nó có hoạt động không. Lưu tệp, đặt tên cho nó main.py sau đó chạy nó bằng lệnh này.

python3 main.py

Truy cập bot điện tín của bạn bằng cách truy cập URL này: https://telegram.me/YOUR_BOT_USERNAME. gửi /bop chỉ huy. Nếu mọi thứ chạy hoàn hảo, bot sẽ trả lời bằng một hình ảnh con chó ngẫu nhiên. Đáng yêu phải không?

Đọc thêm  Cách làm phẳng từ điển bằng Python theo 4 cách khác nhau
cgojJGcVwIVamFkYrpcRzrOOBJ0xFB0cTkTP
Một hình ảnh được tạo ngẫu nhiên

Xử lý lỗi

Tuyệt quá! Bây giờ bạn có một bot sẽ gửi cho bạn hình ảnh chú chó dễ thương bất cứ khi nào bạn muốn.

Có nhiều! Các con chó ngẫu nhiên API không chỉ tạo hình ảnh mà còn cả video và GIF. Nếu chúng tôi truy cập API và chúng tôi nhận được video hoặc GIF, thì đó là lỗi và bot sẽ không gửi cho bạn.

Hãy sửa lỗi này để bot chỉ gửi tin nhắn có tệp đính kèm hình ảnh. Nếu chúng tôi nhận được video hoặc GIF thì chúng tôi sẽ gọi lại API cho đến khi chúng tôi nhận được hình ảnh.

1. Khớp phần mở rộng tệp bằng regex

Chúng tôi sẽ sử dụng một biểu thức chính quy để giải quyết vấn đề này.

Để phân biệt hình ảnh với video hoặc GIF, chúng ta có thể xem phần mở rộng của tệp. Chúng tôi chỉ cần phần cuối cùng của URL của chúng tôi.

https://random.dog/*****.JPG

Trước tiên, chúng ta cần xác định phần mở rộng tệp nào được phép trong chương trình của mình.

allowed_extension = ['jpg','jpeg','png']

Sau đó, sử dụng biểu thức chính quy để trích xuất phần mở rộng tệp từ URL.

file_extension = re.search("([^.]*)$",url).group(1).lower()

Sử dụng mã đó, tạo một hàm gọi là get_image_url() để lặp lại URL cho đến khi chúng tôi nhận được phần mở rộng tệp mà chúng tôi muốn (jpg,jpeg,png).

def get_image_url():
    allowed_extension = ['jpg','jpeg','png']
    file_extension = ''
    while file_extension not in allowed_extension:
        url = get_url()
        file_extension = re.search("([^.]*)$",url).group(1).lower()
    return url

2. Sửa mã của bạn

Tuyệt quá! Bây giờ cho phần cuối cùng, thay thế url = get_url() dòng trong bop() chức năng với url = get_image_url() và mã của bạn sẽ trông như thế này:

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

def get_url():
    contents = requests.get('https://random.dog/woof.json').json()    
    url = contents['url']
    return url

def get_image_url():
    allowed_extension = ['jpg','jpeg','png']
    file_extension = ''
    while file_extension not in allowed_extension:
        url = get_url()
        file_extension = re.search("([^.]*)$",url).group(1).lower()
    return url

def bop(bot, update):
    url = get_image_url()
    chat_id = update.message.chat_id
    bot.send_photo(chat_id=chat_id, photo=url)

def main():
    updater = Updater('YOUR_TOKEN')
    dp = updater.dispatcher
    dp.add_handler(CommandHandler('bop',bop))
    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

Tốt đẹp! Mọi thứ nên chạy hoàn hảo. Bạn cũng có thể kiểm tra tài khoản GitHub của tôi để lấy mã.

Đọc thêm  Python Xóa ký tự khỏi chuỗi – Cách xóa ký tự khỏi chuỗi

Cuối cùng, xin chúc mừng bạn đã hoàn thành hướng dẫn này, ngoài ra bạn hiện có một bot Telegram tuyệt vời.

Vui lòng để lại nhận xét nếu bạn nghĩ rằng có bất kỳ lỗi nào trong mã hoặc cách viết của tôi, bởi vì tôi vẫn đang học và tôi muốn cải thiện.

Xin cảm ơn và chúc bạn tập luyện hiệu quả! 🙂



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status