JustUndertaker / ComWeChatBotClient

基于COM通信的微信pc hook应用端,支持Onebot12协议
https://justundertaker.github.io/ComWeChatBotClient/
GNU Affero General Public License v3.0
272 stars 55 forks source link

at错误的问题 #18

Closed wangyu1997 closed 1 year ago

wangyu1997 commented 1 year ago

image 有位好友wxid是“木 南”,wechat这边发过来的text里包含了南

TimeRainStarSky commented 1 year ago

私聊at也会报错,建议遇到有问题消息段忽略,而其他消息段正常发送,不然整条消息都没了

JustUndertaker commented 1 year ago

image 有位好友wxid是“木 南”,wechat这边发过来的text里包含了南

这个问题比较难搞,因为微信给的at只是文本显示+at_list,所以处理文本会有bug,只能通过判定@用户名的方式截取字符串,所以当用户名有空格时候会截取不全的。

JustUndertaker commented 1 year ago

私聊at也会报错,建议遇到有问题消息段忽略,而其他消息段正常发送,不然整条消息都没了

你觉得这样好用吗= =,本身私聊不支持at就是说明的,写代码时就应该避免呀。

lunzhiPenxil commented 1 year ago

私聊at也会报错,建议遇到有问题消息段忽略,而其他消息段正常发送,不然整条消息都没了

你觉得这样好用吗= =,本身私聊不支持at就是说明的,写代码时就应该避免呀。

我个人的看法是,onebotV12标准的中并未提到你所说的这种本身私聊不支持at的特性,协议端的这种行为的差异会要求应用端针对特定的协议端做出设计,所以协议端不这样设计反而会导致跨平台复用时的兼容性问题,潜在的造成一部分的应用端无法直接迁移并对接本协议端的风险。 所以我确实认为写代码时就应该避免呀。这种说法是不妥的。 相反,遇到有问题消息段忽略,而其他消息段正常发送,不然整条消息都没了,我认为这是非常好用的设计。 当然,如果你是安全性考虑而如此设计的,但同时也认可我所说的这种场景,我认为你可以在配置文件里设立一个配置项,来让用户自己决定是不是要用这种更有兼容性的逻辑,以满足他的这种需求。

仅代表个人看法。

TimeRainStarSky commented 1 year ago

私聊at也会报错,建议遇到有问题消息段忽略,而其他消息段正常发送,不然整条消息都没了

你觉得这样好用吗= =,本身私聊不支持at就是说明的,写代码时就应该避免呀。

我开发的bot是多平台的,不是单独针对微信适配的,这样有啥问题,如果觉得有问题的话,建议加在配置文件里,go-cqhttp也有类似配置,是否忽略错误CQ码