mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-12 14:00:12 +08:00
修复戳一戳 ,机器人误以为有人戳自己 (#2844)
* 修复戳一戳 ,机器人误以为有人戳自己 * Update GroupNotificationProcessor.kt * 呃,我简单粗暴写成bot了,应该是group.botAsMemebr * 代码格式fix * Apply suggestions from code review --------- Co-authored-by: Him188 <Him188@mamoe.net>
This commit is contained in:
parent
876805895b
commit
f7649d225d
@ -11,6 +11,7 @@ package net.mamoe.mirai.internal.network.notice.group
|
|||||||
|
|
||||||
import io.ktor.utils.io.core.*
|
import io.ktor.utils.io.core.*
|
||||||
import net.mamoe.mirai.contact.NormalMember
|
import net.mamoe.mirai.contact.NormalMember
|
||||||
|
import net.mamoe.mirai.contact.UserOrBot
|
||||||
import net.mamoe.mirai.contact.getMember
|
import net.mamoe.mirai.contact.getMember
|
||||||
import net.mamoe.mirai.data.GroupHonorType
|
import net.mamoe.mirai.data.GroupHonorType
|
||||||
import net.mamoe.mirai.event.events.*
|
import net.mamoe.mirai.event.events.*
|
||||||
@ -315,6 +316,7 @@ internal class GroupNotificationProcessor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see NudgeEvent
|
* @see NudgeEvent
|
||||||
* @see MemberHonorChangeEvent
|
* @see MemberHonorChangeEvent
|
||||||
@ -324,25 +326,45 @@ internal class GroupNotificationProcessor(
|
|||||||
private fun NoticePipelineContext.processGeneralGrayTip(
|
private fun NoticePipelineContext.processGeneralGrayTip(
|
||||||
data: MsgType0x2DC,
|
data: MsgType0x2DC,
|
||||||
) = data.context {
|
) = data.context {
|
||||||
|
|
||||||
val grayTip = buf.loadAs(TroopTips0x857.NotifyMsgBody.serializer(), 1).optGeneralGrayTip
|
val grayTip = buf.loadAs(TroopTips0x857.NotifyMsgBody.serializer(), 1).optGeneralGrayTip
|
||||||
markAsConsumed()
|
markAsConsumed()
|
||||||
when (grayTip?.templId) {
|
when (grayTip?.templId) {
|
||||||
// 群戳一戳
|
// 群戳一戳
|
||||||
10043L, 1133L, 1132L, 1134L, 1135L, 1136L -> {
|
10043L, 1133L, 1132L, 1134L, 1135L, 1136L -> {
|
||||||
|
|
||||||
|
fun String.findUser(): UserOrBot? {
|
||||||
|
return if (this == bot.id.toString()) {
|
||||||
|
group.botAsMember
|
||||||
|
} else {
|
||||||
|
this.findMember() ?: this.findFriendOrStranger()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// group nudge
|
// group nudge
|
||||||
// 预置数据,服务器将不会提供己方已知消息
|
// 预置数据,服务器将不会提供己方已知消息
|
||||||
val action = grayTip.msgTemplParam["action_str"].orEmpty()
|
val action = grayTip.msgTemplParam["action_str"].orEmpty()
|
||||||
val from = grayTip.msgTemplParam["uin_str1"]?.findMember() ?: group.botAsMember
|
val from = grayTip.msgTemplParam["uin_str1"]
|
||||||
val target = grayTip.msgTemplParam["uin_str2"]?.findMember() ?: group.botAsMember
|
val target = grayTip.msgTemplParam["uin_str2"]
|
||||||
val suffix = grayTip.msgTemplParam["suffix_str"].orEmpty()
|
val suffix = grayTip.msgTemplParam["suffix_str"].orEmpty()
|
||||||
|
|
||||||
collected += NudgeEvent(
|
val fromUser = from?.findUser()
|
||||||
from = if (from.id == bot.id) bot else from,
|
val targetUser = target?.findUser()
|
||||||
target = if (target.id == bot.id) bot else target,
|
|
||||||
action = action,
|
if (fromUser == null || targetUser == null) {
|
||||||
suffix = suffix,
|
markNotConsumed()
|
||||||
subject = group,
|
logger.debug {
|
||||||
)
|
"Cannot find from or target in Transformers528 0x14 template\ntemplId=${grayTip.templId}\nPermList=${grayTip.msgTemplParam.structureToString()}"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
collected += NudgeEvent(
|
||||||
|
from = fromUser,
|
||||||
|
target = targetUser,
|
||||||
|
action = action,
|
||||||
|
suffix = suffix,
|
||||||
|
subject = group,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 群签到/打卡
|
// 群签到/打卡
|
||||||
10036L, 10038L -> {
|
10036L, 10038L -> {
|
||||||
|
Loading…
Reference in New Issue
Block a user