Skip to content

Commit fc6fdfc

Browse files
committed
add drink timer
1 parent 580a342 commit fc6fdfc

File tree

1 file changed

+76
-0
lines changed
  • src/main/kotlin/me/lightless/izumi/plugin/timer/impl

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
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

Comments
 (0)