@@ -27,6 +27,7 @@ import com.sun.management.OperatingSystemMXBean
2727import net.mamoe.mirai.event.events.*
2828import net.mamoe.mirai.message.data.*
2929import net.mamoe.mirai.utils.MiraiExperimentalApi
30+ import org.jetbrains.exposed.sql.and
3031import stageguard.sctimetable.utils.*
3132import java.util.regex.Pattern
3233import 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