1+ package me.lightless.izumi.plugin.timer.impl
2+
3+ import kotlinx.coroutines.delay
4+ import kotlinx.coroutines.launch
5+ import me.lightless.izumi.ApplicationContext
6+ import me.lightless.izumi.plugin.timer.ITimer
7+ import net.mamoe.mirai.message.data.buildMessageChain
8+ import org.joda.time.DateTime
9+ import org.joda.time.DateTimeConstants
10+ import org.slf4j.Logger
11+ import org.slf4j.LoggerFactory
12+
13+ @Suppress(" unused" )
14+ class Drink : ITimer {
15+
16+ val logger: Logger = LoggerFactory .getLogger(javaClass)
17+
18+ override val name: String
19+ get() = " drink"
20+
21+ // 每分钟运行一次
22+ override val period: Long
23+ get() = 60 * 1000
24+
25+ override suspend fun process () {
26+ val groupNumber = ApplicationContext .botConfig?.allowedGroups ? : listOf ()
27+ logger.debug(" groupNumber: $groupNumber " )
28+ val weekend = listOf (DateTimeConstants .SUNDAY , DateTimeConstants .SATURDAY )
29+
30+ while (true ) {
31+
32+ val datetime = DateTime ()
33+ val h = datetime.hourOfDay
34+ val m = datetime.minuteOfHour
35+
36+ // 跳过周末
37+ if (datetime.dayOfWeek in weekend) {
38+ delay(1000 * 3600 * 2 )
39+ continue
40+ }
41+
42+ if (h < 10 || h > 18 || h == 13 ) {
43+ delay(1000 * 30 )
44+ continue
45+ }
46+
47+ if (m == 0 ) {
48+ if (h == 18 ) {
49+ sendDrinkMsg(" 【喝水提醒小助手】\n 该喝水了哦~\n 晚上也要多~喝~水~哦~\n\n 防止痛风从喝水做起~" , groupNumber)
50+ } else if (h % 2 == 0 ) {
51+ sendDrinkMsg(" 【喝水提醒小助手】\n 该喝水了哦~\n\n 防止痛风从喝水做起~" , groupNumber)
52+ }
53+ // 整点的时候多sleep 5秒钟,防止在同一分钟内发出去多条消息
54+ delay(1000 * 65 )
55+ continue
56+ }
57+
58+ delay(1000 * 30 )
59+
60+ }
61+ }
62+
63+ private suspend fun sendDrinkMsg (msg : String , groupNumber : List <Long >) {
64+
65+ val bot = ApplicationContext .bot
66+
67+ groupNumber.forEach {
68+ bot?.launch {
69+ bot.getGroup(it)?.sendMessage(buildMessageChain {
70+ add(msg)
71+ })
72+ } ? : logger.error(" bot instance is null!" )
73+ }
74+ }
75+
76+ }
0 commit comments