Skip to content

Commit ef0dc36

Browse files
committed
fix: many bugs :)
1 parent 01f6e9b commit ef0dc36

5 files changed

Lines changed: 241 additions & 118 deletions

File tree

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ object PluginMain : KotlinPlugin(
2929
name = "SuperCourseTimetable"
3030
)
3131
) {
32-
val quartzScheduler: Scheduler = StdSchedulerFactory.getDefaultScheduler().also { it.start() }
32+
val quartzScheduler: Scheduler by lazy {
33+
StdSchedulerFactory.getDefaultScheduler().also { it.start() }
34+
}
3335
lateinit var targetBotInstance: Bot
3436

3537
@MiraiExperimentalApi

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

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.sun.management.OperatingSystemMXBean
2727
import net.mamoe.mirai.event.events.*
2828
import net.mamoe.mirai.message.data.*
2929
import net.mamoe.mirai.utils.MiraiExperimentalApi
30+
import org.jetbrains.exposed.sql.and
3031
import stageguard.sctimetable.utils.*
3132
import java.util.regex.Pattern
3233
import kotlin.contracts.ExperimentalContracts
@@ -116,23 +117,48 @@ object BotEventRouteService : AbstractPluginManagedService() {
116117
startsWith("查看时间表") { Database.suspendQuery {
117118
val user = User.find { Users.qq eq subject.id }
118119
if(!user.empty()) {
119-
val schoolTimetable = SchoolTimetable.find { SchoolTimetables.schoolId eq user.first().schoolId }.first()
120-
var index = 1
121-
subject.sendMessage("${schoolTimetable.schoolName}\n" +
122-
"当前是第 ${TimeProviderService.currentWeekPeriod[schoolTimetable.schoolId]} 周。\n" +
123-
"时间表:\n" +
124-
"${schoolTimetable.scheduledTimeList.split("|").joinToString("\n") {
125-
"${index ++}. ${it.replace("-", "")}"
126-
}}\n" +
127-
"如果以上数据有任何问题,请发送\"修改时间表\"修改。"
128-
)
120+
val schoolTimetable = SchoolTimetable.find {
121+
(SchoolTimetables.schoolId eq user.first().schoolId) and
122+
(SchoolTimetables.beginYear eq TimeProviderService.currentSemesterBeginYear) and
123+
(SchoolTimetables.semester eq TimeProviderService.currentSemester)
124+
}.firstOrNull()
125+
if(schoolTimetable != null) {
126+
var index = 1
127+
subject.sendMessage("${schoolTimetable.schoolName}\n" +
128+
"${TimeProviderService.currentSemesterBeginYear} 学年第 ${TimeProviderService.currentSemester} 学期。\n" +
129+
"当前是第 ${TimeProviderService.currentWeekPeriod[schoolTimetable.schoolId]} 周。\n" +
130+
"时间表:\n" +
131+
"${schoolTimetable.scheduledTimeList.split("|").joinToString("\n") {
132+
"${index ++}. ${it.replace("-", "")}"
133+
}}\n" +
134+
"如果以上数据有任何问题,请发送\"修改时间表\"修改。"
135+
)
136+
} else interactiveConversation(scope = this@BotEventRouteService) {
137+
send("""
138+
未找到 ${TimeProviderService.currentSemesterBeginYear} 年第 ${TimeProviderService.currentSemester} 学期的时间表。
139+
要添加时间表吗?
140+
发送"沿用"将上个学期/学年的时间表沿用至当前学期。
141+
发送"同步"将从服务器重新同步时间表信息。
142+
否则取消操作。
143+
""".trimIndent())
144+
select(timeoutLimit = 10000L) {
145+
"沿用" { collect("syncType", 1) }
146+
"同步" { collect("syncType", 2) }
147+
}
148+
}.finish {
149+
when(it["syncType"].cast<Int>()) {
150+
1 -> RequestHandlerService.sendRequest(Request.InheritTimetableFromLastSemester(sender.id))
151+
2 -> RequestHandlerService.sendRequest(Request.SyncSchoolTimetableRequest(sender.id, forceUpdate = true))
152+
}
153+
}
154+
129155
} else subject.sendMessage("你还没有登录超级课表,无法同步时间表")
130156
} }
131157
finding(Regex("^今[日天]课[表程]")) { Database.suspendQuery {
132158
val user = User.find { Users.qq eq subject.id }
133159
if(!user.empty()) {
134-
val courses = ScheduleListenerService.getUserTodayCourses(subject.id, user.first().schoolId)
135160
val schoolTimetable = ScheduleListenerService.getSchoolTimetable(user.first().schoolId)
161+
val courses = ScheduleListenerService.getUserTodayCourses(subject.id, user.first().schoolId)
136162
var index = 1
137163
subject.sendMessage(if(courses.isEmpty()) "今日没有课程。" else courses.joinToString("\n") {
138164
"${index ++}. " + it.courseName + "(${schoolTimetable[it.startSection - 1].first.let { stamp ->

0 commit comments

Comments
 (0)