无法使用aiogram发送图片

问题描述 投票:0回答:1

我尝试在 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 似乎不使用代理

所以我有两个问题:

  1. 如何使用代理配置 aiogram 机器人
  2. 有没有其他方式无需代理即可发送图片
python proxy aiogram
1个回答
0
投票

试试这个, 发送图像解决方案:

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())
...
© www.soinside.com 2019 - 2024. All rights reserved.