Closed MWTJC closed 3 months ago
首先是我的运行环境: windows11 python 3.10 自改真寻bot,通过将文件手动放入extensive_plugins的方式加载此插件 nonebot2==2.3.0 nonebot-adapter-onebot==2.2.0 收发器: napcatqq
可能有关:
我试图先在负责存储的bank.json中,解决存储的内容被转义的问题: 经分解调试,认为在word_entry.dump()函数中使用的str(Message)会导致特定符号被转义: 遂换用Message.extract_plain_text()避免此步被转义。
word_entry.dump()
str(Message)
Message.extract_plain_text()
我试图再解决在发送消息时,特殊符号被转义的问题: 经分解调试,认为插件触发转义的路径如下:
Message.template().format()
nonebot.internal.adapter.template._format()
[
]
&
,
最终结论就是v11适配器的str(Message)自带转义惹出来的,查阅文档后,发现Message.template()不一定必须Message.template(Message),还可以Message.template(字符串),正好能规避使用被v11重写的带有转义的str(),测试后发现在我的环境下能解决问题。
Message.template()
Message.template(Message)
Message.template(字符串)
str()
但此PR可能会导致使用CQ码与收发器通信的情景出现问题,我无从测试
发现第二处改动似乎丧失了手搓cq消息的特性,回炉()
师傅,发生什么事儿了
首先是我的运行环境: windows11 python 3.10 自改真寻bot,通过将文件手动放入extensive_plugins的方式加载此插件 nonebot2==2.3.0 nonebot-adapter-onebot==2.2.0 收发器: napcatqq
可能有关:
50 #45 #48
我试图先在负责存储的bank.json中,解决存储的内容被转义的问题: 经分解调试,认为在
word_entry.dump()
函数中使用的str(Message)
会导致特定符号被转义: 遂换用Message.extract_plain_text()
避免此步被转义。我试图再解决在发送消息时,特殊符号被转义的问题: 经分解调试,认为插件触发转义的路径如下:
Message.template().format()
构造一个新消息nonebot.internal.adapter.template._format()
函数中进行处理,但此时又出现了str(Message)
,str(Message)
是onebotv11适配器自己重写的方法,遂进去看[
及]
及&
及,
起作用。最终结论就是v11适配器的
str(Message)
自带转义惹出来的,查阅文档后,发现Message.template()
不一定必须Message.template(Message)
,还可以Message.template(字符串)
,正好能规避使用被v11重写的带有转义的str()
,测试后发现在我的环境下能解决问题。但此PR可能会导致使用CQ码与收发器通信的情景出现问题,我无从测试