Tôi đã tạo một bot điện tín gửi ảnh theo yêu cầu từ URL bằng cách sử dụng trình bao bọc pyTelegramBotAPI. Vì vậy, tôi đã thử đặt một URL ảnh giả và kiểm tra xem bot có thể gửi hình ảnh nhưng không thành công với lỗi sau.Gửi ảnh từ URL bằng Telegram Bot
telebot.apihelper.ApiException: sendPhoto failed. Returned result: <Response [400]>
Tôi không chắc chắn những gì lỗi là, nhưng làm thế nào tôi có thể gửi ảnh từ URL sử dụng Telegram Bot API chính xác? Đây là mã của tôi
import telebot
import time
import urllib
from io import BytesIO
from PIL import Image
TOKEN = '<token here>'
url='http://scontent-b.cdninstagram.com/hphotos-xfa1/t51.2885-15/e15/10919672_584633251672188_179950734_n.jpg'
def listener(*messages):
for m in messages:
chatid = m.chat.id
if m.content_type == 'text':
text = m.text
name = m.fromUser.first_name
msgid = m.message_id
if(text.startswith('/photo')):
img = BytesIO(urllib.request.urlopen(url).read())
tb.send_chat_action(chatid, 'upload_photo')
tb.send_photo(chatid, img, reply_to_message_id=msgid)
tb = telebot.TeleBot(TOKEN)
tb.get_update() # cache exist message
tb.set_update_listener(listener) #register listener
tb.polling()
while True:
time.sleep(1)
Tôi không chắc mình có bỏ sót điều gì không.
Vì vậy, chúng ta cần phải tải về toàn bộ tập tin vào thư mục địa phương trước khi tải lên để Telegram sau khi tất cả. Có cách nào để giảm kích thước hình ảnh trong khi tải xuống, khi tôi chạy tập lệnh hoàn toàn trên máy của mình không? – Zerocchi
Tôi không biết chính xác những gì bạn đang cố gắng thực hiện, nhưng tôi chắc chắn có nhiều cách để nén hình ảnh bằng python, chỉ không _while_ tải xuống. Và đảm bảo xóa hình ảnh khỏi máy tính của bạn khi bạn không cần tệp nữa. – Pete
Mã của tôi ở đây - Tôi tin rằng tôi mới dùng python - không yêu cầu tải hình ảnh vào thư mục cục bộ: http://stackoverflow.com/a/32441772/1097372 – Iyas