Shamrock: fix #149

This commit is contained in:
WhiteChi 2023-12-12 10:28:24 +08:00
parent d388e5df0c
commit dcb2b0a26f
4 changed files with 65 additions and 91 deletions

View File

@ -279,19 +279,19 @@ object ShamrockConfig {
return preferences.getBoolean("enable_self_msg", false)
}
fun enableSyncMsg(ctx: Context): Boolean {
val preferences = ctx.getSharedPreferences("config", 0)
return preferences.getBoolean("enable_sync_msg", false)
}
fun setEnableSelfMsg(ctx: Context, v: Boolean) {
val preferences = ctx.getSharedPreferences("config", 0)
preferences.edit().putBoolean("enable_self_msg", v).apply()
}
fun isEchoNumber(ctx: Context): Boolean {
fun setEnableSyncMsg(ctx: Context, v: Boolean) {
val preferences = ctx.getSharedPreferences("config", 0)
return preferences.getBoolean("echo_number", false)
}
fun setEchoNumber(ctx: Context, v: Boolean) {
val preferences = ctx.getSharedPreferences("config", 0)
preferences.edit().putBoolean("echo_number", v).apply()
preferences.edit().putBoolean("enable_sync_msg", v).apply()
}
fun getConfigMap(ctx: Context): Map<String, Any?> {
@ -321,6 +321,7 @@ object ShamrockConfig {
"echo_number" to preferences.getBoolean("echo_number", false),
"shell" to preferences.getBoolean("shell", false),
"alive_reply" to preferences.getBoolean("alive_reply", false),
"enable_sync_msg" to preferences.getBoolean("enable_sync_msg", false),
)
}

View File

@ -264,6 +264,17 @@ fun LabFragment() {
thickness = 0.2.dp
)
Function(
title = "同步消息推送",
desc = "推送来自同号异设备消息,未做特殊处理请勿打开。",
descColor = it,
isSwitch = ShamrockConfig.enableSyncMsg(ctx)
) {
ShamrockConfig.setEnableSyncMsg(ctx, it)
ShamrockConfig.pushUpdate(ctx)
return@Function true
}
Function(
title = "自发消息推送",
desc = "推送Bot发送的消息未做特殊处理请勿打开。",

View File

@ -76,6 +76,7 @@ internal object ShamrockConfig {
putBoolean("enable_self_msg", intent.getBooleanExtra("enable_self_msg", false)) // 推送自己发的消息
putBoolean("shell", intent.getBooleanExtra("shell", false)) // 开启Shell接口
putBoolean("enable_sync_msg", intent.getBooleanExtra("enable_sync_msg", false)) // 推送同步消息
putBoolean("isInit", true)
}
@ -101,6 +102,10 @@ internal object ShamrockConfig {
return Config.rules?.privateRule
}
fun enableSyncMsg(): Boolean {
return mmkv.getBoolean("enable_sync_msg", false)
}
fun enableSelfMsg(): Boolean {
return mmkv.getBoolean("enable_self_msg", false)
}

View File

@ -67,12 +67,15 @@ internal object AioListener : IKernelMsgListener {
MessageHelper.sendMessageWithoutMsgId(record.chatType, record.peerUin.toString(), "pong", { _, _ -> })
}
if (record.senderUin == TicketSvc.getLongUin() && !ShamrockConfig.enableSyncMsg()) {
// 不允许推送同步消息
return
}
//if (rawMsg.contains("forward")) {
// LogCenter.log(record.extInfoForUI.decodeToString(), Level.WARN)
//}
if (record.senderUin != TicketSvc.getLongUin()
|| record.peerUin == TicketSvc.getLongUin()
) {
when (record.chatType) {
MsgConstant.KCHATTYPEGROUP -> {
LogCenter.log("群消息(group = ${record.peerName}(${record.peerUin}), uin = ${record.senderUin}, id = $msgHash|${record.msgSeq}, msg = $rawMsg)")
@ -83,12 +86,10 @@ internal object AioListener : IKernelMsgListener {
if(!GlobalEventTransmitter.MessageTransmitter.transGroupMessage(
record, record.elements, rawMsg, msgHash
)
) {
LogCenter.log("群消息推送失败 -> MessageTransmitter", Level.WARN)
)) {
LogCenter.log("群消息推送失败 -> 推送目标可能不存在", Level.WARN)
}
}
MsgConstant.KCHATTYPEC2C -> {
LogCenter.log("私聊消息(private = ${record.senderUin}, id = [$msgHash | ${record.msgId} | ${record.msgSeq}], msg = $rawMsg)")
ShamrockConfig.getPrivateRule()?.let { rule ->
@ -98,8 +99,7 @@ internal object AioListener : IKernelMsgListener {
if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage(
record, record.elements, rawMsg, msgHash
)
) {
)) {
LogCenter.log("私聊消息推送失败 -> MessageTransmitter", Level.WARN)
}
}
@ -115,55 +115,12 @@ internal object AioListener : IKernelMsgListener {
if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage(
record, record.elements, rawMsg, msgHash, tempSource = MessageTempSource.Group
)
) {
)) {
LogCenter.log("私聊临时消息推送失败 -> MessageTransmitter", Level.WARN)
}
}
else -> LogCenter.log("不支持PUSH事件: ${record.chatType}")
}
} else {
if (ShamrockConfig.enableSelfMsg())
LogCenter.log("自发消息(target = ${record.peerUin}, id = $msgHash, msg = $rawMsg)")
when (record.chatType) {
MsgConstant.KCHATTYPEGROUP -> {
if (!GlobalEventTransmitter.MessageTransmitter
.transGroupMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent)
) {
LogCenter.log("自发群消息推送失败 -> MessageTransmitter", Level.WARN)
}
}
MsgConstant.KCHATTYPEC2C -> {
if (!GlobalEventTransmitter.MessageTransmitter
.transPrivateMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent)
) {
LogCenter.log("自发私聊消息推送失败 -> MessageTransmitter", Level.WARN)
}
}
MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> {
if (!ShamrockConfig.allowTempSession()) return
if (!GlobalEventTransmitter.MessageTransmitter
.transPrivateMessage(
record,
record.elements,
rawMsg,
msgHash,
PostType.MsgSent,
MessageTempSource.Group
)
) {
LogCenter.log("自发私聊临时消息推送失败 -> MessageTransmitter", Level.WARN)
}
}
else -> LogCenter.log("不支持SELF PUSH事件: ${record.chatType}")
}
}
} catch (e: Throwable) {
LogCenter.log(e.stackTraceToString(), Level.WARN)
}