nonebot_plugin_jmcomic icon indicating copy to clipboard operation
nonebot_plugin_jmcomic copied to clipboard

文件上传失败,报错nonebot.adapters.onebot.v11.exception.ActionFailed:

Open zzydd opened this issue 9 months ago • 4 comments

我的后端是Lagrange.OneBot,前端是NoneBot,现在执行/jm命令后程序成功运行并下载转换了本子。 但是在上传的时候出现了报错:nonebot.adapters.onebot.v11.exception.ActionFailed:

Lagrange.OneBot报了 System.IO.IOException: 文件名、目录名或卷标语法不正确。 : 'E:\QQ-Bot\Lagrange.OneBot\file:\C:\Users\31490\AppData\Local\nonebot2\nonebot_plugin_jmcomic\114514.pdf'.

NoneBot报了nonebot.adapters.onebot.v11.exception.ActionFailed:

下面是完整的日志文件

Lagrange.OneBot.txt NoneBot.txt

zzydd avatar Mar 24 '25 13:03 zzydd

经过检查是nonebot_plugin_jmcomic/init.py中

await bot.upload_group_file(
    group_id=event.group_id,
    file="file:///" + str(jm_data_dir / f"{id}.pdf"),  # noqa
    name=f"{id}.pdf",
)

这一段代码的问题。 可能是Lagrange.OneBot的文件路径传入要求和gocqhttp之类的不一样? 根据官方文档说明,上传群文件接口的参数“file”要求传入本地文件的绝对路径,不需要添加“file:///”前缀。 我将代码修改为下面这样后插件正常运行(删除了“file:///”前缀。)

await bot.upload_group_file(
    group_id=event.group_id,
    file=str(jm_data_dir / f"{id}.pdf"),
    name=f"{id}.pdf",
)

希望作者修正,或者添加后端判断之类的代码。

zzydd avatar Mar 24 '25 14:03 zzydd

我测试的环境是 napcat 和 llob, 不加 file:/// 会报错 json 无法解析, 我之后可以加一个配置项来让用户选择自己使用的客户端, 并根据填写的客户端使用不同的协议

zhulinyv avatar Mar 24 '25 14:03 zhulinyv

我测试的环境是 napcat 和 llob, 不加 file:/// 会报错 json 无法解析, 我之后可以加一个配置项来让用户选择自己使用的客户端, 并根据填写的客户端使用不同的协议

好的,出了踢我一下

zzydd avatar Mar 24 '25 14:03 zzydd

增加了配置项

zhulinyv avatar Mar 25 '25 04:03 zhulinyv