add retryCnt

This commit is contained in:
Simplxs 2024-01-14 16:24:05 +08:00
parent 0858395e60
commit ba7058a838
No known key found for this signature in database
GPG Key ID: E23537FF14DD6507
5 changed files with 64 additions and 43 deletions

View File

@ -24,31 +24,33 @@ internal object SendForwardMessage : IActionHandler() {
MessageHelper.obtainMessageTypeByDetailType(it)
} ?: run {
if (session.has("user_id")) {
if (session.has("group_id")) {
MsgConstant.KCHATTYPETEMPC2CFROMGROUP
} else {
MsgConstant.KCHATTYPEC2C
}
} else if (session.has("group_id")) {
MsgConstant.KCHATTYPEGROUP
} else {
return noParam("detail_type/message_type", session.echo)
}
}
val peerId = when (chatType) {
MsgConstant.KCHATTYPEGROUP -> session.getStringOrNull("group_id") ?: return noParam(
"group_id",
session.echo
)
MsgConstant.KCHATTYPEC2C -> session.getStringOrNull("user_id") ?: return noParam(
"user_id",
session.echo
)
val peerId = when(chatType) {
MsgConstant.KCHATTYPEGROUP -> session.getStringOrNull("group_id") ?: return noParam("group_id", session.echo)
MsgConstant.KCHATTYPEC2C, MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> session.getStringOrNull("user_id") ?: return noParam("user_id", session.echo)
else -> error("unknown chat type: $chatType")
}
if (session.isArray("messages")) {
val messages = session.getArray("messages")
invoke(chatType, peerId, messages, echo = session.echo)
val fromId = when(chatType) {
MsgConstant.KCHATTYPEGROUP, MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> session.getStringOrNull("group_id") ?: return noParam("group_id", session.echo)
MsgConstant.KCHATTYPEC2C -> session.getStringOrNull("user_id") ?: return noParam("user_id", session.echo)
else -> error("unknown chat type: $chatType")
}
return if (session.isArray("messages")) {
val messages = session.getArray("messages")
invoke(chatType, peerId, messages, fromId, echo = session.echo)
} else {
logic("未知格式合并转发消息", session.echo)
}
return logic("未知格式合并转发消息", session.echo)
} catch (e: ParamsException) {
return noParam(e.message!!, session.echo)
} catch (e: Throwable) {
@ -60,6 +62,7 @@ internal object SendForwardMessage : IActionHandler() {
chatType: Int,
peerId: String,
messages: JsonArray,
fromId: String = peerId,
echo: JsonElement = EmptyJsonString
): String {
kotlin.runCatching {
@ -148,7 +151,7 @@ internal object SendForwardMessage : IActionHandler() {
}.filterNotNull()
val from = MessageHelper.generateContact(MsgConstant.KCHATTYPEC2C, selfUin)
val to = MessageHelper.generateContact(chatType, peerId)
val to = MessageHelper.generateContact(chatType, peerId, fromId)
val uniseq = MessageHelper.generateMsgId(chatType)
msgService.multiForwardMsg(ArrayList<MultiMsgInfo>().apply {

View File

@ -9,7 +9,7 @@ internal object SendGroupForwardMessage: IActionHandler() {
val groupId = session.getString("group_id")
return if (session.isArray("messages")) {
val messages = session.getArray("messages")
SendForwardMessage(MsgConstant.KCHATTYPEGROUP, groupId, messages, session.echo)
SendForwardMessage(MsgConstant.KCHATTYPEGROUP, groupId, messages, echo = session.echo)
} else {
logic("未知格式合并转发消息", session.echo)
}

View File

@ -20,11 +20,15 @@ internal object SendMessage: IActionHandler() {
override suspend fun internalHandle(session: ActionSession): String {
val detailType = session.getStringOrNull("detail_type") ?: session.getStringOrNull("message_type")
try {
var chatType = detailType?.let {
val chatType = detailType?.let {
MessageHelper.obtainMessageTypeByDetailType(it)
} ?: run {
if (session.has("user_id")) {
if (session.has("group_id")) {
MsgConstant.KCHATTYPETEMPC2CFROMGROUP
} else {
MsgConstant.KCHATTYPEC2C
}
} else if (session.has("group_id")) {
MsgConstant.KCHATTYPEGROUP
} else {
@ -33,16 +37,13 @@ internal object SendMessage: IActionHandler() {
}
val peerId = when(chatType) {
MsgConstant.KCHATTYPEGROUP -> session.getStringOrNull("group_id") ?: return noParam("group_id", session.echo)
MsgConstant.KCHATTYPEC2C -> session.getStringOrNull("user_id") ?: return noParam("user_id", session.echo)
MsgConstant.KCHATTYPEC2C, MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> session.getStringOrNull("user_id") ?: return noParam("user_id", session.echo)
else -> error("unknown chat type: $chatType")
}
var fromId = peerId
if (chatType == MsgConstant.KCHATTYPEC2C) {
val groupId = session.getStringOrNull("group_id")
if (groupId != null) {
chatType = MsgConstant.KCHATTYPETEMPC2CFROMGROUP
fromId = groupId
}
val fromId = when(chatType) {
MsgConstant.KCHATTYPEGROUP, MsgConstant.KCHATTYPETEMPC2CFROMGROUP -> session.getStringOrNull("group_id") ?: return noParam("group_id", session.echo)
MsgConstant.KCHATTYPEC2C -> session.getStringOrNull("user_id") ?: return noParam("user_id", session.echo)
else -> error("unknown chat type: $chatType")
}
val retryCnt = session.getIntOrNull("retry_cnt")
return if (session.isString("message")) {

View File

@ -9,7 +9,7 @@ internal object SendPrivateForwardMessage : IActionHandler() {
val userId = session.getString("user_id")
return if (session.isArray("messages")) {
val messages = session.getArray("messages")
SendForwardMessage(MsgConstant.KCHATTYPEC2C, userId, messages, session.echo)
SendForwardMessage(MsgConstant.KCHATTYPEC2C, userId, messages, echo = session.echo)
} else {
logic("未知格式合并转发消息", session.echo)
}

View File

@ -113,6 +113,7 @@ fun Routing.messageAction() {
get {
val msgType = fetchGetOrThrow("message_type")
val message = fetchGetOrThrow("message")
val retryCnt = fetchGetOrNull("retry_cnt")?.toInt() ?: 3
val autoEscape = fetchGetOrNull("auto_escape")?.toBooleanStrict() ?: false
val chatType = MessageHelper.obtainMessageTypeByDetailType(msgType)
@ -124,12 +125,14 @@ fun Routing.messageAction() {
peerId = if (chatType == MsgConstant.KCHATTYPEC2C) userId!! else groupId!!,
message = message,
autoEscape = autoEscape,
fromId = groupId ?: userId ?: ""
fromId = groupId ?: userId ?: "",
retryCnt = retryCnt
), ContentType.Application.Json)
}
post {
val msgType = fetchPostOrThrow("message_type")
val chatType = MessageHelper.obtainMessageTypeByDetailType(msgType)
val retryCnt = fetchPostOrNull("retry_cnt")?.toInt() ?: 3
val userId = fetchPostOrNull("user_id")
val groupId = fetchPostOrNull("group_id")
@ -141,14 +144,16 @@ fun Routing.messageAction() {
chatType = chatType,
peerId = peerId,
message = listOf(fetchPostJsonObject("message")).jsonArray,
fromId = groupId ?: userId ?: ""
fromId = groupId ?: userId ?: "",
retryCnt = retryCnt
)
} else {
SendMessage(
chatType = chatType,
peerId = peerId,
message = fetchPostJsonArray("message"),
fromId = groupId ?: userId ?: ""
fromId = groupId ?: userId ?: "",
retryCnt = retryCnt
)
}
} else {
@ -159,7 +164,8 @@ fun Routing.messageAction() {
peerId = peerId,
message = fetchPostOrThrow("message"),
autoEscape = autoEscape,
fromId = groupId ?: userId ?: ""
fromId = groupId ?: userId ?: "",
retryCnt = retryCnt
)
}, ContentType.Application.Json)
}
@ -169,34 +175,38 @@ fun Routing.messageAction() {
get {
val groupId = fetchGetOrThrow("group_id")
val message = fetchGetOrThrow("message")
val retryCnt = fetchGetOrNull("retry_cnt")?.toInt() ?: 3
val autoEscape = fetchGetOrNull("auto_escape")?.toBooleanStrict() ?: false
call.respondText(SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, message, autoEscape))
call.respondText(SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, message, autoEscape, retryCnt = retryCnt))
}
post {
val groupId = fetchPostOrThrow("group_id")
val retryCnt = fetchPostOrNull("retry_cnt")?.toInt() ?: 3
val autoEscape = fetchPostOrNull("auto_escape")?.toBooleanStrict() ?: false
val result = if (isJsonData()) {
if (isJsonString("message")) {
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, fetchPostJsonString("message"), autoEscape)
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, fetchPostJsonString("message"), autoEscape, retryCnt = retryCnt)
} else {
if (isJsonObject("message")) {
SendMessage(
chatType = MsgConstant.KCHATTYPEGROUP,
peerId = groupId,
message = listOf(fetchPostJsonObject("message")).jsonArray
message = listOf(fetchPostJsonObject("message")).jsonArray,
retryCnt = retryCnt
)
} else {
SendMessage(
chatType = MsgConstant.KCHATTYPEGROUP,
peerId = groupId,
message = fetchPostJsonArray("message")
message = fetchPostJsonArray("message"),
retryCnt = retryCnt
)
}
}
} else {
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, fetchPostOrThrow("message"), autoEscape)
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, fetchPostOrThrow("message"), autoEscape, retryCnt = retryCnt)
}
call.respondText(result, ContentType.Application.Json)
@ -208,18 +218,21 @@ fun Routing.messageAction() {
val userId = fetchGetOrThrow("user_id")
val groupId = fetchGetOrNull("group_id")
val message = fetchGetOrThrow("message")
val retryCnt = fetchGetOrNull("retry_cnt")?.toInt() ?: 3
val autoEscape = fetchGetOrNull("auto_escape")?.toBooleanStrict() ?: false
call.respondText(SendMessage(
chatType = if (groupId == null) MsgConstant.KCHATTYPEC2C else MsgConstant.KCHATTYPETEMPC2CFROMGROUP,
peerId = userId,
message = message,
autoEscape = autoEscape,
fromId = groupId ?: userId
fromId = groupId ?: userId,
retryCnt = retryCnt
), ContentType.Application.Json)
}
post {
val userId = fetchPostOrThrow("user_id")
val groupId = fetchPostOrNull("group_id")
val retryCnt = fetchPostOrNull("retry_cnt")?.toInt() ?: 3
val autoEscape = fetchPostOrNull("auto_escape")?.toBooleanStrict() ?: false
val chatType = if (groupId == null) MsgConstant.KCHATTYPEC2C else MsgConstant.KCHATTYPETEMPC2CFROMGROUP
@ -233,7 +246,8 @@ fun Routing.messageAction() {
peerId = userId,
message = fetchPostJsonString("message"),
autoEscape = autoEscape,
fromId = fromId
fromId = fromId,
retryCnt = retryCnt
)
} else {
if (isJsonObject("message")) {
@ -241,14 +255,16 @@ fun Routing.messageAction() {
chatType = chatType,
peerId = userId,
message = listOf(fetchPostJsonObject("message")).jsonArray,
fromId = fromId
fromId = fromId,
retryCnt = retryCnt
)
} else {
SendMessage(
chatType = chatType,
peerId = userId,
message = fetchPostJsonArray("message"),
fromId = fromId
fromId = fromId,
retryCnt = retryCnt
)
}
}
@ -258,7 +274,8 @@ fun Routing.messageAction() {
peerId = userId,
message = fetchPostOrThrow("message"),
autoEscape = autoEscape,
fromId = fromId
fromId = fromId,
retryCnt = retryCnt
)
}