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

View File

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

View File

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

View File

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

View File

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