Giới thiệu
Đối với các cuộc trò chuyện hấp dẫn, chatbot tự động thực sự có lợi. Trên các nền tảng như Facebook, Google và các nền tảng khác, chúng tôi có thể phát triển chatbot. Trong hướng dẫn này, chúng ta sẽ tìm hiểu về cách chúng ta có thể tạo một chatbot Telegram và sử dụng nó để soạn tin nhắn văn bản với nhiều phản hồi.
Ở đây, chúng tôi tìm hiểu cách chúng tôi có thể nhận được các loại phản hồi khác nhau từ bot, chẳng hạn như:
- bản văn
- Hình ảnh
- Video
- Tài liệu
- Bài nghe
- Poll
- Các nút trả lời nhanh
- Các nút có liên kết
Các bước tạo Telegram Bot
Thực hiện theo các hướng dẫn dưới đây để tạo một chatbot Telegram.
Bước 1: Mở tài khoản điện tín của bạn và gõ “BotFather” trên thanh tìm kiếm.
Bước 2: Nhấp vào “BotFather” và nhấp vào nút “Bắt đầu”.
Bước 3: Nhập “/ newbot”.
Bước 4: Nhập tên bot duy nhất của bạn.
Bước 5: Bây giờ hãy nhập tên người dùng duy nhất cho bot của bạn.
Hãy nhớ: tên người dùng phải kết thúc bằng 'bot'. Ví dụ: 'Tetris_bot' hoặc 'Tetrisbot'.
Bước 6: Sau khi cung cấp một tên người dùng duy nhất, bạn sẽ nhận được một thông báo như bên dưới. nó chứa một mã thông báo để truy cập API HTTP. Giữ mã thông báo của bạn an toàn và lưu trữ nó một cách an toàn.
Bước 7: Tạo ứng dụng bình cho phản hồi webhook.
Trước hết, bạn sẽ cần cài đặt python và flask trên máy tính của mình.
$ pip cài đặt Flask
Dưới đây là mã để chạy ứng dụng bình cơ bản.
từ bình nhập khẩu Bình
ứng dụng = Bình (__ tên__)
@ app.route ('/')
def index ():
trở về " Chào mừng! "
if __name__ == '__main__':
app.run (luồng = True)
Chạy mã này để kiểm tra xem ứng dụng bình có đang chạy chính xác hay không. Khi bạn chạy mã, bạn sẽ nhận được liên kết cho máy chủ như “ http://127.0.0.1:5000/ “Nhấp vào liên kết đó, bạn sẽ được chuyển hướng đến trang web nơi bạn sẽ thấy phản hồi“ Chào mừng! ”
Vào Ngrok và gõ lệnh “ngrok http 5000” sau khi chạy lệnh này, bạn sẽ nhận được các liên kết.
Từ các liên kết Ngrok đó sao chép liên kết HTTPS và dán vào trình duyệt của bạn. Bạn sẽ thấy câu trả lời “Chào mừng!” giống như bước trước.
Bước 9: Thiết lập webhook.
Bây giờ bạn sẽ cần thiết lập webhook cho bot telegram.
Bạn có thể làm điều đó bằng cách chạy liên kết trong trình duyệt của mình.
https://api.telegram.org/bot<Your Bot Token>/setWebhook?url=<URL that you got from Ngrok>
Sau khi chạy liên kết trong trình duyệt web của bạn, bạn sẽ nhận được phản hồi được hiển thị trong hình ảnh dưới đây.
Bước 10: Nhận phản hồi JSON.
Bây giờ chúng ta sẽ cần nhận được phản hồi JSON từ bot telegram cho bất kỳ văn bản nào mà chúng ta viết cho bot.
Bây giờ hãy mở VS Code và thêm mã sau và chạy nó trên cùng một liên kết Ngrok mà bạn đã chạy mã trước đó.
từ bình nhập khẩu Bình
từ yêu cầu nhập khẩu bình
từ phản hồi nhập khẩu bình
yêu cầu nhập khẩu
ứng dụng = Bình (__ tên__)
@ứng dụng.route ('/', method = ['GET', 'POST'])
def index ():
if request.method == 'POST':
msg = request.get_json ()
print (msg)
Trả về phản hồi ('ok', status = 200)
khác:
trở về " Chào mừng! "
if __name__ == '__main__':
app.run (gỡ lỗi = True)
Trong BotFather, nơi bạn lấy mã thông báo cho chatbot Telegram của mình, bạn cũng có thể gửi URL để chuyển hướng đến bot Telegram của mình.
Sau đó nhấp vào Khởi động Bot để bắt đầu trò chuyện với bot. Sau đó, nhập bất kỳ thông báo nào bạn muốn, chẳng hạn như “bot kiểm tra” hoặc bất kỳ thông báo nào bạn muốn.
Sau khi ghi “bot test” vào bot của bạn, bây giờ hãy chuyển đến Vscode, bạn sẽ gửi JSON sau vào thiết bị đầu cuối của mình.
Ở đây chúng ta có thể thấy rằng thông điệp mà chúng ta đã viết cho bot telegram mà chúng ta có thể nhận được ở phần phụ trợ dưới dạng văn bản.
Bước 11: gửi tin nhắn văn bản từ bot.
Chúng tôi sẽ viết mã để nhận phản hồi cho thông báo “hi” từ người dùng và nếu bất kỳ điều gì khác ngoài “hi” được áp dụng thì phản hồi bằng “từ webhook”.
Bạn cũng có thể thêm một tham số bổ sung khi gửi tin nhắn mà bạn có thể làm theo Tài liệu.
từ bình nhập khẩu Bình
từ yêu cầu nhập khẩu bình
từ phản hồi nhập khẩu bình
yêu cầu nhập khẩu
TOKEN = " "
ứng dụng = Bình (__ tên__)
def parse_message (tin nhắn):
print ("message ->", message)
chat_id = message ['message'] ['chat'] ['id']
txt = message ['message'] ['text']
print ("chat_id ->", chat_id)
print ("txt ->", txt)
trả về chat_id, txt
def tel_send_message (chat_id, text):
url = f 'https://api.telegram.org/bot{TOKEN}/sendMessage'
trọng tải = {
'chat_id': chat_id,
'text': văn bản
}
r = request.post (url, json = payload)
r trở lại
@ứng dụng.route ('/', method = ['GET', 'POST'])
def index ():
if request.method == 'POST':
msg = request.get_json ()
chat_id, txt = parse_message (msg)
nếu txt == "xin chào":
tel_send_message (chat_id, "Xin chào !!")
khác:
tel_send_message (chat_id, 'từ webhook')
Trả về phản hồi ('ok', status = 200)
khác:
trở về " Chào mừng! "
if __name__ == '__main__':
app.run (gỡ lỗi = True)
Chúng tôi sẽ nhận được phản hồi bên dưới trong Telegram Bot.
Bước 12: Lấy Hình ảnh.
Bây giờ chúng ta cũng có thể lấy hình ảnh từ bot telegram.
Bằng cách thêm chức năng gửi hình ảnh trong mã.
Để biết thêm thông số, bạn có thể làm theo Tài liệu.
từ bình nhập khẩu Bình
từ yêu cầu nhập khẩu bình
từ phản hồi nhập khẩu bình
yêu cầu nhập khẩu
TOKEN = " "
ứng dụng = Bình (__ tên__)
def tel_parse_message (tin nhắn):
print ("message ->", message)
thử:
chat_id = message ['message'] ['chat'] ['id']
txt = message ['message'] ['text']
print ("chat_id ->", chat_id)
print ("txt ->", txt)
trả về chat_id, txt
ngoại trừ:
print ("KHÔNG tìm thấy văn bản - >>")
def tel_send_message (chat_id, text):
url = f 'https://api.telegram.org/bot{TOKEN}/sendMessage'
trọng tải = {
'chat_id': chat_id,
'text': văn bản
}
r = request.post (url, json = payload)
r trở lại
def tel_send_image (chat_id):
url = f 'https://api.telegram.org/bot{TOKEN}/sendPhoto'
trọng tải = {
'chat_id': chat_id,
'tấm ảnh': "https://raw.githubusercontent.com/fbsamples/original-coast-clothing/main/public/styles/male-work.jpg",
'caption': "Đây là hình ảnh mẫu"
}
r = request.post (url, json = payload)
r trở lại
@ app.route ('/', method = ['GET', 'POST'])
def index ():
if request.method == 'POST':
msg = request.get_json ()
thử:
chat_id, txt = tel_parse_message (msg)
nếu txt == "xin chào":
tel_send_message (chat_id, "Hello, world!")
elif txt == "hình ảnh":
tel_send_image (chat_id)
khác:
tel_send_message (chat_id, 'từ webhook')
ngoại trừ:
print ("từ chỉ mục ->")
Trả về phản hồi ('ok', status = 200)
khác:
trở về " Chào mừng! "
if __name__ == '__main__':
app.run (luồng = True)
Đây là phản hồi mà bạn sẽ nhận được từ bức điện.
Bước 13: Nhận âm thanh.
Cách tương tự, bạn có thể gửi âm thanh đến bức điện. Để biết thêm thông số, bạn có thể làm theo Tài liệu.
def tel_send_audio (chat_id):
url = f 'https://api.telegram.org/bot{TOKEN}/sendAudio'
trọng tải = {
'chat_id': chat_id,
"âm thanh": "http://www.largesound.com/ashborytour/sound/brobob.mp3",
}
r = request.post (url, json = payload)
r trở lại
Thêm mã này vào chức năng chỉ mục của bạn.
elif txt == "âm thanh":
tel_send_audio (chat_id)
Bước 14: Tải Video.
Thêm mã để đưa video vào điện tín. Để thêm các thông số khác, bạn có thể làm theo Tài liệu.
def tel_send_video (chat_id):
url = f 'https://api.telegram.org/bot{TOKEN}/sendVideo'
trọng tải = {
'chat_id': chat_id,
"video": "https://www.appsloveworld.com/wp-content/uploads/2018/10/640.mp4",
}
r = request.post (url, json = payload)
trở lại
Thêm mã này vào chức năng chỉ mục của bạn.
elif txt == "video":
tel_send_video (chat_id)
Bạn sẽ nhận được phản hồi sau trong bức điện như thế này.
Bước 15: Lấy tệp.
Thêm mã để đưa Tệp vào bức điện. Để thêm các thông số khác, bạn có thể làm theo Tài liệu.
def tel_send_document (chat_id):
url = f 'https://api.telegram.org/bot{TOKEN}/sendDocument'
trọng tải = {
'chat_id': chat_id,
"tài liệu": "http://www.africau.edu/images/default/sample.pdf",
}
r = request.post (url, json = payload)
r trở lại
Thêm mã này vào chức năng chỉ mục của bạn.
elif txt == "tệp":
tel_send_document (chat_id)
Bạn sẽ nhận được phản hồi sau trong bức điện như thế này.
Bước 16: Nhận cuộc thăm dò ý kiến.
Thêm mã để lấy Phiếu thăm dò ý kiến vào điện tín. Để thêm các thông số khác, bạn có thể làm theo Tài liệu.
def tel_send_poll (chat_id):
url = f 'https://api.telegram.org/bot{TOKEN}/sendPoll'
trọng tải = {
'chat_id': chat_id,
"question": "Mặt trời mọc theo hướng nào?",
"options": json.dumps (["North", "South", "East", "West"]),
"is_anonymous": Sai,
"type": "quiz",
"đúng_option_id": 2
}
r = request.post (url, json = payload)
r trở lại
Thêm mã này vào chức năng chỉ mục của bạn.
elif txt == "thăm dò":
tel_send_poll (chat_id)
Bạn sẽ nhận được phản hồi sau trong bức điện như thế này.
Bước 17: Nút Nhận.
Thêm mã để nhận Nút vào bot điện tín.
def tel_send_button (chat_id):
url = f 'https://api.telegram.org/bot{TOKEN}/sendMessage'
trọng tải = {
'chat_id': chat_id,
'text': "Đây là gì?",
'reply_markup': {'keyboard': [[{'text': 'supa'}, {'text': 'mario'}]]}
}
r = request.post (url, json = payload)
r trở lại
Thêm mã này vào chức năng chỉ mục của bạn.
elif txt == "nút":
tel_send_button (chat_id)
Bạn sẽ nhận được phản hồi sau trong bức điện như thế này.
Bước 18: Nhận Nút Nội tuyến.
Thêm mã để có được Nút nội tuyến vào điện tín.
def tel_send_inlinebutton (chat_id):
url = f 'https://api.telegram.org/bot{TOKEN}/sendMessage'
trọng tải = {
'chat_id': chat_id,
'text': "Đây là gì?",
'reply_markup': {
"inline_keyboard": [[
{
"text": "A",
"callback_data": "ic_A"
},
{
"text": "B",
"callback_data": "ic_B"
}]
]
}
}
r = request.post (url, json = payload)
r trở lại
Thêm mã này vào chức năng chỉ mục của bạn.
elif txt == "nội tuyến":
tel_send_inlinebutton (chat_id)
Bạn sẽ nhận được phản hồi sau trong bức điện của mình.
Bước 19: Lấy URL nút nội tuyến.
Thêm mã để có được Nút nội tuyến vào điện tín.
def tel_send_inlineurl (chat_id):
url = f 'https://api.telegram.org/bot{TOKEN}/sendMessage'
trọng tải = {
'chat_id': chat_id,
'text': "Bạn muốn truy cập liên kết nào?",
'reply_markup': {
"inline_keyboard": [
[
{"text": "google", "url": "http://www.google.com/"},
{"text": "youtube", "url": "http://www.youtube.com/"}
]
]
}
}
r = request.post (url, json = payload)
r trở lại
Thêm mã này vào chức năng chỉ mục của bạn.
elif txt == "inlineurl":
tel_send_inlineurl (chat_id)
Bạn sẽ nhận được phản hồi sau trong bức điện như thế này.
Để biết thêm thông tin, bạn có thể theo dõi Tài liệu Telegram Bot Api.
Bước 20: Chia sẻ hình ảnh với bot và nhận nó ở phía máy chủ.
Trước hết, chúng tôi sẽ chia sẻ hình ảnh với bot và xem loại JSON chúng tôi đang nhận được ở phía máy chủ của chúng tôi.
Như chúng ta có thể thấy rằng chúng tôi đang nhận được một id tệp cho tệp mà chúng tôi đang gửi tới bot telegram. Bây giờ, chúng ta sẽ lấy id tệp đó cho hình ảnh.
def tel_parse_get_message (tin nhắn):
print ("message ->", message)
thử:
g_chat_id = message ['message'] ['chat'] ['id']
g_file_id = message ['message'] ['photo'] [0] ['file_id']
print ("g_chat_id ->", g_chat_id)
print ("g_image_id ->", g_file_id)
trả về g_file_id
ngoại trừ:
print ("KHÔNG tìm thấy tệp - >>")
Bây giờ bằng cách gọi hàm đã cho trong hàm chỉ mục, chúng ta có thể lấy id trò chuyện và id tệp được in.
file_id = tel_parse_get_message (msg)
Chúng tôi sẽ nhận được phản hồi bên dưới.
Bây giờ chúng ta sẽ sử dụng id tệp mà chúng ta nhận được cho hình ảnh để lấy đường dẫn tệp cho hình ảnh được lưu trữ trên máy chủ telegram.
Đối với điều đó, chúng tôi sẽ phải chuyển hướng đến một URL khác và chuyển id tệp của chúng tôi cho nó mà chúng tôi đã tạo một hàm.
def tel_upload_file (file_id):
url = f 'https://api.telegram.org/bot{TOKEN}/getFile?file_id={file_id}'
a = request.post (url)
json_resp = json.loads (a.content)
print ("a ->", a)
print ("json_resp ->", json_resp)
file_pathh = json_resp ['result'] ['file_path']
print ("file_path ->", file_pathh)
url_1 = f 'https://api.telegram.org/file/bot{TOKEN}/{file_pathh}'
b = request.get (url_1)
file_content = b.content
với open (file_pathh, "wb") là f:
f.write (file_content)
Chúng ta cũng cần gọi hàm mà chúng ta đã tạo.
file_id = tel_parse_get_message (msg)
tel_upload_file (file_id)
Ở đây, trong hàm đầu tiên, chúng tôi đang cố gắng lấy đường dẫn tệp của chúng tôi cho hình ảnh mà chúng tôi đã chia sẻ từ JSON.
Sau khi nhận được đường dẫn tệp, chúng tôi đang cố gắng lấy tệp từ máy chủ telegram bằng cách chuyển hướng đường dẫn tệp đến “url_1”.
Từ “url_1”, chúng tôi đang cố gắng lưu tệp vào máy tính của mình.
Ở phía máy chủ, bạn sẽ thấy bản in và JSON như thế này.
Đây là thư mục mà chúng tôi đang viết mã của mình. Chúng ta cần tạo một thư mục có tên là “ ảnh “Để chúng tôi có thể nhận được hình ảnh mà chúng tôi gửi đến bot trực tiếp trong hệ thống của chúng tôi.
Bước 21: Bây giờ chúng tôi sẽ cố gắng thêm video vào bot telegram.
Khi chúng tôi gửi video tới bot thì chúng tôi sẽ nhận được các loại JSON khác nhau. Vì vậy, chúng ta cần giải nén id tệp từ nó.
Nó có thể được thực hiện với sự trợ giúp của đoạn mã sau.
def tel_parse_get_message (tin nhắn):
print ("message ->", message)
print ("1")
thử:
g_chat_id = message ['message'] ['chat'] ['id']
g_file_id = message ['message'] ['photo'] [0] ['file_id']
print ("g_chat_id ->", g_chat_id)
print ("g_image_id ->", g_file_id)
trả về g_file_id
ngoại trừ:
thử:
g_chat_id = message ['message'] ['chat'] ['id']
g_file_id = message ['message'] ['video'] ['file_id']
print ("g_chat_id ->", g_chat_id)
print ("g_video_id ->", g_file_id)
trả về g_file_id
ngoại trừ:
print ("KHÔNG tìm thấy tệp - >>")
Bây giờ cũng ở đây theo cách tương tự, chúng tôi sẽ trích xuất id tệp và chuyển nó đến hàm và lấy đường dẫn tệp và lưu trữ video trên phía máy chủ của chúng tôi.
Để lưu trữ video, chúng tôi sẽ cần tạo tên thư mục “ video “Trong đó chúng tôi có thể lưu trữ video.
Bước 22: Bây giờ chúng ta có thể làm theo cách tương tự đối với âm thanh và tệp.
Để lưu trữ âm thanh, chúng tôi cần tạo một thư mục có tên “ Âm nhạc ".
Để lưu trữ các tài liệu, chúng tôi cần tạo một thư mục có tên là “ tài liệu ".
Ở đây theo cách tương tự, chúng ta cần giải nén id tệp và chuyển nó vào hàm file_upload.
def tel_parse_get_message (tin nhắn):
print ("message ->", message)
thử:
g_chat_id = message ['message'] ['chat'] ['id']
g_file_id = message ['message'] ['photo'] [0] ['file_id']
print ("g_chat_id ->", g_chat_id)
print ("g_image_id ->", g_file_id)
trả về g_file_id
ngoại trừ:
thử:
g_chat_id = message ['message'] ['chat'] ['id']
g_file_id = message ['message'] ['video'] ['file_id']
print ("g_chat_id ->", g_chat_id)
print ("g_video_id ->", g_file_id)
trả về g_file_id
ngoại trừ:
thử:
g_chat_id = message ['message'] ['chat'] ['id']
g_file_id = message ['message'] ['audio'] ['file_id']
print ("g_chat_id ->", g_chat_id)
print ("g_audio_id ->", g_file_id)
trả về g_file_id
ngoại trừ:
thử:
g_chat_id = message ['message'] ['chat'] ['id']
g_file_id = message ['message'] ['document'] ['file_id']
print ("g_chat_id ->", g_chat_id)
print ("g_file_id ->", g_file_id)
trả về g_file_id
ngoại trừ:
print ("KHÔNG tìm thấy tệp - >>")
Bước 23: Vì chúng tôi đã cố gắng lưu trữ hình ảnh, video, âm thanh và tệp ở phía máy chủ của mình và cũng thực hiện mã để nhận các loại phản hồi khác nhau thông qua bot telegram.
Bạn cũng có thể tham khảo mã đầy đủ trên của chúng tôi Kho lưu trữ Github và kiểm tra nó để nhận các phản hồi khác nhau thông qua bot telegram và gửi tệp đến phía máy chủ.
Chúng tôi đã học cách có thể nhận được phản hồi văn bản từ bot và cả các loại tệp khác nhau. Sau đó, chúng tôi cũng đã thấy cách chúng tôi có thể lấy các tệp mà chúng tôi gửi đến bot ở phía máy chủ của chúng tôi.
Giờ đây, bạn có thể để bot của mình hoạt động theo cách bạn muốn - tiếp tục và tạo ra điều lớn lao tiếp theo!
Hy vọng bạn có niềm vui khi xây dựng bot Telegram đầu tiên của mình. Nếu bạn gặp bất kỳ khó khăn nào thì hãy cho chúng tôi biết trong phần bình luận.
Được xuất bản ban đầu tại Create Telegram Bot Sử dụng Hướng dẫn sử dụng Python với các ví dụ vào ngày 11 tháng 2022 năm XNUMX.
Tạo Telegram Bot bằng Hướng dẫn Python với các ví dụ ban đầu được xuất bản trong Trò chuyện cuộc sống trên Medium, nơi mọi người đang tiếp tục cuộc trò chuyện bằng cách nhấn mạnh và trả lời câu chuyện này.
- Coinsmart. Sàn giao dịch Bitcoin và tiền điện tử tốt nhất Châu Âu.
- Platoblockchain. Web3 Metaverse Intelligence. Khuếch đại kiến thức. TRUY CẬP MIỄN PHÍ.
- CryptoHawk. Radar Altcoin. Dùng thử miễn phí.
- Source: https://chatbotslife.com/create-telegram-bot-using-python-tutorial-with-examples-bc5d76351a24?source=rss—-a49517e4c30b—4
- "
- 11
- 2022
- Giới thiệu
- truy cập
- Tài khoản
- Tất cả
- Một
- api
- ứng dụng
- Tháng Tư
- âm thanh
- Tự động
- Bot
- trình duyệt
- Xây dựng
- cuộc gọi
- Có thể có được
- mã
- chứa
- nội dung
- Conversation
- cuộc hội thoại
- tạo
- tạo ra
- Tạo
- phát triển
- khác nhau
- trực tiếp
- tài liệu
- Trừ
- Đối mặt
- Tên
- theo
- tiếp theo
- tìm thấy
- Full
- vui vẻ
- chức năng
- nhận được
- Cho
- giúp đỡ
- tại đây
- Độ đáng tin của
- HTTPS
- hình ảnh
- chỉ số
- thông tin
- cài đặt, dựng lên
- IT
- LEARN
- học
- LINK
- liên kết
- trung bình
- chi tiết
- mở
- Nền tảng khác
- người
- Nền tảng
- bỏ phiếu
- Chuẩn bị
- nhận
- chuyển hướng
- yêu cầu
- yêu cầu
- phản ứng
- trở lại
- chạy
- chạy
- Tìm kiếm
- an toàn
- định
- thiết lập
- Chia sẻ
- chia sẻ
- tương tự
- So
- Bắt đầu
- hàng
- hệ thống
- Telegram
- Thiết bị đầu cuối
- thử nghiệm
- Thông qua
- mã thông báo
- độc đáo
- us
- sử dụng
- khác nhau
- Video
- web
- trình duyệt web
- Điều gì
- Là gì
- liệu
- Công việc
- sẽ
- viết
- youtube