Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

支持单向好友会话 #447

Closed
Hieuzest opened this issue Jul 17, 2020 · 9 comments · Fixed by #795
Closed

支持单向好友会话 #447

Hieuzest opened this issue Jul 17, 2020 · 9 comments · Fixed by #795
Labels
N 优先级: 一般 t:feature 类型: 新特性 x:protocol 属性: 协议相关
Milestone

Comments

@Hieuzest
Copy link
Contributor

Unknown PbGetMsg type 167 (单向好友私聊消息)
Motivation: 两个Bot单向添加好友后的私聊

@Hieuzest Hieuzest added the t:feature 类型: 新特性 label Jul 17, 2020
@Him188 Him188 added x:question 标签: 需要更多信息 and removed t:feature 类型: 新特性 labels Jul 17, 2020
@Him188
Copy link
Member

Him188 commented Jul 17, 2020

作用很小,可以用临时会话代替

单向好友似乎仅存在于被删除后?

@Hieuzest
Copy link
Contributor Author

Hieuzest commented Jul 17, 2020

设A,B两个QQ, B允许任何人加为好友
那么当A正常加B后,A就是B的陌生人,(B必须手动加A才能构成好友),此时B向A发送的信息对A就是陌生人消息

因为我自己测试用的都是不设验证的bot号,只要单方面加好友就会构成陌生人关系,而存在陌生人关系时,强制替代临时会话关系,导致私聊只能发不能收的边界情况。
由bot发出的消息看来不受影响,但pc端我没有找到任何由B向A发送消息不被识别为陌生人的方法,即便是响应A发起的会话。

这和讨论组的情况不同,陌生人可以预计仍将长期存在,以及支持并不特别困难,因此只是作为一个补全消息结构的建议。

@Him188 Him188 added t:feature 类型: 新特性 N 优先级: 一般 x:protocol 属性: 协议相关 and removed x:question 标签: 需要更多信息 labels Jul 18, 2020
@Him188 Him188 added this to the 1.4.0 milestone Jul 18, 2020
@Pika-Lee
Copy link

Pika-Lee commented Sep 22, 2020

同楼主问题,

描述这个Bug
在收到单向好友(只添加机器人为好友,但机器人未添加该用户为好友)的消息时,mirai无法接收并处理相关的消息。

复现步骤
1.将机器人的好友添加方式设置为无需验证问题或正确回答对验证问题。
2.添加机器人好友,自动与机器人建立单向好友关系。
3.私聊机器人发送一条消息。
4.mirai日志中未正常收到该消息,无法传递给插件处理相关事件。

期望的行为
希望mirai能正常收发单向好友、以及来源为群的临时会话消息。(双向好友太麻烦了,总不能让机器人一个个手动同意好友申请吧,而且好友列表数量本身也有上限)

截图和日志
QQ截图20200922150338

Event: MessageSvcPbGetMsg.Response(syncFlagFromServer=CONTINUE, messages=<Iter&^able>)

运行环境

操作系统:[例子:Windows Server 2016]
mirai core 版本:[例子:1.3.0]
mirai console 版本:[例子:1.0-M4]
mirai native 版本:[例子:1.9.2]
Java 运行时版本:[例子:1.8.0 261]
更多信息
如果有其他相关的信息可以填写在此处。

@Pika-Lee
Copy link

作用很小,可以用临时会话代替

单向好友似乎仅存在于被删除后?

1.如果bot的好友验证方式设置为“无需验证问题”或“正确答对验证问题”,那么bot被添加好友后即为单向好友(A添加了bot,A的好友列表里有bot,但bot的列表中A是陌生人。除非bot手动加A,才会从单向好友变为双向好友)

2.这个问题的适用面其实很广,因为之前很多用户一直尝试添加Bot为好友(方便联系),一个个处理好友验证消息会很麻烦,所以索性设置“正确答对验证问题即自动添加bot为好友”,通过这种方式,大量用户已经与bot建立了单向好友关系。

3.一旦建立了单向好友,bot便无法再正常接收/处理/发送来自单向好友的私聊消息。很多插件的私聊功能将因此瘫痪。

本issue的问题将会影响到所有涉及私聊功能插件的正常运行,望提高本issue的优先级,谢谢!

@Him188
Copy link
Member

Him188 commented Sep 22, 2020

这不是 bug,是新特性

@Him188
Copy link
Member

Him188 commented Sep 22, 2020

优先级不可能根据某一个体的用例而改动

@sandtechnology
Copy link
Collaborator

Unknown PbGetMsg type 167 (单向好友私聊消息)
Motivation: 两个Bot单向添加好友后的私聊

请问一下 167的触发方式是?
(已通过回答正确验证问题与机器人构成单向好友关系,但向对方发送消息却是166的结构,应该是丢失了部分环境)

@Hieuzest
Copy link
Contributor Author

Unknown PbGetMsg type 167 (单向好友私聊消息)
Motivation: 两个Bot单向添加好友后的私聊

请问一下 167的触发方式是?
(已通过回答正确验证问题与机器人构成单向好友关系,但向对方发送消息却是166的结构,应该是丢失了部分环境)

A加B为好友
A从客户端(PCTIM)向B【单向好友,BOT】发送消息,BOT端收到166
B从客户端(PCTIM)向A【陌生人,BOT】发送消息,BOT端收到167

换句话说这是个几乎不会出现的场景【

@sandtechnology
Copy link
Collaborator

Unknown PbGetMsg type 167 (单向好友私聊消息)
Motivation: 两个Bot单向添加好友后的私聊

请问一下 167的触发方式是?
(已通过回答正确验证问题与机器人构成单向好友关系,但向对方发送消息却是166的结构,应该是丢失了部分环境)

A加B为好友
A从客户端(PCTIM)向B【单向好友,BOT】发送消息,BOT端收到166
B从客户端(PCTIM)向A【陌生人,BOT】发送消息,BOT端收到167

换句话说这是个几乎不会出现的场景【

好的感谢 这是非常重要的信息 如无意外会在近期发送PR

@Him188 Him188 linked a pull request Dec 30, 2020 that will close this issue
@Him188 Him188 modified the milestones: 2.1.0, 2.0-RC Jan 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
N 优先级: 一般 t:feature 类型: 新特性 x:protocol 属性: 协议相关
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants