mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
Shamrock
: #201
This commit is contained in:
parent
b9cfe73eae
commit
160d1a11ac
@ -31,10 +31,6 @@ import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
internal object MsgSvc: BaseSvc() {
|
||||
fun uploadForwardMsg(): Result<String> {
|
||||
return Result.failure(Exception("Not implemented"))
|
||||
}
|
||||
|
||||
suspend fun prepareTempChatFromGroup(
|
||||
groupId: String,
|
||||
peerId: String
|
||||
|
@ -9,16 +9,17 @@ internal object SendGroupMessage: IActionHandler() {
|
||||
override suspend fun internalHandle(session: ActionSession): String {
|
||||
val groupId = session.getString("group_id")
|
||||
val retryCnt = session.getIntOrNull("retry_cnt")
|
||||
val recallDuration = session.getLongOrNull("recall_duration")
|
||||
return if (session.isString("message")) {
|
||||
val autoEscape = session.getBooleanOrDefault("auto_escape", false)
|
||||
val message = session.getString("message")
|
||||
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, message, autoEscape, echo = session.echo, retryCnt = retryCnt ?: 3)
|
||||
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, message, autoEscape, echo = session.echo, retryCnt = retryCnt ?: 3, recallDuration = recallDuration)
|
||||
} else if (session.isObject("message")) {
|
||||
val message = session.getObject("message")
|
||||
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, listOf( message ).jsonArray, session.echo, retryCnt = retryCnt ?: 3)
|
||||
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, listOf( message ).jsonArray, session.echo, retryCnt = retryCnt ?: 3, recallDuration = recallDuration)
|
||||
} else {
|
||||
val message = session.getArray("message")
|
||||
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, message, session.echo, retryCnt = retryCnt ?: 3)
|
||||
SendMessage(MsgConstant.KCHATTYPEGROUP, groupId, message, session.echo, retryCnt = retryCnt ?: 3, recallDuration = recallDuration)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,10 @@
|
||||
package moe.fuqiuluo.shamrock.remote.action.handlers
|
||||
|
||||
import com.tencent.qqnt.kernel.nativeinterface.MsgConstant
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import moe.fuqiuluo.shamrock.remote.action.ActionSession
|
||||
import moe.fuqiuluo.shamrock.remote.action.IActionHandler
|
||||
import moe.fuqiuluo.shamrock.helper.MessageHelper
|
||||
@ -46,16 +50,17 @@ internal object SendMessage: IActionHandler() {
|
||||
else -> error("unknown chat type: $chatType")
|
||||
}
|
||||
val retryCnt = session.getIntOrNull("retry_cnt")
|
||||
val recallDuration = session.getLongOrNull("recall_duration")
|
||||
return if (session.isString("message")) {
|
||||
val autoEscape = session.getBooleanOrDefault("auto_escape", false)
|
||||
val message = session.getString("message")
|
||||
invoke(chatType, peerId, message, autoEscape, echo = session.echo, fromId = fromId, retryCnt = retryCnt ?: 3)
|
||||
invoke(chatType, peerId, message, autoEscape, echo = session.echo, fromId = fromId, retryCnt = retryCnt ?: 3, recallDuration = recallDuration)
|
||||
} else if (session.isArray("message")) {
|
||||
val message = session.getArray("message")
|
||||
invoke(chatType, peerId, message, session.echo, fromId = fromId, retryCnt ?: 3)
|
||||
invoke(chatType, peerId, message, session.echo, fromId = fromId, retryCnt ?: 3, recallDuration = recallDuration)
|
||||
} else {
|
||||
val message = session.getObject("message")
|
||||
invoke(chatType, peerId, listOf( message ).jsonArray, session.echo, fromId = fromId, retryCnt ?: 3)
|
||||
invoke(chatType, peerId, listOf( message ).jsonArray, session.echo, fromId = fromId, retryCnt ?: 3, recallDuration = recallDuration)
|
||||
}
|
||||
} catch (e: ParamsException) {
|
||||
return noParam(e.message!!, session.echo)
|
||||
@ -72,6 +77,7 @@ internal object SendMessage: IActionHandler() {
|
||||
autoEscape: Boolean,
|
||||
fromId: String = peerId,
|
||||
retryCnt: Int,
|
||||
recallDuration: Long?,
|
||||
echo: JsonElement = EmptyJsonString
|
||||
): String {
|
||||
//if (!ContactHelper.checkContactAvailable(chatType, peerId)) {
|
||||
@ -102,6 +108,7 @@ internal object SendMessage: IActionHandler() {
|
||||
if (pair.first <= 0) {
|
||||
return logic("send message failed", echo = echo)
|
||||
}
|
||||
recallDuration?.let { autoRecall(pair.second, it) }
|
||||
return ok(MessageResult(
|
||||
msgId = pair.second,
|
||||
time = (pair.first * 0.001).toLong()
|
||||
@ -110,7 +117,7 @@ internal object SendMessage: IActionHandler() {
|
||||
|
||||
// 消息段格式消息
|
||||
suspend operator fun invoke(
|
||||
chatType: Int, peerId: String, message: JsonArray, echo: JsonElement = EmptyJsonString, fromId: String = peerId, retryCnt: Int
|
||||
chatType: Int, peerId: String, message: JsonArray, echo: JsonElement = EmptyJsonString, fromId: String = peerId, retryCnt: Int, recallDuration: Long?,
|
||||
): String {
|
||||
//if (!ContactHelper.checkContactAvailable(chatType, peerId)) {
|
||||
// return logic("contact is not found", echo = echo)
|
||||
@ -123,12 +130,20 @@ internal object SendMessage: IActionHandler() {
|
||||
if (pair.first <= 0) {
|
||||
return logic("send message failed", echo = echo)
|
||||
}
|
||||
recallDuration?.let { autoRecall(pair.second, it) }
|
||||
return ok(MessageResult(
|
||||
msgId = pair.second,
|
||||
time = (pair.first * 0.001).toLong()
|
||||
), echo)
|
||||
}
|
||||
|
||||
private fun autoRecall(msgHash: Int, duration: Long) {
|
||||
GlobalScope.launch(Dispatchers.Default) {
|
||||
delay(duration)
|
||||
MsgSvc.recallMsg(msgHash)
|
||||
}
|
||||
}
|
||||
|
||||
override val requiredParams: Array<String> = arrayOf("message")
|
||||
|
||||
override fun path(): String = "send_message"
|
||||
|
@ -11,6 +11,7 @@ internal object SendPrivateMessage: IActionHandler() {
|
||||
val groupId = session.getStringOrNull("group_id")
|
||||
val chatType = if (groupId == null) MsgConstant.KCHATTYPEC2C else MsgConstant.KCHATTYPETEMPC2CFROMGROUP
|
||||
val retryCnt = session.getIntOrNull("retry_cnt")
|
||||
val recallDuration = session.getLongOrNull("recall_duration")
|
||||
return if (session.isString("message")) {
|
||||
val autoEscape = session.getBooleanOrDefault("auto_escape", false)
|
||||
val message = session.getString("message")
|
||||
@ -21,7 +22,8 @@ internal object SendPrivateMessage: IActionHandler() {
|
||||
autoEscape = autoEscape,
|
||||
echo = session.echo,
|
||||
fromId = groupId ?: userId,
|
||||
retryCnt = retryCnt ?: 3
|
||||
retryCnt = retryCnt ?: 3,
|
||||
recallDuration = recallDuration
|
||||
)
|
||||
} else if (session.isArray("message")) {
|
||||
val message = session.getArray("message")
|
||||
@ -31,7 +33,8 @@ internal object SendPrivateMessage: IActionHandler() {
|
||||
message = message,
|
||||
echo = session.echo,
|
||||
fromId = groupId ?: userId,
|
||||
retryCnt = retryCnt ?: 3
|
||||
retryCnt = retryCnt ?: 3,
|
||||
recallDuration = recallDuration
|
||||
)
|
||||
} else {
|
||||
val message = session.getObject("message")
|
||||
@ -41,7 +44,8 @@ internal object SendPrivateMessage: IActionHandler() {
|
||||
message = listOf( message ).jsonArray,
|
||||
echo = session.echo,
|
||||
fromId = groupId ?: userId,
|
||||
retryCnt = retryCnt ?: 3
|
||||
retryCnt = retryCnt ?: 3,
|
||||
recallDuration = recallDuration
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user