Skip to content

Commit e0ca8e2

Browse files
committed
Update mirai to 2.0-M2
1 parent 16e3cdf commit e0ca8e2

4 files changed

Lines changed: 30 additions & 16 deletions

File tree

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
plugins {
33
kotlin("jvm") version "1.4.20"
44
kotlin("plugin.serialization") version "1.4.20"
5-
id("net.mamoe.mirai-console") version "2.0-M1-1"
5+
id("net.mamoe.mirai-console") version "2.0-M2"
66
}
77

88
group = "13554"
@@ -20,7 +20,7 @@ val hikariVersion = "3.4.5"
2020
val mysqlVersion = "8.0.19"
2121
val yamlKtVersion = "0.7.4"
2222
val quartzVersion = "2.3.2"
23-
val miraiSlf4jBridgeVersion = "1.0.1"
23+
val miraiSlf4jBridgeVersion = "1.1.0"
2424

2525
dependencies {
2626
testImplementation(kotlin("test-junit5"))

src/main/kotlin/stageguard/sctimetable/PluginMain.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ package stageguard.sctimetable
1111
import net.mamoe.mirai.Bot
1212
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
1313
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
14+
import net.mamoe.mirai.event.GlobalEventChannel
1415
import net.mamoe.mirai.event.ListeningStatus
1516
import net.mamoe.mirai.event.events.BotOnlineEvent
1617
import net.mamoe.mirai.event.subscribe
@@ -41,15 +42,14 @@ object PluginMain : KotlinPlugin(
4142

4243
logger.info { "Waiting target Bot ${PluginConfig.qq} goes online..." }
4344

44-
subscribe<BotOnlineEvent> {
45-
if(this.bot.id == PluginConfig.qq) {
46-
targetBotInstance = this.bot
47-
TimeProviderService.start()
48-
ScheduleListenerService.start()
49-
RequestHandlerService.start()
50-
BotEventRouteService.start()
51-
ListeningStatus.STOPPED
52-
} else ListeningStatus.LISTENING
45+
GlobalEventChannel.filter {
46+
it is BotOnlineEvent && it.bot.id == PluginConfig.qq
47+
}.subscribeOnce<BotOnlineEvent> {
48+
targetBotInstance = this.bot
49+
TimeProviderService.start()
50+
ScheduleListenerService.start()
51+
RequestHandlerService.start()
52+
BotEventRouteService.start()
5353
}
5454
}
5555

src/main/kotlin/stageguard/sctimetable/service/BotEventRouteService.kt

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,16 @@ import stageguard.sctimetable.utils.Either
3434
import java.lang.Exception
3535
import java.lang.management.ManagementFactory
3636
import com.sun.management.OperatingSystemMXBean
37+
import java.util.regex.Pattern
3738

3839
object BotEventRouteService : AbstractPluginManagedService() {
3940

4041
override val TAG: String = "BotEventRouteService"
4142

43+
private val TIME_PERIOD_EXPRESSION = Pattern.compile("(\\d){1,2}[::](\\d){1,2}-(\\d){1,2}[::](\\d){1,2}")
44+
4245
override suspend fun main() {
43-
subscribe<NewFriendRequestEvent> {
46+
PluginMain.targetBotInstance.eventChannel.subscribe<NewFriendRequestEvent> {
4447
if(this.bot.id == PluginConfig.qq) {
4548
this.accept()
4649
this@BotEventRouteService.launch(coroutineContext) {
@@ -53,7 +56,7 @@ object BotEventRouteService : AbstractPluginManagedService() {
5356
}
5457
ListeningStatus.LISTENING
5558
}
56-
subscribeAlways<FriendMessageEvent> { if(this.bot.id == PluginConfig.qq) {
59+
PluginMain.targetBotInstance.eventChannel.subscribeAlways<FriendMessageEvent> { if(this.bot.id == PluginConfig.qq) {
5760
val plainText = message.firstIsInstanceOrNull<PlainText>()?.content ?: ""
5861
when {
5962
plainText.matches(Regex("^登录超级(课程表|课表)")) -> {
@@ -98,7 +101,17 @@ object BotEventRouteService : AbstractPluginManagedService() {
98101
RequestHandlerService.sendRequest(Request.SyncSchoolWeekPeriodRequest(sender.id, receive(3) { it.toInt() > 0 }.toInt()))
99102
}
100103
"时间表" -> {
101-
send("正在修改当前时间表\n请输入一个数字表示当前周数")
104+
send("正在修改当前时间表\n请输入一个数字表示当前学校一天有几节课\n默认为 8 节课")
105+
val timetable = mutableListOf<Pair<String, String>>()
106+
repeat(judge(timeoutLimit = 30000L, tryLimit = 3) { it.toInt() > 2 }.toInt()) { it ->
107+
send("请输入第 ${it + 1} 节课的时间${if (it == 0) "\n例如:8:10-8:55\n注意:不要在中间加空格,小时是24小时制!" else ""}")
108+
timetable.add(judge(tryLimit = 5, timeoutLimit = 30000L) { res ->
109+
TIME_PERIOD_EXPRESSION.matcher(res).find()
110+
}.replace("", ":").split("-").let {
111+
it[0] to it[1]
112+
})
113+
}
114+
RequestHandlerService.sendRequest(Request.SyncSchoolTimetableRequest(sender.id, timetable, forceUpdate = true))
102115
}
103116
}
104117
}
@@ -181,7 +194,6 @@ object BotEventRouteService : AbstractPluginManagedService() {
181194
RequestHandlerService.sendRequest(Request.ChangeUserPasswordRequest(sender.id, it[0]))
182195
}
183196
} else sender.sendMessage("你还没有登录超级课表,无法修改密码")
184-
185197
}
186198
}
187199
plainText.startsWith("修改提前提醒时间") -> {

src/main/kotlin/stageguard/sctimetable/service/RequestHandlerService.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,6 @@ object RequestHandlerService : AbstractPluginManagedService(Dispatchers.IO) {
198198
BotEventRouteService.sendMessageNonBlock(request.qq, "成功从服务器同步学校的时间表信息。\n注意:这是首次同步您的学校时间表,若当前周数有误,请发送\"修改时间表\"修改。")
199199
sendRequest(Request.SyncSchoolWeekPeriodRequest(request.qq, 1))
200200
} else if(request.forceUpdate) {
201-
schoolTimeTable.first().delete()
202201
if(request.newTimetable == null) {
203202
//从服务器更新时间表
204203
syncFromServer()
@@ -212,6 +211,9 @@ object RequestHandlerService : AbstractPluginManagedService(Dispatchers.IO) {
212211
ScheduleListenerService.onChangeSchoolTimetable(user.first().schoolId)
213212
info("Sync timetable from user custom list for ${request.qq}'s school successfully, forceUpdate=${request.forceUpdate}.")
214213
BotEventRouteService.sendMessageNonBlock(request.qq, "已修正学校时间表,将影响学校的其他用户。")
214+
User.all().forEach {
215+
216+
}
215217
//提醒这个学校的其他人时间表已被手动修改
216218
}
217219
} else {

0 commit comments

Comments
 (0)