Fix new member

This commit is contained in:
Him188 2020-04-10 20:29:17 +08:00
parent 9736909d90
commit d8a5291880
2 changed files with 8 additions and 6 deletions

View File

@ -137,11 +137,11 @@ internal class MessageSvc {
object EmptyResponse : GetMsgSuccess(emptyList())
private suspend fun MsgComm.Msg.getNewGroup(bot: QQAndroidBot): Group {
private suspend fun MsgComm.Msg.getNewGroup(bot: QQAndroidBot): Group? {
val troopNum = bot.network.run {
FriendList.GetTroopListSimplify(bot.client)
.sendAndExpect<FriendList.GetTroopListSimplify.Response>(retry = 2)
}.groups.first { it.groupUin == msgHead.fromUin }
}.groups.firstOrNull { it.groupUin == msgHead.fromUin } ?: return null
@Suppress("DuplicatedCode")
return GroupImpl(
@ -217,7 +217,7 @@ internal class MessageSvc {
}
// 新群
val newGroup = msg.getNewGroup(bot)
val newGroup = msg.getNewGroup(bot) ?: return@mapNotNull null
bot.groups.delegate.addLast(newGroup)
return@mapNotNull BotJoinGroupEvent(newGroup)
} else {

View File

@ -416,17 +416,19 @@ internal class OnlinePush {
bot.network.logger.debug { "OnlinePush528 0x44L: " + msg._miraiContentToString() }
return@lambda528 emptySequence()
},
// bot 被踢
// bot 在其他客户端被踢或主动退出而同步情况
0xD4L to lambda528 { bot ->
@Serializable
data class SubD4(
// ok
val uin: Long
) : ProtoBuf
val uin = vProtobuf.loadAs(SubD4.serializer()).uin
val group = bot.getGroupByUinOrNull(uin) ?: bot.getGroupOrNull(uin)
// 08 E7 C1 AD B8 02
return@lambda528 group?.let { sequenceOf(BotKickEvent(group)) } ?: emptySequence()
return@lambda528 if (group != null && bot.groups.delegate.remove(group)) {
sequenceOf(BotLeaveEvent(group))
} else emptySequence()
},
// ModFriendRemark, DelFriend
0x27L to lambda528 { bot ->