Fix #1546, revert wrong changes and request system messages (#1549)

* Fix #1546, revert wrong changes and request system messages when getting stranger

* Use faster long array

Co-authored-by: Him188 <Him188@mamoe.net>

Co-authored-by: Him188 <Him188@mamoe.net>
This commit is contained in:
sandtechnology 2021-09-12 16:51:17 +08:00 committed by GitHub
parent d1b5c94231
commit e3fd680a2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -33,6 +33,7 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x122
import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x27.SubMsgType0x27.* import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x27.SubMsgType0x27.*
import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x44.Submsgtype0x44 import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x44.Submsgtype0x44
import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0xb3.SubMsgType0xb3 import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0xb3.SubMsgType0xb3
import net.mamoe.mirai.internal.network.protocol.packet.chat.NewContact
import net.mamoe.mirai.internal.network.protocol.packet.list.FriendList.GetFriendGroupList import net.mamoe.mirai.internal.network.protocol.packet.list.FriendList.GetFriendGroupList
import net.mamoe.mirai.internal.network.protocol.packet.sendAndExpect import net.mamoe.mirai.internal.network.protocol.packet.sendAndExpect
import net.mamoe.mirai.internal.utils._miraiContentToString import net.mamoe.mirai.internal.utils._miraiContentToString
@ -80,15 +81,20 @@ internal class FriendNoticeProcessor(
} }
msgHead.context { msgHead.context {
if (fromUin == authUin) { // 对方 qq
logger.error { "Could not determine uin since `fromUin` = `authUin` = $fromUin" } val id = longArrayOf(fromUin, authUin).firstOrNull { it != 0L && it != bot.id }
if (id == null) {
logger.error { "Could not determine uin for new stranger" }
return return
} }
val id = fromUin or authUin // 对方 qq
if (bot.getStranger(id) != null) return if (bot.getStranger(id) != null) return
val nick = fromNick.ifEmpty { authNick }.ifEmpty { pbNick } val nick = fromNick.ifEmpty { authNick }.ifEmpty { pbNick }
collect(StrangerAddEvent(bot.addNewStranger(StrangerInfoImpl(id, nick, fromGroup)) ?: return)) collect(StrangerAddEvent(bot.addNewStranger(StrangerInfoImpl(id, nick, fromGroup)) ?: return))
//同时需要请求好友验证消息(有新请求需要同意)
bot.network.run {
NewContact.SystemMsgNewFriend(bot.client).sendWithoutExpect()
}
} }
} }