lgc-NB2Dev / YetAnotherPicSearch

Yet another picture search plugin for nonebot2
GNU General Public License v3.0
101 stars 9 forks source link

私聊搜图无法正确发出结果且无报错反馈 #52

Closed TheValkyrja closed 1 year ago

TheValkyrja commented 1 year ago

YetAnotherPicSearch 、 go-cqhttp 、 nonebot 、 Python 版本及操作系统

1.7.4, go-cqhttp 1.0.0-rc3 nonebot v2.0.0rc1 python 3.10 ubuntu

列出安装的 Python 包

No response

如何复现

正常私聊发送图片搜图

期望行为

正常搜图并返回合并转发

实际行为

后台显示正常完成整个matcher,但私聊内没有发出任何消息,go-cqhttp端没有报错信息。 与chatrecorder共存时会报以下错误:

12-02 13:59:20 [ERROR] nonebot | Error when running CalledAPI hook. Running cancelled! Traceback (most recent call last):

File "/usr/local/lib/python3.10/dist-packages/YetAnotherPicSearch/__init__.py", line 201, in send_msg await bot.send_msg( > File "/usr/local/lib/python3.10/dist-packages/nonebot/internal/adapter/bot.py", line 103, in call_api await asyncio.gather(*coros) File "/usr/local/lib/python3.10/dist-packages/nonebot_plugin_chatrecorder/__init__.py", line 58, in record_send_msg or (api == "send_msg" and data["message_type"] == "group") KeyError: 'message_type'

移除chatrecorder及依赖组件之后,不再有任何报错信息,但是依然无法正常发出消息,且go-cqhttp方面也无任何反馈。 账号已测试可以正常给别人发送相关图片未被风控。

NekoAria commented 1 year ago

看样子和 #38 一样,是由 nonebot-plugin-chatrecorder 引起的,可是他那个能正常发送搜图结果,不太清楚你这个是怎么回事。

你可以去给这个插件提个 issue ,让作者把那个 or (api == "send_msg" and data["message_type"] == "group") 改成 or (api == "send_msg" and data.get("message_type") == "group")

你要是方便的话,可以先直接改你本地这个插件的源文件。

TheValkyrja commented 1 year ago

看样子和 #38 一样,是由 nonebot-plugin-chatrecorder 引起的,可是他那个能正常发送搜图结果,不太清楚你这个是怎么回事。

你可以去给这个插件提个 issue ,让作者把那个 or (api == "send_msg" and data["message_type"] == "group") 改成 or (api == "send_msg" and data.get("message_type") == "group")

你要是方便的话,可以先直接改你本地这个插件的源文件。

我依照这个建议试着修改了一下,的确不再有报错信息了,但是还是没有返回任何搜图结果。开启debug之后也看不到特别的异常信息...甚至连go-cqhttp都显示完成了发送流程,但是机器人没有发出消息。我会再检查一下是不是账号风控有关。

NekoAria commented 1 year ago

看样子和 #38 一样,是由 nonebot-plugin-chatrecorder 引起的,可是他那个能正常发送搜图结果,不太清楚你这个是怎么回事。

你可以去给这个插件提个 issue ,让作者把那个 or (api == "send_msg" and data["message_type"] == "group") 改成 or (api == "send_msg" and data.get("message_type") == "group")

你要是方便的话,可以先直接改你本地这个插件的源文件。

我依照这个建议试着修改了一下,的确不再有报错信息了,但是还是没有返回任何搜图结果。开启debug之后也看不到特别的异常信息...甚至连go-cqhttp都显示完成了发送流程,但是机器人没有发出消息。我会再检查一下是不是账号风控有关。

要是其他人和机器人的私聊能接收到消息,唯独你不行,那确实是触发风控了。

TheValkyrja commented 1 year ago

看样子和 #38 一样,是由 nonebot-plugin-chatrecorder 引起的,可是他那个能正常发送搜图结果,不太清楚你这个是怎么回事。 你可以去给这个插件提个 issue ,让作者把那个 or (api == "send_msg" and data["message_type"] == "group") 改成 or (api == "send_msg" and data.get("message_type") == "group") 。 你要是方便的话,可以先直接改你本地这个插件的源文件。

我依照这个建议试着修改了一下,的确不再有报错信息了,但是还是没有返回任何搜图结果。开启debug之后也看不到特别的异常信息...甚至连go-cqhttp都显示完成了发送流程,但是机器人没有发出消息。我会再检查一下是不是账号风控有关。

要是其他人和机器人的私聊能接收到消息,唯独你不行,那确实是触发风控了。

我刚刚进行了测试,并非机器人或者我自己账号问题,似乎是因为搜图得到准确结果之后,私聊一个长消息包含太多(可能因为是墙外的)链接就会被吃掉,并且不触发cqhttp的风控报警。 或许添加个私聊内强制合并转发会有效果?

NekoAria commented 1 year ago

看样子和 #38 一样,是由 nonebot-plugin-chatrecorder 引起的,可是他那个能正常发送搜图结果,不太清楚你这个是怎么回事。 你可以去给这个插件提个 issue ,让作者把那个 or (api == "send_msg" and data["message_type"] == "group") 改成 or (api == "send_msg" and data.get("message_type") == "group") 。 你要是方便的话,可以先直接改你本地这个插件的源文件。

我依照这个建议试着修改了一下,的确不再有报错信息了,但是还是没有返回任何搜图结果。开启debug之后也看不到特别的异常信息...甚至连go-cqhttp都显示完成了发送流程,但是机器人没有发出消息。我会再检查一下是不是账号风控有关。

要是其他人和机器人的私聊能接收到消息,唯独你不行,那确实是触发风控了。

我刚刚进行了测试,并非机器人或者我自己账号问题,似乎是因为搜图得到准确结果之后,私聊一个长消息包含太多(可能因为是墙外的)链接就会被吃掉,并且不触发cqhttp的风控报警。 或许添加个私聊内强制合并转发会有效果?

你的意思是就算只有 1 条消息,也合并转发吗? 目前的默认情况下,是超过 2 条消息就自动使用合并转发。

TheValkyrja commented 1 year ago

看样子和 #38 一样,是由 nonebot-plugin-chatrecorder 引起的,可是他那个能正常发送搜图结果,不太清楚你这个是怎么回事。 你可以去给这个插件提个 issue ,让作者把那个 or (api == "send_msg" and data["message_type"] == "group") 改成 or (api == "send_msg" and data.get("message_type") == "group") 。 你要是方便的话,可以先直接改你本地这个插件的源文件。

我依照这个建议试着修改了一下,的确不再有报错信息了,但是还是没有返回任何搜图结果。开启debug之后也看不到特别的异常信息...甚至连go-cqhttp都显示完成了发送流程,但是机器人没有发出消息。我会再检查一下是不是账号风控有关。

要是其他人和机器人的私聊能接收到消息,唯独你不行,那确实是触发风控了。

我刚刚进行了测试,并非机器人或者我自己账号问题,似乎是因为搜图得到准确结果之后,私聊一个长消息包含太多(可能因为是墙外的)链接就会被吃掉,并且不触发cqhttp的风控报警。 或许添加个私聊内强制合并转发会有效果?

你的意思是就算只有 1 条消息,也合并转发吗? 目前的默认情况下,是超过 2 条消息就自动使用合并转发。

我目前还不是很确定是什么原因引起的无法发出搜图结果,我刚才测试了一下,群聊里能正常发送的搜图结果,无论用什么账号都无法在私聊转发给其他人。 可能需要有了新结果之后进一步跟进。

TheValkyrja commented 1 year ago

看样子和 #38 一样,是由 nonebot-plugin-chatrecorder 引起的,可是他那个能正常发送搜图结果,不太清楚你这个是怎么回事。 你可以去给这个插件提个 issue ,让作者把那个 or (api == "send_msg" and data["message_type"] == "group") 改成 or (api == "send_msg" and data.get("message_type") == "group") 。 你要是方便的话,可以先直接改你本地这个插件的源文件。

我依照这个建议试着修改了一下,的确不再有报错信息了,但是还是没有返回任何搜图结果。开启debug之后也看不到特别的异常信息...甚至连go-cqhttp都显示完成了发送流程,但是机器人没有发出消息。我会再检查一下是不是账号风控有关。

要是其他人和机器人的私聊能接收到消息,唯独你不行,那确实是触发风控了。

我后续各种方式测试了一下,发现搜图的返回结果的消息(包括单条结果和合并转发),在我这里原样手动转发给私聊的时候,另一个账号无论如何都接收不到,两个非机器人的普通账号之间也发不过去。这种情况似乎是从11月中旬开始的。由于go-cqhttp和nonebot都没有报错提示,我没法确定问题所在。

NekoAria commented 1 year ago

看样子和 #38 一样,是由 nonebot-plugin-chatrecorder 引起的,可是他那个能正常发送搜图结果,不太清楚你这个是怎么回事。 你可以去给这个插件提个 issue ,让作者把那个 or (api == "send_msg" and data["message_type"] == "group") 改成 or (api == "send_msg" and data.get("message_type") == "group") 。 你要是方便的话,可以先直接改你本地这个插件的源文件。

我依照这个建议试着修改了一下,的确不再有报错信息了,但是还是没有返回任何搜图结果。开启debug之后也看不到特别的异常信息...甚至连go-cqhttp都显示完成了发送流程,但是机器人没有发出消息。我会再检查一下是不是账号风控有关。

要是其他人和机器人的私聊能接收到消息,唯独你不行,那确实是触发风控了。

我后续各种方式测试了一下,发现搜图的返回结果的消息(包括单条结果和合并转发),在我这里原样手动转发给私聊的时候,另一个账号无论如何都接收不到,两个非机器人的普通账号之间也发不过去。这种情况似乎是从11月中旬开始的。由于go-cqhttp和nonebot都没有报错提示,我没法确定问题所在。

可能是链接触发风控了,你看看是不是这些消息里带红色的链接。

EnderHane commented 1 year ago

是的,目前qq把pixiv.net链接标红色叹号了

EnderHane commented 1 year ago

经过测试,(在目前这个时间点)如果发送的私聊消息中同时含有红色叹号链接和任意图片,则私聊的对方无法收到

NekoAria commented 1 year ago

刚发布的新版本增加了对红链的处理,请你们再帮助测试下。@TheValkyrja @EnderHane

EnderHane commented 1 year ago

对danbooru.donmai.us的处理似乎未能生效 日志截图

NekoAria commented 1 year ago

对danbooru.donmai.us的处理似乎未能生效 日志截图

应该是生效了的,日志里可能没显示出那个 0 宽字符。 我测试出来在 QQ 上看不到红链了。

EnderHane commented 1 year ago

对danbooru.donmai.us的处理似乎未能生效 日志截图

应该是生效了的,日志里可能没显示出那个 0 宽字符。 我测试出来在 QQ 上看不到红链了。

日志截图 这是含pixiv.net的消息,成功接收,可以看到日志可以记录这个字符 相应地,刚才那条含danbooru.donmai.us的消息接收失败

NekoAria commented 1 year ago

对danbooru.donmai.us的处理似乎未能生效 日志截图

应该是生效了的,日志里可能没显示出那个 0 宽字符。 我测试出来在 QQ 上看不到红链了。

日志截图 这是含pixiv.net的消息,成功接收,可以看到日志可以记录这个字符 相应地,刚才那条含danbooru.donmai.us的消息接收失败

麻烦你把涉及到 danbooru 的那部份日志截得稍微多点,部分信息要是觉得不方便给出可以打码。 或者直接把你用来测试的图片贴一下,让我试试能否复现。

EnderHane commented 1 year ago

没事了,是缓存的问题

TheValkyrja commented 1 year ago

刚发布的新版本增加了对红链的处理,请你们再帮助测试下。@TheValkyrja @EnderHane

现在新的版本能够正常在私聊里发出结果了(包括合并转发和普通消息),处理之后的链接可以正常避免红链,并且不影响消息的发出。此前主要是连go-cqhttp也没有风控提示,导致对实际情况没法判断。

NekoAria commented 1 year ago

刚发布的新版本增加了对红链的处理,请你们再帮助测试下。@TheValkyrja @EnderHane

现在新的版本能够正常在私聊里发出结果了(包括合并转发和普通消息),处理之后的链接可以正常避免红链,并且不影响消息的发出。此前主要是连go-cqhttp也没有风控提示,导致对实际情况没法判断。

那么我先关闭这个 issue 了。 如果还有其他问题,请另外开一个 issue 。

TheValkyrja commented 1 year ago

刚发布的新版本增加了对红链的处理,请你们再帮助测试下。@TheValkyrja @EnderHane

现在新的版本能够正常在私聊里发出结果了(包括合并转发和普通消息),处理之后的链接可以正常避免红链,并且不影响消息的发出。此前主要是连go-cqhttp也没有风控提示,导致对实际情况没法判断。

那么我先关闭这个 issue 了。 如果还有其他问题,请另外开一个 issue 。

刚才顺便测试了下,似乎QQ又已经不再把pixiv.net标记为红链了。如果方便开发的话,建议后续版本在设置项里添加一个参数控制搜图消息是否处理此类链接。或许对于将来的排错和易用性有一定的帮助~。

NekoAria commented 1 year ago

刚发布的新版本增加了对红链的处理,请你们再帮助测试下。@TheValkyrja @EnderHane

现在新的版本能够正常在私聊里发出结果了(包括合并转发和普通消息),处理之后的链接可以正常避免红链,并且不影响消息的发出。此前主要是连go-cqhttp也没有风控提示,导致对实际情况没法判断。

那么我先关闭这个 issue 了。 如果还有其他问题,请另外开一个 issue 。

刚才顺便测试了下,似乎QQ又已经不再把pixiv.net标记为红链了。如果方便开发的话,建议后续版本在设置项里添加一个参数控制搜图消息是否处理此类链接。或许对于将来的排错和易用性有一定的帮助~。

我现在新增了一个配置项 to_confuse_urls 用来配置要处理的红链网址列表,默认值目前就 2 个网址,先去掉了 pixiv.net