Skip to content

Commit 0b1e775

Browse files
committed
Update mirai to 2.0-M2 & notify all school users when timetable is changed.
1 parent e0ca8e2 commit 0b1e775

3 files changed

Lines changed: 13 additions & 7 deletions

File tree

src/main/kotlin/stageguard/sctimetable/api/SuperCourseApiService.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
package stageguard.sctimetable.api
1010

1111
import io.ktor.client.HttpClient
12-
import io.ktor.client.engine.cio.*
12+
import io.ktor.client.engine.okhttp.*
1313
import io.ktor.client.request.*
1414
import io.ktor.client.statement.*
1515
import io.ktor.util.*
@@ -46,7 +46,7 @@ object SuperCourseApiService {
4646
private const val PHONE_VERSION = "30" // Android R
4747
private const val PHONE_MODEL = "vince" // XiaoMi Redmi 5 Plus
4848

49-
private val client = HttpClient(CIO)
49+
private val client = HttpClient(OkHttp)
5050

5151
private val jSessionIdRegExp = Pattern.compile("JSESSIONID=([0-9A-F]+-[a-z1-9]+);")
5252
private val serverIdRegexp = Pattern.compile("SERVERID=([0-9a-f|]+);")

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,10 @@ object BotEventRouteService : AbstractPluginManagedService() {
374374
}
375375
}
376376

377-
fun sendMessageNonBlock(friendId: Long, msg: String) = launch(coroutineContext) {
378-
if(PluginMain.targetBotInstance.isOnline) PluginMain.targetBotInstance.friends[friendId]?.sendMessage(msg)
377+
fun sendMessageNonBlock(friendId: Long, msg: String, randomDelayMax: Long = 0L) = launch(coroutineContext) {
378+
if(PluginMain.targetBotInstance.isOnline) {
379+
delay((Math.random() * randomDelayMax).toLong())
380+
PluginMain.targetBotInstance.friends[friendId]?.sendMessage(msg)
381+
}
379382
}
380383
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import org.jetbrains.exposed.sql.insert
1717
import stageguard.sctimetable.AbstractPluginManagedService
1818
import stageguard.sctimetable.PluginConfig
1919
import stageguard.sctimetable.PluginData
20+
import stageguard.sctimetable.PluginMain
2021
import stageguard.sctimetable.api.LoginCookieData
2122
import stageguard.sctimetable.api.LoginInfoData
2223
import stageguard.sctimetable.api.SuperCourseApiService
@@ -211,10 +212,10 @@ object RequestHandlerService : AbstractPluginManagedService(Dispatchers.IO) {
211212
ScheduleListenerService.onChangeSchoolTimetable(user.first().schoolId)
212213
info("Sync timetable from user custom list for ${request.qq}'s school successfully, forceUpdate=${request.forceUpdate}.")
213214
BotEventRouteService.sendMessageNonBlock(request.qq, "已修正学校时间表,将影响学校的其他用户。")
215+
//提醒这个学校的其他人时间表已被手动修改
214216
User.all().forEach {
215-
217+
if(it.qq != request.qq) BotEventRouteService.sendMessageNonBlock(it.qq, "您所在的学校时间表已经被同校用户 ${request.qq} 修改,请输入\"查看时间表\"查看。\n若修改有误或恶意修改,请联系对方。", 60000L)
216218
}
217-
//提醒这个学校的其他人时间表已被手动修改
218219
}
219220
} else {
220221
warning("Deny to sync school timetable for ${request.qq}'s school, forceUpdate=${request.forceUpdate}.")
@@ -239,7 +240,9 @@ object RequestHandlerService : AbstractPluginManagedService(Dispatchers.IO) {
239240
ScheduleListenerService.onChangeSchoolWeekPeriod(schoolTimetable.first().schoolId)
240241
info("Sync school week period for user ${request.qq}'s school successfully, currentWeek=${request.currentWeek}.")
241242
BotEventRouteService.sendMessageNonBlock(request.qq, "成功修改当前周数为第 ${request.currentWeek} 周。")
242-
//通知其他用户已被修改
243+
User.all().forEach {
244+
if(it.qq != request.qq) BotEventRouteService.sendMessageNonBlock(it.qq, "您所在的学校的当前周数已经被同校用户 ${request.qq} 修改,请输入\"查看时间表\"查看。\n若修改有误或恶意修改,请联系对方。", 60000L)
245+
}
243246
} else {
244247
error("Failed to sync school week period for user ${request.qq}'s school, reason: School doesn't exist.")
245248
BotEventRouteService.sendMessageNonBlock(request.qq, "无法修改当前周数,该学校不存在!\n如果你已经登录,请删除你的信息并重新登录。")

0 commit comments

Comments
 (0)