NapNeko / NapCatQQ

现代化的基于 NTQQ 的 Bot 协议端实现
https://napneko.github.io
Other
2.29k stars 160 forks source link

[BUG] 调用get_file下载文件后会导致napcat崩溃以及下载部分文件会报错 #425

Closed LiLuo-B closed 2 weeks ago

LiLuo-B commented 2 weeks ago

系统版本

Debian GNU/Linux 12 (bookworm)

QQNT 版本

9.9.15-28418

NapCat 版本

V2.6.23

OneBot 客户端

NoneBot 2.3.3

发生了什么?

NoneBot调用get_file下载文件,下载完成后过几秒napcat自动崩溃,文件太小的似乎没影响,有个几十兆的就开始崩溃了,然后下部分文件会直接下载失败

如何复现

1.调用 get_file api下载文件 2.napcat崩溃

期望的结果?

正常下载文件并不会崩溃,或者提供方法能够用napcat下载文件,目前我只知道使用file id来下载文件,拿不到url

NapCat 运行日志

下载文件后的崩溃日志
2024-10-05 01:01:44 [INFO] 千秋理子(447027034) | 接收 <- 群聊 [bot test(892823321)] [烛华(474115040)] [回复消息 [烛华(474115040)] [文件 l4d2_furryland_31902_v1_1.zip]] 下载 
2024-10-05 01:01:44 [INFO] 千秋理子(447027034) | 发送 -> 群聊 [bot test(892823321)] [千秋理子(447027034)] 下载 
2024-10-05 01:01:44 [INFO] 千秋理子(447027034) | 发送 -> 群聊 [bot test(892823321)] [千秋理子(447027034)] 获取文件成功,文件名l4d2_furryland_31902_v1_1.zip 大小290 MB 
[BuglyManager.cpp][fatalHandler][165]_fatal_handler signo:  13
[BuglyManager.cpp][printBacktrace][121]backtrace n_ptrs: 5
[BuglyManager.cpp][printBacktrace][126]backtrace_symbols ret: 0x376000bd2c00
[BuglyManager.cpp][printBacktrace][130]++++++++ FATAL ERROR(signal: 13) +++++++
[BuglyManager.cpp][printBacktrace][133]+++ trace: /lib/x86_64-linux-gnu/libc.so.6(+0x3c050) [0x7f1f90685050]
[BuglyManager.cpp][printBacktrace][133]+++ trace: /lib/x86_64-linux-gnu/libc.so.6(__write+0x4f) [0x7f1f9074127f]
[BuglyManager.cpp][printBacktrace][133]+++ trace: /opt/QQ/qq --no-sandbox -q 447027034(+0x23afb1e) [0x55ea7c7fdb1e]
[BuglyManager.cpp][printBacktrace][136]+++++++++++++++++++++++++++

下载文件报错时的日志
2024-10-05 01:04:51 [INFO] 千秋理子(447027034) | 接收 <- 群聊 [有驴头的原神群(849127468)] [烛华(474115040)] [回复消息 [烛华(474115040)] [文件 a21.7z.003]] 下载 
2024-10-05 01:04:51 [INFO] 千秋理子(447027034) | 发送 -> 群聊 [有驴头的原神群(849127468)] [千秋理子(447027034)] 获取文件成功,文件名a21.7z.003 大小709 MB 
2024-10-05 01:04:52 [ERROR] 千秋理子(447027034) | 发生错误 Error: 文件下载失败. RangeError: Invalid string length
    at GetFile._handle (file:///opt/QQ/resources/app/app_launcher/napcat/napcat.mjs:31480:17)
    at async GetFile.websocketHandle (file:///opt/QQ/resources/app/app_launcher/napcat/napcat.mjs:30626:23)
    at async OB11ActiveWebSocketAdapter.handleMessage (file:///opt/QQ/resources/app/app_launcher/napcat/napcat.mjs:12852:21)

OneBot 客户端运行日志

下载文件后的崩溃日志
10-05 01:01:44 [DEBUG] nonebot | OneBot V11 | Calling API get_msg
10-05 01:01:44 [SUCCESS] nonebot | OneBot V11 447027034 | [message.group.normal]: Message 1835281057 from 474115040@[群:892823321] '[reply:id=1071632139]下载'
10-05 01:01:44 [DEBUG] nonebot | Running PreProcessors...
10-05 01:01:44 [DEBUG] nonebot | Checking for matchers in priority 1...
10-05 01:01:44 [INFO] nonebot | Event will be handled by Matcher(type='message', module=src.nonebot_plugin_plus_one.handler, lineno=7)
10-05 01:01:44 [DEBUG] nonebot | Running Matcher(type='message', module=src.nonebot_plugin_plus_one.handler, lineno=7)
10-05 01:01:44 [DEBUG] nonebot | Running handler Dependent(call=plush_handler)
10-05 01:01:44 [DEBUG] nonebot | OneBot V11 | Calling API send_msg
10-05 01:01:44 [INFO] nonebot | Event will be handled by Matcher(type='message', module=src.nonebot_plugin_file_download_agent.__main__, lineno=7)
10-05 01:01:44 [DEBUG] nonebot | Running Matcher(type='message', module=src.nonebot_plugin_file_download_agent.__main__, lineno=7)
10-05 01:01:44 [DEBUG] nonebot | Running handler Dependent(call=_)
10-05 01:01:44 [DEBUG] nonebot | OneBot V11 | Calling API send_msg
10-05 01:01:44 [INFO] nonebot | Matcher(type='message', module=src.nonebot_plugin_plus_one.handler, lineno=7) running complete
10-05 01:01:44 [DEBUG] nonebot | OneBot V11 | Calling API get_file
10-05 01:01:56 [WARNING] nonebot | OneBot V11 | WebSocket for Bot 447027034 closed by peer
10-05 01:01:56 [INFO] websockets | connection closed

下载文件报错时的日志
10-05 01:04:51 [DEBUG] nonebot | OneBot V11 | Calling API get_msg
10-05 01:04:51 [SUCCESS] nonebot | OneBot V11 447027034 | [message.group.normal]: Message 650492992 from 474115040@[群:849127468] '[reply:id=1554896101]下载'
10-05 01:04:51 [DEBUG] nonebot | Running PreProcessors...
10-05 01:04:51 [DEBUG] nonebot | Checking for matchers in priority 1...
10-05 01:04:51 [INFO] nonebot | Event will be handled by Matcher(type='message', module=src.nonebot_plugin_plus_one.handler, lineno=7)
10-05 01:04:51 [DEBUG] nonebot | Running Matcher(type='message', module=src.nonebot_plugin_plus_one.handler, lineno=7)
10-05 01:04:51 [DEBUG] nonebot | Running handler Dependent(call=plush_handler)
10-05 01:04:51 [INFO] nonebot | Matcher(type='message', module=src.nonebot_plugin_plus_one.handler, lineno=7) running complete
10-05 01:04:51 [INFO] nonebot | Event will be handled by Matcher(type='message', module=src.nonebot_plugin_file_download_agent.__main__, lineno=7)
10-05 01:04:51 [DEBUG] nonebot | Running Matcher(type='message', module=src.nonebot_plugin_file_download_agent.__main__, lineno=7)
10-05 01:04:51 [DEBUG] nonebot | Running handler Dependent(call=_)
10-05 01:04:51 [DEBUG] nonebot | OneBot V11 | Calling API send_msg
10-05 01:04:51 [DEBUG] nonebot | OneBot V11 | Calling API get_file
10-05 01:04:52 [INFO] nonebot | Matcher(type='message', module=src.nonebot_plugin_file_download_agent.__main__, lineno=7) running complete
10-05 01:04:52 [ERROR] nonebot | Running Matcher(type='message', module=src.nonebot_plugin_file_download_agent.__main__, lineno=7) failed.
Traceback (most recent call last):
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/bot.py", line 29, in <module>
    nonebot.run()
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/__init__.py", line 335, in run
    get_driver().run(*args, **kwargs)
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/drivers/fastapi.py", line 186, in run
    uvicorn.run(
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/uvicorn/main.py", line 577, in run
    server.run()
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/uvicorn/server.py", line 65, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/message.py", line 476, in check_and_run_matcher
    await _run_matcher(
> File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/message.py", line 428, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/internal/matcher/matcher.py", line 850, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/internal/matcher/matcher.py", line 825, in simple_run
    await handler(
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/dependencies/__init__.py", line 94, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/src/nonebot_plugin_file_download_agent/__main__.py", line 19, in _
    result = await bot.call_api("get_file", file_id=file_info.file_id)
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/internal/adapter/bot.py", line 122, in call_api
    raise exception
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/internal/adapter/bot.py", line 97, in call_api
    result = await self.adapter._call_api(self, api, **data)
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/adapters/onebot/v11/adapter.py", line 147, in _call_api
    return handle_api_result(await self._result_store.fetch(seq, timeout))
  File "/home/cherries/Server/Bot/NoneBot/Chiaki-Riko/.venv/lib/python3.11/site-packages/nonebot/adapters/onebot/v11/utils.py", line 58, in handle_api_result
    raise ActionFailed(**result)
nonebot.adapters.onebot.v11.exception.ActionFailed: ActionFailed(status='failed', retcode=1200, data=None, message='Error: 文件下载失败. RangeError: Invalid string length\n    at GetFile._handle (file:///opt/QQ/resources/app/app_launcher/napcat/napcat.mjs:31480:17)\n    at async GetFile.websocketHandle (file:///opt/QQ/resources/app/app_launcher/napcat/napcat.mjs:30626:23)\n    at async OB11ActiveWebSocketAdapter.handleMessage (file:///opt/QQ/resources/app/app_launcher/napcat/napcat.mjs:12852:21)', wording='Error: 文件下载失败. RangeError: Invalid string length\n    at GetFile._handle (file:///opt/QQ/resources/app/app_launcher/napcat/napcat.mjs:31480:17)\n    at async GetFile.websocketHandle (file:///opt/QQ/resources/app/app_launcher/napcat/napcat.mjs:30626:23)\n    at async OB11ActiveWebSocketAdapter.handleMessage (file:///opt/QQ/resources/app/app_launcher/napcat/napcat.mjs:12852:21)', echo='87')
MliKiowa commented 2 weeks ago

文件太大了 崩掉了ws吧

LiLuo-B commented 2 weeks ago

换http了,超过2g的还是会报错,大佬这个能修改吗,后台看是下完了的 image image

MliKiowa commented 2 weeks ago

那你不太好修

LiLuo-B commented 2 weeks ago

行吧,不过2g大部分情况都够用了