diff --git a/build.gradle.kts b/build.gradle.kts index 90335a7..c184219 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -41,8 +41,8 @@ implementation("org.jsoup:jsoup:1.18.1") implementation("org.mariadb.jdbc:mariadb-java-client:3.4.1") implementation("org.python:jython-standalone:2.7.3") - implementation("org.seleniumhq.selenium:selenium-edge-driver:4.23.0") - implementation("org.seleniumhq.selenium:selenium-java:4.23.0") + implementation("org.seleniumhq.selenium:selenium-edge-driver:4.23.1") + implementation("org.seleniumhq.selenium:selenium-java:4.23.1") implementation("org.tukaani:xz:1.10") testImplementation(kotlin("test")) } diff --git a/src/main/java/EventOuterClass.java b/src/main/java/EventOuterClass.java index 4b1f9b2..1b8414f 100644 --- a/src/main/java/EventOuterClass.java +++ b/src/main/java/EventOuterClass.java @@ -866,6 +866,10 @@ * ABILITY_CLASS_UP = 87; */ ABILITY_CLASS_UP(87), + /** + * NOTIFY_PASS = 88; + */ + NOTIFY_PASS(88), UNRECOGNIZED(-1), ; @@ -1230,6 +1234,10 @@ * ABILITY_CLASS_UP = 87; */ public static final int ABILITY_CLASS_UP_VALUE = 87; + /** + * NOTIFY_PASS = 88; + */ + public static final int NOTIFY_PASS_VALUE = 88; public final int getNumber() { @@ -1344,6 +1352,7 @@ case 85: return SET_ALLOWED_POSTABLE_ITEMS; case 86: return SET_POSTABLE_ITEM_BAND; case 87: return ABILITY_CLASS_UP; + case 88: return NOTIFY_PASS; default: return null; } } @@ -27473,7 +27482,7 @@ descriptor; static { java.lang.String[] descriptorData = { - "\n\013Event.proto\"\2321\n\005Event\022\016\n\006millis\030\001 \001(\003\022" + + "\n\013Event.proto\"\2531\n\005Event\022\016\n\006millis\030\001 \001(\003\022" + "\020\n\010avatarID\030\002 \001(\t\022\037\n\007eventID\030\003 \001(\0162\016.Eve" + "nt.EventID\022\014\n\004text\030\004 \001(\t\022\014\n\004data\030\005 \003(\014\0221" + "\n\017qwilightCallNet\030\006 \001(\0132\026.Event.Qwilight" + @@ -27587,7 +27596,7 @@ "ghtPostItem\022\021\n\thandlerID\030\001 \001(\t\022\022\n\nposted" + "Item\030\002 \001(\005\022\022\n\navatarName\030\003 \001(\t\022\014\n\004wait\030\004" + " \001(\001\"5\n\017AvatarNetStatus\022\013\n\007Default\020\000\022\t\n\005" + - "Clear\020\001\022\n\n\006Failed\020\002\"\270\r\n\007EventID\022\n\n\006LOG_I" + + "Clear\020\001\022\n\n\006Failed\020\002\"\311\r\n\007EventID\022\n\n\006LOG_I" + "N\020\000\022\016\n\nNOT_LOG_IN\020\001\022\n\n\006NOTIFY\020\002\022\r\n\tSITE_" + "YELL\020\003\022\017\n\013CALL_BUNDLE\020\004\022\022\n\016SAVE_AS_BUNDL" + "E\020\005\022\021\n\rSAVING_BUNDLE\020\006\022\017\n\013WIPE_BUNDLE\020\007\022" + @@ -27630,8 +27639,8 @@ "\024\n\020SET_AVATAR_GROUP\020R\022\r\n\tPOST_ITEM\020S\022\026\n\022" + "SET_VALID_NET_MODE\020T\022\036\n\032SET_ALLOWED_POST" + "ABLE_ITEMS\020U\022\032\n\026SET_POSTABLE_ITEM_BAND\020V" + - "\022\024\n\020ABILITY_CLASS_UP\020WB\n\n\010fastTextb\006prot" + - "o3" + "\022\024\n\020ABILITY_CLASS_UP\020W\022\017\n\013NOTIFY_PASS\020XB" + + "\n\n\010fastTextb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt b/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt index 2d772c9..cc31bfe 100644 --- a/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt +++ b/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt @@ -555,9 +555,10 @@ val bundleLength = fileChannel.size() }) val toNotifySaveBundle = DB.getNotifySaveBundle(targetAvatarID) - if (toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_CALLABLE || toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_AVATAR && isLoggedIn || toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_UBUNTU && DB.isCrossUbuntu( - avatarID, targetAvatarID - ) + if (toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_CALLABLE || (toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_AVATAR && isLoggedIn) || (toNotifySaveBundle == NOTIFY_SAVE_BUNDLE_UBUNTU && DB.isCrossUbuntu( + avatarID, + targetAvatarID + )) ) { AvatarHandler.getAvatar( targetAvatarID @@ -913,24 +914,25 @@ PlatformSystem.setAbilityName(avatarID) } - DB.getBetweenAvatars(targetComputing.noteID, avatarID, standBefore, stand) + DB.getBetweenAvatarIDs(targetComputing.noteID, avatarID, standBefore, stand) .forEach { val toNotifyPass = DB.getNotifyPass(it) - if (toNotifyPass == NOTIFY_PASS_AVATAR || toNotifyPass == NOTIFY_PASS_UBUNTU && DB.isCrossUbuntu( - avatarID, it - ) + if (toNotifyPass == NOTIFY_PASS_AVATAR || (toNotifyPass == NOTIFY_PASS_UBUNTU && DB.isCrossUbuntu( + avatarID, + it + )) ) { val avatar = AvatarHandler.getAvatar(it) if (avatar != null) { - avatar.send(EventOuterClass.Event.EventID.NOTIFY, object { - val text = String.format( - avatar.translateLanguage("passNotify"), - "${targetComputing.artist} - ${targetComputing.title}", - avatarName - ) - val isUrgent = false - val v = 3 + avatar.send(EventOuterClass.Event.EventID.NOTIFY_PASS, object { + val title = targetComputing.title + val artist = targetComputing.artist + val genre = targetComputing.genre + val levelText = targetComputing.levelText + val avatarName = this@QwilightAvatar.avatarName + val noteID = targetComputing.noteID }) + } else { } } } @@ -1177,9 +1179,7 @@ }) } else { AvatarHandler.getAvatar(text.avatarID)?.let { ioAvatar -> - DB.getIOCompetence( - targetAvatarID - ).thenAccept { + DB.getIOCompetence(targetAvatarID).thenAccept { if (it == IO_CALLABLE || it == IO_AVATAR && isLoggedIn || it == IO_UBUNTU && DB.isCrossUbuntu( avatarID, targetAvatarID ) diff --git a/src/main/kotlin/net/taehui/twilight/system/DB.kt b/src/main/kotlin/net/taehui/twilight/system/DB.kt index fb4e37f..fadb896 100644 --- a/src/main/kotlin/net/taehui/twilight/system/DB.kt +++ b/src/main/kotlin/net/taehui/twilight/system/DB.kt @@ -2233,13 +2233,12 @@ return Pair(commentID, standBefore) } - fun getBetweenAvatars(noteID: String, avatarID: String, standBefore: Int, stand: Int): Collection { + fun getBetweenAvatarIDs(noteID: String, avatarID: String, standBefore: Int, stand: Int): Collection { return pool.connection.use { it.prepareStatement( """ - SELECT Avatar_Name + SELECT Avatar FROM tw_comment - INNER JOIN tn_avatar ON tw_comment.Avatar = tn_avatar.Avatar_ID WHERE Note_ID = ? AND Avatar != ? AND ? <= Stand AND Stand < ? AND Is_Max = true """.trimIndent() ).use { dbStatement -> @@ -2248,11 +2247,11 @@ dbStatement.setInt(3, standBefore) dbStatement.setInt(4, stand) dbStatement.executeQuery().use { rows -> - val avatarNames = mutableListOf() + val avatarIDs = mutableListOf() while (rows.next()) { - avatarNames.add(rows.getString("Avatar_Name")) + avatarIDs.add(rows.getString("Avatar")) } - avatarNames + avatarIDs } } } diff --git a/src/main/resources/Language.json b/src/main/resources/Language.json index 034d286..049d07c 100644 --- a/src/main/resources/Language.json +++ b/src/main/resources/Language.json @@ -59,10 +59,6 @@ "ko-KR": "게임 결과가 아직 존재하지 않습니다.", "en-US": "Game results do not yet exist." }, - "passNotify": { - "ko-KR": "%s의 기록을 %s님이 추월함", - "en-US": "%s has overtaken the record of %s" - }, "pause": { "ko-KR": "서버 점검중입니다.", "en-US": "Checking the server."