10
10
package net.mamoe.mirai.contact.active
11
11
12
12
import kotlinx.coroutines.flow.Flow
13
+ import net.mamoe.mirai.contact.Group
13
14
import net.mamoe.mirai.utils.MiraiExperimentalApi
14
15
import net.mamoe.mirai.contact.Member
16
+ import net.mamoe.mirai.contact.announcement.OfflineAnnouncement
17
+ import net.mamoe.mirai.contact.announcement.OnlineAnnouncement
18
+ import net.mamoe.mirai.utils.NotStableForInheritance
15
19
import java.util.stream.Stream
16
20
21
+ /* *
22
+ * 表示一个群活跃度管理.
23
+ *
24
+ * ## 获取 [Active] 实例
25
+ *
26
+ * 只可以通过 [Group.active] 获取一个群的活跃度管理, 即 [Active] 实例.
27
+ *
28
+ * ### 等级头衔列表
29
+ *
30
+ * 通过 [rankTitles] 可以获取和设置一个群的等级头衔列表,
31
+ * 通过 [rankShow] 可以获取和设置一个群的等级头衔是否显示
32
+ *
33
+ * 设置时,修改将异步发送到服务器
34
+ *
35
+ * ### 活跃度记录
36
+ *
37
+ * 通过 [asFlow] 或 [asStream] 可以获取群活跃度记录*惰性*流,
38
+ * 在从流中收集数据时才会请求服务器获取数据. 通常建议在 Kotlin 使用协程的 [asFlow], 在 Java 使用 [asStream].
39
+ *
40
+ * 若要获取全部活跃度记录, 可使用 [toList].
41
+ *
42
+ * ### 活跃度图表
43
+ *
44
+ * 通过 [getChart] 可以获取活跃度图表,
45
+ * 包括
46
+ * * 每日总人数 [ActiveChart.members]
47
+ * * 每日活跃人数 [ActiveChart.actives]
48
+ * * 每日申请人数 [ActiveChart.sentences]
49
+ * * 每日入群人数 [ActiveChart.join]
50
+ * * 每日退群人数 [ActiveChart.exit]
51
+ */
52
+ @NotStableForInheritance
17
53
public interface Active {
18
54
19
55
/* *
@@ -37,17 +73,23 @@ public interface Active {
37
73
public var rankShow: Boolean
38
74
39
75
/* *
76
+ * 创建一个能获取该群内所有群活跃度记录的 [Flow]. 在 [Flow] 被使用时才会分页下载 [OnlineAnnouncement].
40
77
*
78
+ * 异常不会抛出, 只会记录到网络日志. 当获取发生异常时将会终止获取, 不影响已经成功获取的 [ActiveRecord] 和 [Flow] 的[收集][Flow.collect].
41
79
*/
42
80
public fun asFlow (): Flow <ActiveRecord >
43
81
44
82
/* *
83
+ * 创建一个能获取该群内所有群活跃度记录的 [Stream]. 在 [Stream] 被使用时才会分页下载 [OnlineAnnouncement].
84
+ *
85
+ * 异常不会抛出, 只会记录到网络日志. 当获取发生异常时将会终止获取, 不影响已经成功获取的 [ActiveRecord] 和 [Stream] 的[收集][Stream.collect].
45
86
*
87
+ * 实现细节: 为了适合 Java 调用, 实现类似为阻塞式的 [asFlow], 因此不建议在 Kotlin 使用. 在 Kotlin 请使用 [asFlow].
46
88
*/
47
89
public fun asStream (): Stream <ActiveRecord >
48
90
49
91
/* *
50
- *
92
+ * 获取活跃度图表数据
51
93
*/
52
94
public suspend fun getChart (): ActiveChart ?
53
95
}
0 commit comments