send_photo方法不允许从本地api发送图片给用户
The send_photo method does not allow sending a picture from the local api to the user
在使用send_photo()方法时出现了这样的问题,也许有人知道一个简洁的解决方案。
有一个存储新闻的本地api,它有一个带有图像url的字段。
使用 get 请求获取此数据没有任何问题,但将图片的 url 传递给 send_photo 方法我的机器人挂起。
我得出的结论是send_photo通过telegram服务器url搜索图片,因此在网上找不到本地api的图片。
如何正确纠正?
有一个想法是从 API 下载图片到一个单独的文件夹,然后从那里传输到 send_photo 方法,然后从存储中删除它们,但在我看来有一个更简单的解决方案。
另外,我还不知道url如何在python中下载图片。这种方法也会出现这个问题。
async def get_news(message : types.Message):
try:
if message.text.lower() == 'news':
r = requests.get("http://127.0.0.1:8000/api/news")
data = r.json()
storageURL = "http://127.0.0.1:8000/storage/"
photoURL = ""
i = 0
while i < len(data):
photoURL = storageURL + data[i]["preview"]
await bot.send_photo(
chat_id=message.chat.id,
photo=photoURL,
caption=data[i]["title"]
)
i += 1
except Exception as ex:
print(ex)
我通过下载和删除图片终于解决了问题。
也许我的方式并不漂亮,但它有效。
我希望它对某人有用。
from aiogram.types.input_file import InputFile
import os
async def get_news(message : types.Message):
try:
if message.text.lower() == 'news':
r = requests.get("http://127.0.0.1:8000/api/news")
data = r.json()
storageURL = "http://127.0.0.1:8000/storage/"
i = 0
while i < len(data):
photoURL = storageURL + data[i]["preview"]
p = requests.get(photoURL)
newsId = data[i]["id"]
out = open(f"{newsId}.jpg", "wb")
out.write(p.content)
out.close()
photo = InputFile(f"{newsId}.jpg")
await bot.send_photo(
chat_id=message.chat.id,
photo=photo,
caption=data[i]["title"]
)
os.remove(f"{newsId}.jpg")
i += 1
except Exception as ex:
print(ex)
在使用send_photo()方法时出现了这样的问题,也许有人知道一个简洁的解决方案。
有一个存储新闻的本地api,它有一个带有图像url的字段。
使用 get 请求获取此数据没有任何问题,但将图片的 url 传递给 send_photo 方法我的机器人挂起。
我得出的结论是send_photo通过telegram服务器url搜索图片,因此在网上找不到本地api的图片。
如何正确纠正?
有一个想法是从 API 下载图片到一个单独的文件夹,然后从那里传输到 send_photo 方法,然后从存储中删除它们,但在我看来有一个更简单的解决方案。
另外,我还不知道url如何在python中下载图片。这种方法也会出现这个问题。
async def get_news(message : types.Message):
try:
if message.text.lower() == 'news':
r = requests.get("http://127.0.0.1:8000/api/news")
data = r.json()
storageURL = "http://127.0.0.1:8000/storage/"
photoURL = ""
i = 0
while i < len(data):
photoURL = storageURL + data[i]["preview"]
await bot.send_photo(
chat_id=message.chat.id,
photo=photoURL,
caption=data[i]["title"]
)
i += 1
except Exception as ex:
print(ex)
我通过下载和删除图片终于解决了问题。 也许我的方式并不漂亮,但它有效。 我希望它对某人有用。
from aiogram.types.input_file import InputFile
import os
async def get_news(message : types.Message):
try:
if message.text.lower() == 'news':
r = requests.get("http://127.0.0.1:8000/api/news")
data = r.json()
storageURL = "http://127.0.0.1:8000/storage/"
i = 0
while i < len(data):
photoURL = storageURL + data[i]["preview"]
p = requests.get(photoURL)
newsId = data[i]["id"]
out = open(f"{newsId}.jpg", "wb")
out.write(p.content)
out.close()
photo = InputFile(f"{newsId}.jpg")
await bot.send_photo(
chat_id=message.chat.id,
photo=photo,
caption=data[i]["title"]
)
os.remove(f"{newsId}.jpg")
i += 1
except Exception as ex:
print(ex)