Shamrock: 尝试修复 #98

This commit is contained in:
WhiteChi 2023-11-27 12:06:02 +08:00
parent ae663e6b2e
commit 80a4a208b9
2 changed files with 28 additions and 24 deletions

View File

@ -86,7 +86,7 @@ private open class Chūnibyō: Default() {
injectPacket = "遮匿无用之禀" injectPacket = "遮匿无用之禀"
injectPacketDesc = "试于试之,逆则魂飞魄散" injectPacketDesc = "试于试之,逆则魂飞魄散"
persistentText = "丹书铁券" persistentText = "丹书铁券"
persistentTextDesc = "" persistentTextDesc = "由天地之起也,须复动之。"
} }
} }
@ -119,7 +119,7 @@ private open class Default: VarString(
injectPacket = "拦截QQ无用收包", injectPacket = "拦截QQ无用收包",
injectPacketDesc = "测试阶段,可能导致网络异常或掉线。", injectPacketDesc = "测试阶段,可能导致网络异常或掉线。",
persistentText = "免死金牌", persistentText = "免死金牌",
persistentTextDesc = "天地之起也,须复动之" persistentTextDesc = "系统复活QQ和Shamrock需要重新启动系统"
) )
open class VarString( open class VarString(

View File

@ -73,8 +73,8 @@ internal object AioListener: IKernelMsgListener {
MsgConstant.KCHATTYPEGROUP -> { MsgConstant.KCHATTYPEGROUP -> {
LogCenter.log("群消息(group = ${record.peerName}(${record.peerUin}), uin = ${record.senderUin}, id = $msgHash|${record.msgSeq}, msg = $rawMsg)") LogCenter.log("群消息(group = ${record.peerName}(${record.peerUin}), uin = ${record.senderUin}, id = $msgHash|${record.msgSeq}, msg = $rawMsg)")
ShamrockConfig.getGroupMsgRule()?.let { rule -> ShamrockConfig.getGroupMsgRule()?.let { rule ->
if (rule.black?.contains(record.peerUin) == true) return if (!rule.black.isNullOrEmpty() && rule.black.contains(record.senderUin)) return
if (rule.white?.contains(record.peerUin) == false) return if (!rule.white.isNullOrEmpty() && !rule.white.contains(record.senderUin)) return
} }
if(!GlobalEventTransmitter.MessageTransmitter.transGroupMessage( if(!GlobalEventTransmitter.MessageTransmitter.transGroupMessage(
@ -86,8 +86,8 @@ internal object AioListener: IKernelMsgListener {
MsgConstant.KCHATTYPEC2C -> { MsgConstant.KCHATTYPEC2C -> {
LogCenter.log("私聊消息(private = ${record.senderUin}, id = [$msgHash | ${record.msgId} | ${record.msgSeq}], msg = $rawMsg)") LogCenter.log("私聊消息(private = ${record.senderUin}, id = [$msgHash | ${record.msgId} | ${record.msgSeq}], msg = $rawMsg)")
ShamrockConfig.getPrivateRule()?.let { rule -> ShamrockConfig.getPrivateRule()?.let { rule ->
if (rule.black?.contains(record.peerUin) == true) return if (!rule.black.isNullOrEmpty() && rule.black.contains(record.senderUin)) return
if (rule.white?.contains(record.peerUin) == false) return if (!rule.white.isNullOrEmpty() && !rule.white.contains(record.senderUin)) return
} }
if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage( if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage(
@ -98,14 +98,12 @@ internal object AioListener: IKernelMsgListener {
} }
MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> { MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> {
if (!ShamrockConfig.allowTempSession()) { if (!ShamrockConfig.allowTempSession()) return
return
}
LogCenter.log("私聊临时消息(private = ${record.senderUin}, id = $msgHash, msg = $rawMsg)") LogCenter.log("私聊临时消息(private = ${record.senderUin}, id = $msgHash, msg = $rawMsg)")
ShamrockConfig.getPrivateRule()?.let { rule -> ShamrockConfig.getPrivateRule()?.let { rule ->
if (rule.black?.contains(record.peerUin) == true) return if (!rule.black.isNullOrEmpty() && rule.black.contains(record.senderUin)) return
if (rule.white?.contains(record.peerUin) == false) return if (!rule.white.isNullOrEmpty() && !rule.white.contains(record.senderUin)) return
} }
if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage( if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage(
@ -151,14 +149,14 @@ internal object AioListener: IKernelMsgListener {
override fun onMsgInfoListUpdate(msgList: ArrayList<MsgRecord>?) { override fun onMsgInfoListUpdate(msgList: ArrayList<MsgRecord>?) {
msgList?.forEach { record -> msgList?.forEach { record ->
if (record.chatType == MsgConstant.KCHATTYPEGUILD) return@forEach// TODO: 频道消息暂不处理
if (record.sendStatus == MsgConstant.KSENDSTATUSFAILED
|| record.sendStatus == MsgConstant.KSENDSTATUSSENDING) {
return@forEach
}
GlobalScope.launch { GlobalScope.launch {
if (record.chatType == MsgConstant.KCHATTYPEGUILD) return@launch// TODO: 频道消息暂不处理
if (record.sendStatus == MsgConstant.KSENDSTATUSFAILED
|| record.sendStatus == MsgConstant.KSENDSTATUSSENDING) {
return@launch
}
val msgHash = MessageHelper.generateMsgIdHash(record.chatType, record.msgId) val msgHash = MessageHelper.generateMsgIdHash(record.chatType, record.msgId)
val mapping = MessageHelper.getMsgMappingByHash(msgHash) val mapping = MessageHelper.getMsgMappingByHash(msgHash)
@ -186,17 +184,23 @@ internal object AioListener: IKernelMsgListener {
when (record.chatType) { when (record.chatType) {
MsgConstant.KCHATTYPEGROUP -> { MsgConstant.KCHATTYPEGROUP -> {
GlobalEventTransmitter.MessageTransmitter if(!GlobalEventTransmitter.MessageTransmitter
.transGroupMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent) .transGroupMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent)) {
LogCenter.log("自发群消息推送失败 -> MessageTransmitter", Level.WARN)
}
} }
MsgConstant.KCHATTYPEC2C -> { MsgConstant.KCHATTYPEC2C -> {
GlobalEventTransmitter.MessageTransmitter if(!GlobalEventTransmitter.MessageTransmitter
.transPrivateMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent) .transPrivateMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent)) {
LogCenter.log("自发私聊消息推送失败 -> MessageTransmitter", Level.WARN)
}
} }
MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> { MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> {
if (!ShamrockConfig.allowTempSession()) return@launch if (!ShamrockConfig.allowTempSession()) return@launch
GlobalEventTransmitter.MessageTransmitter if(!GlobalEventTransmitter.MessageTransmitter
.transPrivateMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent, MessageTempSource.Group) .transPrivateMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent, MessageTempSource.Group)) {
LogCenter.log("自发私聊临时消息推送失败 -> MessageTransmitter", Level.WARN)
}
} }
else -> LogCenter.log("不支持SELF PUSH事件: ${record.chatType}") else -> LogCenter.log("不支持SELF PUSH事件: ${record.chatType}")
} }