@@ -27,7 +27,9 @@ import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
27
27
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
28
28
import net.mamoe.mirai.internal.network.subAppId
29
29
import net.mamoe.mirai.internal.utils.io.serialization.*
30
+ import net.mamoe.mirai.utils.autoHexToBytes
30
31
import net.mamoe.mirai.utils.daysToSeconds
32
+ import net.mamoe.mirai.utils.encodeToString
31
33
32
34
internal class TroopManagement {
33
35
@@ -323,6 +325,53 @@ internal class TroopManagement {
323
325
}
324
326
}
325
327
328
+ class RichName (
329
+ val name : String ,
330
+ val control : ByteArray? = null
331
+ ) {
332
+ fun toRichCardNames (): List <Oidb0x8fc .RichCardNameElem > {
333
+ return if (control == null ) listOf (Oidb0x8fc .RichCardNameElem (text = name))
334
+ else listOf (Oidb0x8fc .RichCardNameElem (text = name))
335
+ }
336
+ }
337
+
338
+ internal object SetMemberNameNew : OutgoingPacketFactory<CommonOidbResponse<Oidb0x8fc.RspBody>>(" OidbSvc.0x8fc_3" ) {
339
+ operator fun invoke (
340
+ client : QQAndroidClient ,
341
+ groupCode : Long ,
342
+ memberId : Long ,
343
+ richName : RichName
344
+ ) = buildOutgoingUniPacket(client) {
345
+ writeOidb(
346
+ 2300 , 3 , Oidb0x8fc .ReqBody .serializer(), Oidb0x8fc .ReqBody (
347
+ groupCode = groupCode,
348
+ memLevelInfo = listOf (
349
+ Oidb0x8fc .MemberInfo (
350
+ uin = memberId,
351
+ memberCardName = richName.name,
352
+ commRichCardName = Oidb0x8fc .CommCardNameBuf (
353
+ richCardName = listOfNotNull(
354
+ if (richName.control != null ) Oidb0x8fc .RichCardNameElem (ctrl = richName.control) else null ,
355
+ Oidb0x8fc .RichCardNameElem (text = richName.name)
356
+ ),
357
+ coolId = 0 ,
358
+ ).toByteArray(Oidb0x8fc .CommCardNameBuf .serializer()),
359
+
360
+ )
361
+ ),
362
+ msgClientInfo = Oidb0x8fc .ClientInfo (
363
+ implat = 109 ,
364
+ ingClientver = client.buildVer
365
+ )
366
+ )
367
+ )
368
+ }
369
+
370
+ override suspend fun ByteReadPacket.decode (bot : QQAndroidBot ): CommonOidbResponse <Oidb0x8fc .RspBody > {
371
+ return readOidbRespCommon(Oidb0x8fc .RspBody .serializer()) { it }
372
+ }
373
+ }
374
+
326
375
internal object EditGroupNametag :
327
376
OutgoingPacketFactory <EditGroupNametag .Response >(" friendlist.ModifyGroupCardReq" ) {
328
377
object Response : Packet {
@@ -362,7 +411,8 @@ internal class TroopManagement {
362
411
gender = 0 ,
363
412
dwuin = member.id,
364
413
dwFlag = 31 ,
365
- sName = newName,
414
+ sName = " <" + " 25 C4 80 C4 80 07 C3 95" .autoHexToBytes()
415
+ .encodeToString() + " >" + newName,
366
416
sPhone = " " ,
367
417
sEmail = " " ,
368
418
sRemark = " "
0 commit comments