@@ -34,13 +34,16 @@ import stageguard.sctimetable.utils.Either
3434import java.lang.Exception
3535import java.lang.management.ManagementFactory
3636import com.sun.management.OperatingSystemMXBean
37+ import java.util.regex.Pattern
3738
3839object 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(" 修改提前提醒时间" ) -> {
0 commit comments