1
+ /*
2
+ * Copyright 2019-2021 Mamoe Technologies and contributors.
3
+ *
4
+ * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
5
+ * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
6
+ *
7
+ * https://github.com/mamoe/mirai/blob/dev/LICENSE
8
+ */
9
+
10
+ @file:JvmBlockingBridge
11
+
12
+ package net.mamoe.mirai.internal.notice.processors
13
+
14
+ import net.mamoe.kjbb.JvmBlockingBridge
15
+ import net.mamoe.mirai.contact.MemberPermission
16
+ import net.mamoe.mirai.event.events.BotMuteEvent
17
+ import net.mamoe.mirai.event.events.BotUnmuteEvent
18
+ import net.mamoe.mirai.event.events.MemberMuteEvent
19
+ import net.mamoe.mirai.event.events.MemberUnmuteEvent
20
+ import net.mamoe.mirai.internal.network.protocol.data.jce.MsgInfo
21
+ import net.mamoe.mirai.internal.network.protocol.data.jce.OnlinePushPack
22
+ import net.mamoe.mirai.internal.network.protocol.data.jce.ShareData
23
+ import net.mamoe.mirai.utils.currentTimeSeconds
24
+ import org.junit.jupiter.api.Test
25
+ import kotlin.test.assertEquals
26
+ import kotlin.test.assertIs
27
+
28
+
29
+ internal class MuteTest : AbstractNoticeProcessorTest () {
30
+ @Test
31
+ suspend fun `test bot mute` () {
32
+ suspend fun MuteTest.runTest () = use {
33
+ OnlinePushPack .SvcReqPushMsg (
34
+ uin = 1230001 ,
35
+ uMsgTime = 1629868940 ,
36
+ vMsgInfos = mutableListOf (
37
+ MsgInfo (
38
+ lFromUin = 2230203 ,
39
+ shMsgType = 732 ,
40
+ shMsgSeq = 8352 ,
41
+ strMsg = " " ,
42
+ uRealMsgTime = 1629868940 ,
43
+ vMsg = " 00 22 07 BB 0C 01 00 12 C4 B2 61 25 D3 8D 00 01 00 12 C4 B1 00 00 02 58" .hexToBytes(),
44
+ uAppShareID = 0 ,
45
+ vMsgCookies = " 08 DC 05 10 DC 85 E0 80 80 80 80 80 02 18 03 20 DE 86 03" .hexToBytes(),
46
+ lMsgUid = 144115188077429468 ,
47
+ lLastChangeTime = 1 ,
48
+ vCPicInfo = mutableListOf (),
49
+ stShareData = ShareData (
50
+ ),
51
+ lFromInstId = 0 ,
52
+ vRemarkOfSender = net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY ,
53
+ strFromMobile = " " ,
54
+ strFromName = " " ,
55
+ vNickName = mutableListOf (),
56
+ )
57
+ ),
58
+ svrip = - 1467578103 ,
59
+ vSyncCookie = net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY ,
60
+ vUinPairMsg = mutableListOf (),
61
+ mPreviews = mutableMapOf (
62
+ ),
63
+ )
64
+
65
+
66
+ }
67
+ setBot(1230001 )
68
+ .addGroup(2230203 , 1230002 , name = " testtest" ).apply {
69
+ addMember(1230002 , " user2" , MemberPermission .OWNER )
70
+ }
71
+
72
+ runTest().run {
73
+ assertEquals(1 , size)
74
+ val event = single()
75
+ assertIs<BotMuteEvent >(event)
76
+ assertEquals(600 , event.durationSeconds)
77
+ assertEquals(1230002 , event.operator .id)
78
+ }
79
+ }
80
+
81
+ @Test
82
+ suspend fun `test bot unmute` () {
83
+ suspend fun MuteTest.runTest () = use {
84
+ OnlinePushPack .SvcReqPushMsg (
85
+ uin = 1230001 ,
86
+ uMsgTime = 1629869459 ,
87
+ vMsgInfos = mutableListOf (
88
+ MsgInfo (
89
+ lFromUin = 2230203 ,
90
+ shMsgType = 732 ,
91
+ shMsgSeq = - 26716 ,
92
+ strMsg = " " ,
93
+ uRealMsgTime = 1629869459 ,
94
+ vMsg = " 00 22 07 BB 0C 01 00 12 C4 B2 61 25 D5 93 00 01 00 12 C4 B1 00 00 00 00" .hexToBytes(),
95
+ uAppShareID = 0 ,
96
+ vMsgCookies = " 08 DC 05 10 DC 85 E0 80 80 80 80 80 02 18 03 20 DE 86 03" .hexToBytes(),
97
+ lMsgUid = 144115188077429468 ,
98
+ lLastChangeTime = 1 ,
99
+ vCPicInfo = mutableListOf (),
100
+ stShareData = ShareData (
101
+ ),
102
+ lFromInstId = 0 ,
103
+ vRemarkOfSender = net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY ,
104
+ strFromMobile = " " ,
105
+ strFromName = " " ,
106
+ vNickName = mutableListOf (),
107
+ )
108
+ ),
109
+ svrip = 1554024713 ,
110
+ vSyncCookie = net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY ,
111
+ vUinPairMsg = mutableListOf (),
112
+ mPreviews = mutableMapOf (
113
+ ),
114
+ )
115
+ }
116
+
117
+ setBot(1230001 )
118
+ .addGroup(2230203 , 1230002 , name = " testtest" ).apply {
119
+ addMember(1230002 , " user2" , MemberPermission .OWNER )
120
+ addMember(1230003 , " user3" , MemberPermission .MEMBER )
121
+ botAsMember.apply {
122
+ _muteTimestamp = currentTimeSeconds().toInt() + 600
123
+ }
124
+ }
125
+
126
+ runTest().run {
127
+ assertEquals(1 , size)
128
+ val event = single()
129
+ assertIs<BotUnmuteEvent >(event)
130
+ assertEquals(1230002 , event.operator .id)
131
+ }
132
+
133
+
134
+ setBot(1230001 )
135
+ .addGroup(2230203 , 1230002 , name = " testtest" ).apply {
136
+ addMember(1230002 , " user2" , MemberPermission .OWNER )
137
+ addMember(1230003 , " user3" , MemberPermission .MEMBER )
138
+ botAsMember.apply {
139
+ _muteTimestamp = 0
140
+ }
141
+ }
142
+
143
+ runTest().run {
144
+ assertEquals(0 , size)
145
+ }
146
+ }
147
+
148
+ @Test
149
+ suspend fun `test member mute` () {
150
+ suspend fun MuteTest.runTest () = use {
151
+ OnlinePushPack .SvcReqPushMsg (
152
+ uin = 1230001 ,
153
+ uMsgTime = 1629870209 ,
154
+ vMsgInfos = mutableListOf (
155
+ MsgInfo (
156
+ lFromUin = 2230203 ,
157
+ shMsgType = 732 ,
158
+ shMsgSeq = 8159 ,
159
+ strMsg = " " ,
160
+ uRealMsgTime = 1629870209 ,
161
+ vMsg = " 00 22 07 BB 0C 01 00 12 C4 B2 61 25 D8 81 00 01 00 12 C4 B3 00 00 02 58" .hexToBytes(),
162
+ uAppShareID = 0 ,
163
+ vMsgCookies = " 08 DC 05 10 DC 85 E0 80 80 80 80 80 02 18 03 20 DE 86 03" .hexToBytes(),
164
+ lMsgUid = 144115188077429468 ,
165
+ lLastChangeTime = 1 ,
166
+ vCPicInfo = mutableListOf (),
167
+ stShareData = ShareData (
168
+ ),
169
+ lFromInstId = 0 ,
170
+ vRemarkOfSender = net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY ,
171
+ strFromMobile = " " ,
172
+ strFromName = " " ,
173
+ vNickName = mutableListOf (),
174
+ )
175
+ ),
176
+ svrip = - 1763941110 ,
177
+ vSyncCookie = net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY ,
178
+ vUinPairMsg = mutableListOf (),
179
+ mPreviews = mutableMapOf (
180
+ ),
181
+ )
182
+ }
183
+
184
+ setBot(1230001 )
185
+ .addGroup(2230203 , 1230002 , name = " testtest" ).apply {
186
+ addMember(1230002 , " user2" , MemberPermission .OWNER )
187
+ addMember(1230003 , " user3" , MemberPermission .MEMBER )
188
+ }
189
+
190
+ runTest().run {
191
+ assertEquals(1 , size)
192
+ val event = single()
193
+ assertIs<MemberMuteEvent >(event)
194
+ assertEquals(600 , event.durationSeconds)
195
+ assertEquals(1230002 , event.operator ?.id)
196
+ }
197
+ }
198
+
199
+
200
+ @Test
201
+ suspend fun `test member unmute` () {
202
+ suspend fun MuteTest.runTest () = use {
203
+ OnlinePushPack .SvcReqPushMsg (
204
+ uin = 1230001 ,
205
+ uMsgTime = 1629869825 ,
206
+ vMsgInfos = mutableListOf (
207
+ MsgInfo (
208
+ lFromUin = 2230203 ,
209
+ shMsgType = 732 ,
210
+ shMsgSeq = 16929 ,
211
+ strMsg = " " ,
212
+ uRealMsgTime = 1629869825 ,
213
+ vMsg = " 00 22 07 BB 0C 01 00 12 C4 B2 61 25 D7 02 00 01 00 12 C4 B3 00 00 00 00" .hexToBytes(),
214
+ uAppShareID = 0 ,
215
+ vMsgCookies = " 08 DC 05 10 DC 85 E0 80 80 80 80 80 02 18 03 20 DE 86 03" .hexToBytes(),
216
+ lMsgUid = 144115188077429468 ,
217
+ lLastChangeTime = 1 ,
218
+ vCPicInfo = mutableListOf (),
219
+ stShareData = ShareData (
220
+ ),
221
+ lFromInstId = 0 ,
222
+ vRemarkOfSender = net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY ,
223
+ strFromMobile = " " ,
224
+ strFromName = " " ,
225
+ vNickName = mutableListOf (),
226
+ )
227
+ ),
228
+ svrip = 2040629513 ,
229
+ vSyncCookie = net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY ,
230
+ vUinPairMsg = mutableListOf (),
231
+ mPreviews = mutableMapOf (
232
+ ),
233
+ )
234
+ }
235
+
236
+ setBot(1230001 )
237
+ .addGroup(2230203 , 1230002 , name = " testtest" ).apply {
238
+ addMember(1230002 , " user2" , MemberPermission .OWNER )
239
+ addMember(1230003 , " user3" , MemberPermission .MEMBER ).apply {
240
+ _muteTimestamp = currentTimeSeconds().toInt() + 600
241
+ }
242
+ }
243
+
244
+ runTest().run {
245
+ assertEquals(1 , size)
246
+ val event = single()
247
+ assertIs<MemberUnmuteEvent >(event)
248
+ assertEquals(1230002 , event.operator ?.id)
249
+ }
250
+
251
+
252
+ setBot(1230001 )
253
+ .addGroup(2230203 , 1230002 , name = " testtest" ).apply {
254
+ addMember(1230002 , " user2" , MemberPermission .OWNER )
255
+ addMember(1230003 , " user3" , MemberPermission .MEMBER ).apply {
256
+ _muteTimestamp = 0
257
+ }
258
+ }
259
+
260
+ runTest().run {
261
+ assertEquals(0 , size)
262
+ }
263
+ }
264
+
265
+ }
0 commit comments