From a6bd48aa4ebbf63bd5d62b1c36c242bf3de86fcd Mon Sep 17 00:00:00 2001 From: jie65535 Date: Mon, 29 Jul 2024 10:24:36 +0800 Subject: [PATCH] Update version to v1.1.0 Add timeout config Add Forward messages when the text is too long --- build.gradle.kts | 8 +++---- gradle/wrapper/gradle-wrapper.properties | 2 +- src/main/kotlin/JChatGPT.kt | 27 +++++++++++++++++++++--- src/main/kotlin/PluginConfig.kt | 3 +++ 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f90829e..87e814f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - val kotlinVersion = "1.8.10" + val kotlinVersion = "1.9.24" kotlin("jvm") version kotlinVersion kotlin("plugin.serialization") version kotlinVersion @@ -7,15 +7,15 @@ plugins { } group = "top.jie65535.mirai" -version = "1.0.0" +version = "1.1.0" repositories { mavenCentral() maven("https://maven.aliyun.com/repository/public") } -val openaiClientVersion = "3.6.2" -val ktorVersion = "2.3.7" +val openaiClientVersion = "3.8.2" +val ktorVersion = "2.3.12" dependencies { implementation("com.aallam.openai:openai-client:$openaiClientVersion") diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3c472b9..7182a73 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip diff --git a/src/main/kotlin/JChatGPT.kt b/src/main/kotlin/JChatGPT.kt index 0737088..cf5c596 100644 --- a/src/main/kotlin/JChatGPT.kt +++ b/src/main/kotlin/JChatGPT.kt @@ -3,6 +3,8 @@ package top.jie65535.mirai import com.aallam.openai.api.chat.ChatCompletionRequest import com.aallam.openai.api.chat.ChatMessage import com.aallam.openai.api.chat.ChatRole +import com.aallam.openai.api.core.Role +import com.aallam.openai.api.http.Timeout import com.aallam.openai.api.model.ModelId import com.aallam.openai.client.OpenAI import com.aallam.openai.client.OpenAIHost @@ -23,12 +25,13 @@ import net.mamoe.mirai.message.data.* import net.mamoe.mirai.message.data.MessageSource.Key.quote import net.mamoe.mirai.message.sourceIds import net.mamoe.mirai.utils.info +import kotlin.time.Duration.Companion.milliseconds object JChatGPT : KotlinPlugin( JvmPluginDescription( id = "top.jie65535.mirai.JChatGPT", name = "J ChatGPT", - version = "1.0.0", + version = "1.1.0", ) { author("jie65535") } @@ -57,8 +60,10 @@ object JChatGPT : KotlinPlugin( } fun updateOpenAiToken(token: String) { + val timeout = PluginConfig.timeout.milliseconds openAi = OpenAI(token, - host = OpenAIHost(baseUrl = PluginConfig.openAiApi) + host = OpenAIHost(baseUrl = PluginConfig.openAiApi), + timeout = Timeout(request = timeout, connect = timeout, socket = timeout) ) } @@ -135,7 +140,23 @@ object JChatGPT : KotlinPlugin( } val reply = chatCompletion(history) history.add(reply) - val replyMsg = subject.sendMessage(message.quote() + (reply.content ?: "...")) + val content = reply.content ?: "..." + + val replyMsg = subject.sendMessage( + if (content.length < 100) { + message.quote() + content + } else { + // 消息内容太长则转为转发消息避免刷屏 + buildForwardMessage { + for (item in history) { + when (item.role) { + Role.User -> sender says (item.content ?: "...") + Role.Assistant -> bot says (item.content ?: "...") + } + } + } + } + ) val msgId = replyMsg.sourceIds[0] replyMap[msgId] = history replyQueue.add(msgId) diff --git a/src/main/kotlin/PluginConfig.kt b/src/main/kotlin/PluginConfig.kt index b08b765..09e3d68 100644 --- a/src/main/kotlin/PluginConfig.kt +++ b/src/main/kotlin/PluginConfig.kt @@ -22,4 +22,7 @@ object PluginConfig : AutoSavePluginConfig("Config") { @ValueDescription("好友是否自动拥有对话权限,默认是") val friendHasChatPermission: Boolean by value(true) + + @ValueDescription("等待响应超时时间,单位毫秒,默认60秒") + val timeout: Long by value(60000L) } \ No newline at end of file