chore: update github repo parser

This commit is contained in:
2024-10-03 16:35:38 +08:00
parent 385dcb4328
commit a349687e4f
5 files changed
+21 -27

No files matched your search

+4 -4
View File
@@ -32,10 +32,10 @@ tasks.compileJava {
dependencies { dependencies {
implementation(libs.rOneBot) implementation(libs.rOneBot)
implementation(libs.okhttp) implementation(libs.okhttp)
implementation(libs.exposedCore) implementation(libs.exposed.core)
implementation(libs.exposedJDBC) implementation(libs.exposed.jdbc)
implementation(libs.sqliteJDBC) implementation(libs.sqlite.jdbc)
implementation(libs.motdPinger) implementation(libs.motd.pinger)
implementation(libs.animated.gif.lib) implementation(libs.animated.gif.lib)
implementation(libs.simple.java.mail) implementation(libs.simple.java.mail)
implementation(libs.jsoup) implementation(libs.jsoup)
+5 -5
View File
@@ -1,6 +1,6 @@
[versions] [versions]
kotlinVersion = "2.0.10" kotlinVersion = "2.0.10"
ronebotVersion = "1.12.4" ronebotVersion = "1.12.6"
shadowVersion = "8.3.0" shadowVersion = "8.3.0"
okhttpVersion = "5.0.0-alpha.14" okhttpVersion = "5.0.0-alpha.14"
exposedVersion = "0.53.0" exposedVersion = "0.53.0"
@@ -14,11 +14,11 @@ zxingVersion = "3.5.3"
[libraries] [libraries]
rOneBot = { group = "cn.rtast", name = "ROneBot", version.ref = "ronebotVersion" } 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" } okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttpVersion" }
exposedCore = { group = "org.jetbrains.exposed", name = "exposed-core", version.ref = "exposedVersion" } exposed-core = { group = "org.jetbrains.exposed", name = "exposed-core", version.ref = "exposedVersion" }
exposedJDBC = { group = "org.jetbrains.exposed", name = "exposed-jdbc", version.ref = "exposedVersion" } exposed-jdbc = { group = "org.jetbrains.exposed", name = "exposed-jdbc", version.ref = "exposedVersion" }
sqliteJDBC = { group = "org.xerial", name = "sqlite-jdbc", version.ref = "sqliteJDBCVersion" } sqlite-jdbc = { group = "org.xerial", name = "sqlite-jdbc", version.ref = "sqliteJDBCVersion" }
animated-gif-lib = { group = "com.madgag", name = "animated-gif-lib", version.ref = "animatedGifLibVersion" } 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" } simple-java-mail = { group = "org.simplejavamail", name = "simple-java-mail", version.ref = "simpleJavaMailVersion" }
jsoup = { group = "org.jsoup", name = "jsoup", version.ref = "jsoupVersion" } jsoup = { group = "org.jsoup", name = "jsoup", version.ref = "jsoupVersion" }
@@ -27,6 +27,7 @@ import java.net.URI
class FancyBot : OneBotListener { class FancyBot : OneBotListener {
private val coroutineScope = CoroutineScope(Dispatchers.IO) private val coroutineScope = CoroutineScope(Dispatchers.IO)
private val githubRegex = Regex("""github\.com/([^/]+)/([^/]+)""")
override suspend fun onWebsocketOpenEvent() { override suspend fun onWebsocketOpenEvent() {
this.sendPrivateMessage(configManager.startUpNoticeUser, "FancyBot启动完成~") 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:")) { val matchedResult = githubRegex.find(message.rawMessage)
GitHubParseCommand.parse(this, message) if (message.rawMessage.contains("github.com") && matchedResult != null) {
val (user, repo) = matchedResult.destructured
GitHubParseCommand.parse(message, user, repo)
} }
if (message.rawMessage.startsWith("BV") || if (message.rawMessage.startsWith("BV") ||
message.rawMessage.startsWith("https://www.bilibili.com") || message.rawMessage.startsWith("https://www.bilibili.com") ||
message.rawMessage.contains("https://b23.tv/") || message.rawMessage.contains("https://b23.tv/") ||
message.message.find { it.type == ArrayMessageType.json } != null message.message.find { it.type == ArrayMessageType.json } != null
) { ) BVParseCommand.parse(this, message)
BVParseCommand.parse(this, message)
}
coroutineScope.launch { coroutineScope.launch {
message.message.forEach { message.message.forEach {
@@ -155,7 +155,7 @@ object BVParseCommand {
message.rawMessage message.rawMessage
} else if (message.rawMessage.split(" ").last().startsWith("https://b23.tv/")) { } else if (message.rawMessage.split(" ").last().startsWith("https://b23.tv/")) {
val shortUrl = message.rawMessage.split(" ").last() val shortUrl = message.rawMessage.split(" ").last()
BVParseCommand.getShortUrlBVID(shortUrl) getShortUrlBVID(shortUrl)
} else if (message.message.find { it.type == ArrayMessageType.json } != null) { } else if (message.message.find { it.type == ArrayMessageType.json } != null) {
val card = message.message.find { it.type == ArrayMessageType.json }!! val card = message.message.find { it.type == ArrayMessageType.json }!!
.data.data!!.toString().fromJson<CardShare>() .data.data!!.toString().fromJson<CardShare>()
@@ -166,7 +166,7 @@ object BVParseCommand {
if (!card.meta.detail.title.contains("哔哩哔哩")) return if (!card.meta.detail.title.contains("哔哩哔哩")) return
card.meta.detail.qqDocUrl card.meta.detail.qqDocUrl
} }
BVParseCommand.getShortUrlBVID(shortUrl) getShortUrlBVID(shortUrl)
} else { } else {
message.rawMessage.split("?").first() message.rawMessage.split("?").first()
.split("/") .split("/")
@@ -19,7 +19,6 @@ import cn.rtast.fancybot.util.str.setTruncate
import cn.rtast.fancybot.util.toByteArray import cn.rtast.fancybot.util.toByteArray
import cn.rtast.rob.entity.GroupMessage import cn.rtast.rob.entity.GroupMessage
import cn.rtast.rob.util.ob.MessageChain import cn.rtast.rob.util.ob.MessageChain
import cn.rtast.rob.util.ob.OneBotListener
import java.awt.Color import java.awt.Color
import java.awt.Font import java.awt.Font
import java.awt.RenderingHints import java.awt.RenderingHints
@@ -63,6 +62,8 @@ object GitHubParseCommand {
"Shell" to Color(137, 224, 81), "Shell" to Color(137, 224, 81),
"CMake" to Color(218, 52, 52), "CMake" to Color(218, 52, 52),
"HTML" to Color(227, 76, 38), "HTML" to Color(227, 76, 38),
"C#" to Color(23, 134, 0),
"F#" to Color(184, 69, 252),
"Unknown" to Color(211, 211, 211) "Unknown" to Color(211, 211, 211)
) )
@@ -114,20 +115,12 @@ object GitHubParseCommand {
return canvas.toByteArray().encodeToBase64() return canvas.toByteArray().encodeToBase64()
} }
suspend fun parse(listener: OneBotListener, message: GroupMessage) { suspend fun parse(message: GroupMessage, user: String, repo: String) {
val path = message.rawMessage
.replace(".git", "")
.replace("https://github.com/", "")
.replace("git@github.com:", "")
.split("/")
val user = path.first()
val repo = path.last()
val repoStat = this.getRepoStat(user, repo) val repoStat = this.getRepoStat(user, repo)
val image = this.createImage(repoStat) val image = this.createImage(repoStat)
val msg = MessageChain.Builder() val msg = MessageChain.Builder()
.addReply(message.messageId)
.addImage(image, true) .addImage(image, true)
.build() .build()
listener.sendGroupMessage(message.groupId, msg) message.reply(msg)
} }
} }