mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
Shamrock
: fix #149
This commit is contained in:
parent
d388e5df0c
commit
dcb2b0a26f
@ -279,19 +279,19 @@ object ShamrockConfig {
|
|||||||
return preferences.getBoolean("enable_self_msg", false)
|
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) {
|
fun setEnableSelfMsg(ctx: Context, v: Boolean) {
|
||||||
val preferences = ctx.getSharedPreferences("config", 0)
|
val preferences = ctx.getSharedPreferences("config", 0)
|
||||||
preferences.edit().putBoolean("enable_self_msg", v).apply()
|
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)
|
val preferences = ctx.getSharedPreferences("config", 0)
|
||||||
return preferences.getBoolean("echo_number", false)
|
preferences.edit().putBoolean("enable_sync_msg", v).apply()
|
||||||
}
|
|
||||||
|
|
||||||
fun setEchoNumber(ctx: Context, v: Boolean) {
|
|
||||||
val preferences = ctx.getSharedPreferences("config", 0)
|
|
||||||
preferences.edit().putBoolean("echo_number", v).apply()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getConfigMap(ctx: Context): Map<String, Any?> {
|
fun getConfigMap(ctx: Context): Map<String, Any?> {
|
||||||
@ -321,6 +321,7 @@ object ShamrockConfig {
|
|||||||
"echo_number" to preferences.getBoolean("echo_number", false),
|
"echo_number" to preferences.getBoolean("echo_number", false),
|
||||||
"shell" to preferences.getBoolean("shell", false),
|
"shell" to preferences.getBoolean("shell", false),
|
||||||
"alive_reply" to preferences.getBoolean("alive_reply", false),
|
"alive_reply" to preferences.getBoolean("alive_reply", false),
|
||||||
|
"enable_sync_msg" to preferences.getBoolean("enable_sync_msg", false),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,6 +264,17 @@ fun LabFragment() {
|
|||||||
thickness = 0.2.dp
|
thickness = 0.2.dp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Function(
|
||||||
|
title = "同步消息推送",
|
||||||
|
desc = "推送来自同号异设备消息,未做特殊处理请勿打开。",
|
||||||
|
descColor = it,
|
||||||
|
isSwitch = ShamrockConfig.enableSyncMsg(ctx)
|
||||||
|
) {
|
||||||
|
ShamrockConfig.setEnableSyncMsg(ctx, it)
|
||||||
|
ShamrockConfig.pushUpdate(ctx)
|
||||||
|
return@Function true
|
||||||
|
}
|
||||||
|
|
||||||
Function(
|
Function(
|
||||||
title = "自发消息推送",
|
title = "自发消息推送",
|
||||||
desc = "推送Bot发送的消息,未做特殊处理请勿打开。",
|
desc = "推送Bot发送的消息,未做特殊处理请勿打开。",
|
||||||
|
@ -76,6 +76,7 @@ internal object ShamrockConfig {
|
|||||||
|
|
||||||
putBoolean("enable_self_msg", intent.getBooleanExtra("enable_self_msg", false)) // 推送自己发的消息
|
putBoolean("enable_self_msg", intent.getBooleanExtra("enable_self_msg", false)) // 推送自己发的消息
|
||||||
putBoolean("shell", intent.getBooleanExtra("shell", false)) // 开启Shell接口
|
putBoolean("shell", intent.getBooleanExtra("shell", false)) // 开启Shell接口
|
||||||
|
putBoolean("enable_sync_msg", intent.getBooleanExtra("enable_sync_msg", false)) // 推送同步消息
|
||||||
|
|
||||||
putBoolean("isInit", true)
|
putBoolean("isInit", true)
|
||||||
}
|
}
|
||||||
@ -101,6 +102,10 @@ internal object ShamrockConfig {
|
|||||||
return Config.rules?.privateRule
|
return Config.rules?.privateRule
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun enableSyncMsg(): Boolean {
|
||||||
|
return mmkv.getBoolean("enable_sync_msg", false)
|
||||||
|
}
|
||||||
|
|
||||||
fun enableSelfMsg(): Boolean {
|
fun enableSelfMsg(): Boolean {
|
||||||
return mmkv.getBoolean("enable_self_msg", false)
|
return mmkv.getBoolean("enable_self_msg", false)
|
||||||
}
|
}
|
||||||
|
@ -67,103 +67,60 @@ internal object AioListener : IKernelMsgListener {
|
|||||||
MessageHelper.sendMessageWithoutMsgId(record.chatType, record.peerUin.toString(), "pong", { _, _ -> })
|
MessageHelper.sendMessageWithoutMsgId(record.chatType, record.peerUin.toString(), "pong", { _, _ -> })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (record.senderUin == TicketSvc.getLongUin() && !ShamrockConfig.enableSyncMsg()) {
|
||||||
|
// 不允许推送同步消息
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
//if (rawMsg.contains("forward")) {
|
//if (rawMsg.contains("forward")) {
|
||||||
// LogCenter.log(record.extInfoForUI.decodeToString(), Level.WARN)
|
// 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)")
|
|
||||||
ShamrockConfig.getGroupMsgRule()?.let { rule ->
|
|
||||||
if (!rule.black.isNullOrEmpty() && rule.black.contains(record.senderUin)) return
|
|
||||||
if (!rule.white.isNullOrEmpty() && !rule.white.contains(record.senderUin)) return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!GlobalEventTransmitter.MessageTransmitter.transGroupMessage(
|
when (record.chatType) {
|
||||||
record, record.elements, rawMsg, msgHash
|
MsgConstant.KCHATTYPEGROUP -> {
|
||||||
)
|
LogCenter.log("群消息(group = ${record.peerName}(${record.peerUin}), uin = ${record.senderUin}, id = $msgHash|${record.msgSeq}, msg = $rawMsg)")
|
||||||
) {
|
ShamrockConfig.getGroupMsgRule()?.let { rule ->
|
||||||
LogCenter.log("群消息推送失败 -> MessageTransmitter", Level.WARN)
|
if (!rule.black.isNullOrEmpty() && rule.black.contains(record.senderUin)) return
|
||||||
}
|
if (!rule.white.isNullOrEmpty() && !rule.white.contains(record.senderUin)) return
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgConstant.KCHATTYPEC2C -> {
|
if(!GlobalEventTransmitter.MessageTransmitter.transGroupMessage(
|
||||||
LogCenter.log("私聊消息(private = ${record.senderUin}, id = [$msgHash | ${record.msgId} | ${record.msgSeq}], msg = $rawMsg)")
|
record, record.elements, rawMsg, msgHash
|
||||||
ShamrockConfig.getPrivateRule()?.let { rule ->
|
)) {
|
||||||
if (!rule.black.isNullOrEmpty() && rule.black.contains(record.senderUin)) return
|
LogCenter.log("群消息推送失败 -> 推送目标可能不存在", Level.WARN)
|
||||||
if (!rule.white.isNullOrEmpty() && !rule.white.contains(record.senderUin)) return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage(
|
|
||||||
record, record.elements, rawMsg, msgHash
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
LogCenter.log("私聊消息推送失败 -> MessageTransmitter", Level.WARN)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> {
|
|
||||||
if (!ShamrockConfig.allowTempSession()) return
|
|
||||||
|
|
||||||
LogCenter.log("私聊临时消息(private = ${record.senderUin}, id = $msgHash, msg = $rawMsg)")
|
|
||||||
ShamrockConfig.getPrivateRule()?.let { rule ->
|
|
||||||
if (!rule.black.isNullOrEmpty() && rule.black.contains(record.senderUin)) return
|
|
||||||
if (!rule.white.isNullOrEmpty() && !rule.white.contains(record.senderUin)) return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage(
|
|
||||||
record, record.elements, rawMsg, msgHash, tempSource = MessageTempSource.Group
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
LogCenter.log("私聊临时消息推送失败 -> MessageTransmitter", Level.WARN)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> LogCenter.log("不支持PUSH事件: ${record.chatType}")
|
|
||||||
}
|
}
|
||||||
} else {
|
MsgConstant.KCHATTYPEC2C -> {
|
||||||
if (ShamrockConfig.enableSelfMsg())
|
LogCenter.log("私聊消息(private = ${record.senderUin}, id = [$msgHash | ${record.msgId} | ${record.msgSeq}], msg = $rawMsg)")
|
||||||
LogCenter.log("自发消息(target = ${record.peerUin}, id = $msgHash, msg = $rawMsg)")
|
ShamrockConfig.getPrivateRule()?.let { rule ->
|
||||||
|
if (!rule.black.isNullOrEmpty() && rule.black.contains(record.senderUin)) return
|
||||||
when (record.chatType) {
|
if (!rule.white.isNullOrEmpty() && !rule.white.contains(record.senderUin)) return
|
||||||
MsgConstant.KCHATTYPEGROUP -> {
|
|
||||||
if (!GlobalEventTransmitter.MessageTransmitter
|
|
||||||
.transGroupMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent)
|
|
||||||
) {
|
|
||||||
LogCenter.log("自发群消息推送失败 -> MessageTransmitter", Level.WARN)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgConstant.KCHATTYPEC2C -> {
|
if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage(
|
||||||
if (!GlobalEventTransmitter.MessageTransmitter
|
record, record.elements, rawMsg, msgHash
|
||||||
.transPrivateMessage(record, record.elements, rawMsg, msgHash, PostType.MsgSent)
|
)) {
|
||||||
) {
|
LogCenter.log("私聊消息推送失败 -> MessageTransmitter", Level.WARN)
|
||||||
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}")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> {
|
||||||
|
if (!ShamrockConfig.allowTempSession()) return
|
||||||
|
|
||||||
|
LogCenter.log("私聊临时消息(private = ${record.senderUin}, id = $msgHash, msg = $rawMsg)")
|
||||||
|
ShamrockConfig.getPrivateRule()?.let { rule ->
|
||||||
|
if (!rule.black.isNullOrEmpty() && rule.black.contains(record.senderUin)) return
|
||||||
|
if (!rule.white.isNullOrEmpty() && !rule.white.contains(record.senderUin)) return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!GlobalEventTransmitter.MessageTransmitter.transPrivateMessage(
|
||||||
|
record, record.elements, rawMsg, msgHash, tempSource = MessageTempSource.Group
|
||||||
|
)) {
|
||||||
|
LogCenter.log("私聊临时消息推送失败 -> MessageTransmitter", Level.WARN)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else -> LogCenter.log("不支持PUSH事件: ${record.chatType}")
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
LogCenter.log(e.stackTraceToString(), Level.WARN)
|
LogCenter.log(e.stackTraceToString(), Level.WARN)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user