From a349687e4fb1220629bfae5a6c28fa07a3e9e5b6 Mon Sep 17 00:00:00 2001 From: RTAkland Date: Thu, 3 Oct 2024 16:35:38 +0800 Subject: [PATCH] chore: update github repo parser --- build.gradle.kts | 8 ++++---- gradle/libs.versions.toml | 10 +++++----- src/main/kotlin/cn/rtast/fancybot/FancyBot.kt | 11 ++++++----- .../fancybot/commands/parse/BVParseCommand.kt | 4 ++-- .../fancybot/commands/parse/GitHubParseCommand.kt | 15 ++++----------- 5 files changed, 21 insertions(+), 27 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 06f2b14..0f8ce3b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,10 +32,10 @@ tasks.compileJava { dependencies { implementation(libs.rOneBot) implementation(libs.okhttp) - implementation(libs.exposedCore) - implementation(libs.exposedJDBC) - implementation(libs.sqliteJDBC) - implementation(libs.motdPinger) + implementation(libs.exposed.core) + implementation(libs.exposed.jdbc) + implementation(libs.sqlite.jdbc) + implementation(libs.motd.pinger) implementation(libs.animated.gif.lib) implementation(libs.simple.java.mail) implementation(libs.jsoup) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3f907a6..8146e7e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] kotlinVersion = "2.0.10" -ronebotVersion = "1.12.4" +ronebotVersion = "1.12.6" shadowVersion = "8.3.0" okhttpVersion = "5.0.0-alpha.14" exposedVersion = "0.53.0" @@ -14,11 +14,11 @@ zxingVersion = "3.5.3" [libraries] rOneBot = { group = "cn.rtast", name = "ROneBot", version.ref = "ronebotVersion" } -motdPinger = { group = "cn.rtast", name = "MotdPinger", version.ref = "motdPingerVersion" } +motd-pinger = { group = "cn.rtast", name = "MotdPinger", version.ref = "motdPingerVersion" } okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttpVersion" } -exposedCore = { group = "org.jetbrains.exposed", name = "exposed-core", version.ref = "exposedVersion" } -exposedJDBC = { group = "org.jetbrains.exposed", name = "exposed-jdbc", version.ref = "exposedVersion" } -sqliteJDBC = { group = "org.xerial", name = "sqlite-jdbc", version.ref = "sqliteJDBCVersion" } +exposed-core = { group = "org.jetbrains.exposed", name = "exposed-core", version.ref = "exposedVersion" } +exposed-jdbc = { group = "org.jetbrains.exposed", name = "exposed-jdbc", version.ref = "exposedVersion" } +sqlite-jdbc = { group = "org.xerial", name = "sqlite-jdbc", version.ref = "sqliteJDBCVersion" } animated-gif-lib = { group = "com.madgag", name = "animated-gif-lib", version.ref = "animatedGifLibVersion" } simple-java-mail = { group = "org.simplejavamail", name = "simple-java-mail", version.ref = "simpleJavaMailVersion" } jsoup = { group = "org.jsoup", name = "jsoup", version.ref = "jsoupVersion" } diff --git a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt index 2280bcd..264102f 100644 --- a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt +++ b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt @@ -27,6 +27,7 @@ import java.net.URI class FancyBot : OneBotListener { private val coroutineScope = CoroutineScope(Dispatchers.IO) + private val githubRegex = Regex("""github\.com/([^/]+)/([^/]+)""") override suspend fun onWebsocketOpenEvent() { this.sendPrivateMessage(configManager.startUpNoticeUser, "FancyBot启动完成~") @@ -68,17 +69,17 @@ class FancyBot : OneBotListener { } } - if (message.rawMessage.startsWith("https://github.com/") || message.rawMessage.startsWith("git@github.com:")) { - GitHubParseCommand.parse(this, message) + val matchedResult = githubRegex.find(message.rawMessage) + if (message.rawMessage.contains("github.com") && matchedResult != null) { + val (user, repo) = matchedResult.destructured + GitHubParseCommand.parse(message, user, repo) } if (message.rawMessage.startsWith("BV") || message.rawMessage.startsWith("https://www.bilibili.com") || message.rawMessage.contains("https://b23.tv/") || message.message.find { it.type == ArrayMessageType.json } != null - ) { - BVParseCommand.parse(this, message) - } + ) BVParseCommand.parse(this, message) coroutineScope.launch { message.message.forEach { diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/parse/BVParseCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/parse/BVParseCommand.kt index 27aef1a..38efb30 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/parse/BVParseCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/parse/BVParseCommand.kt @@ -155,7 +155,7 @@ object BVParseCommand { message.rawMessage } else if (message.rawMessage.split(" ").last().startsWith("https://b23.tv/")) { val shortUrl = message.rawMessage.split(" ").last() - BVParseCommand.getShortUrlBVID(shortUrl) + getShortUrlBVID(shortUrl) } else if (message.message.find { it.type == ArrayMessageType.json } != null) { val card = message.message.find { it.type == ArrayMessageType.json }!! .data.data!!.toString().fromJson() @@ -166,7 +166,7 @@ object BVParseCommand { if (!card.meta.detail.title.contains("哔哩哔哩")) return card.meta.detail.qqDocUrl } - BVParseCommand.getShortUrlBVID(shortUrl) + getShortUrlBVID(shortUrl) } else { message.rawMessage.split("?").first() .split("/") diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/parse/GitHubParseCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/parse/GitHubParseCommand.kt index fda5e73..29c47d2 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/parse/GitHubParseCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/parse/GitHubParseCommand.kt @@ -19,7 +19,6 @@ import cn.rtast.fancybot.util.str.setTruncate import cn.rtast.fancybot.util.toByteArray import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.util.ob.MessageChain -import cn.rtast.rob.util.ob.OneBotListener import java.awt.Color import java.awt.Font import java.awt.RenderingHints @@ -63,6 +62,8 @@ object GitHubParseCommand { "Shell" to Color(137, 224, 81), "CMake" to Color(218, 52, 52), "HTML" to Color(227, 76, 38), + "C#" to Color(23, 134, 0), + "F#" to Color(184, 69, 252), "Unknown" to Color(211, 211, 211) ) @@ -114,20 +115,12 @@ object GitHubParseCommand { return canvas.toByteArray().encodeToBase64() } - suspend fun parse(listener: OneBotListener, message: GroupMessage) { - val path = message.rawMessage - .replace(".git", "") - .replace("https://github.com/", "") - .replace("git@github.com:", "") - .split("/") - val user = path.first() - val repo = path.last() + suspend fun parse(message: GroupMessage, user: String, repo: String) { val repoStat = this.getRepoStat(user, repo) val image = this.createImage(repoStat) val msg = MessageChain.Builder() - .addReply(message.messageId) .addImage(image, true) .build() - listener.sendGroupMessage(message.groupId, msg) + message.reply(msg) } } \ No newline at end of file