我尝试在 aiogram 中发送图片,但出现错误
Failed to send bytes into the underlying connection Connection
为了修复它,我尝试使用代理,但仍然有相同的错误
我运行这段代码
API_TOKEN = 'token'
session = AiohttpSession(proxy='https://<user>:<pass>@<proxy>:<port>')
bot = Bot(token=API_TOKEN, session=session)
dp = Dispatcher(storage=MemoryStorage())
def make_picture():
# Твоя логика обработки сообщения
# Например, создаем картинку (здесь просто как пример черного изображения)
img = BytesIO()
img.name = 'result.png'
# Генерируем картинку как черное изображение
from PIL import Image
image = Image.new('RGB', (200, 200), color='black')
image.save(img, 'PNG')
img.seek(0)
return img
router = Router()
@router.message(Command("start"))
async def start_handler(msg: Message):
await msg.answer("Hi!")
@router.message()
async def message_handler(message: Message):
img = make_picture()
await message.answer_photo(BufferedInputFile(file ='test',filename='result.png'))
async def main():
dp.include_router(router)
await bot.delete_webhook(drop_pending_updates=True)
await dp.start_polling(bot)
if __name__ == "__main__":
await main()
当我在电报中按下启动命令时效果很好 但是当我写任何消息并且机器人应该发送图片时我会出错
aiogram.exceptions.TelegramNetworkError: HTTP Client says - ClientConnectionError: Failed to send bytes into the underlying connection Connection<ConnectionKey(host='api.telegram.org', port=443, is_ssl=True, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=7572682526898458434)>
Bot 似乎不使用代理
所以我有两个问题:
试试这个, 发送图像解决方案:
img = make_picture()
await message.answer_photo(BufferedInputFile(file=img, filename='result.png'))
解释: 在
make_picture()
函数中,您创建 BytesIO 格式的图像, 但在 message_handler 中,您将字符串“test”传递给文件参数,尽管您应该传递 img 对象。您需要从 make_picture() 函数传递创建的图像
关于代理问题,我不知道。 尝试在没有会话的情况下运行机器人,例如:
API_TOKEN = 'token'
#session = AiohttpSession(proxy='https://<user>:<pass>@<proxy>:<port>')
bot = Bot(token=API_TOKEN) # no session
dp = Dispatcher(storage=MemoryStorage())
...