MemberInfoImpl.kt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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/master/LICENSE
  8. */
  9. package net.mamoe.mirai.internal.contact
  10. import net.mamoe.mirai.contact.MemberPermission
  11. import net.mamoe.mirai.data.MemberInfo
  12. import net.mamoe.mirai.internal.network.QQAndroidClient
  13. import net.mamoe.mirai.internal.network.protocol.data.jce.StTroopMemberInfo
  14. import net.mamoe.mirai.utils.currentTimeSeconds
  15. internal class MemberInfoImpl(
  16. override val uin: Long,
  17. override var nick: String,
  18. override var permission: MemberPermission,
  19. override var remark: String,
  20. override val nameCard: String,
  21. override val specialTitle: String,
  22. override val muteTimestamp: Int,
  23. override val anonymousId: String?,
  24. override val joinTimestamp: Int = currentTimeSeconds().toInt(),
  25. override var lastSpeakTimestamp: Int = 0,
  26. override val isOfficialBot: Boolean = false
  27. ) : MemberInfo, UserInfoImpl(uin, nick, remark) {
  28. constructor(
  29. client: QQAndroidClient,
  30. jceInfo: StTroopMemberInfo,
  31. groupOwnerId: Long
  32. ) : this(
  33. uin = jceInfo.memberUin,
  34. nick = jceInfo.nick,
  35. permission = when {
  36. jceInfo.memberUin == groupOwnerId -> MemberPermission.OWNER
  37. jceInfo.dwFlag == 1L -> MemberPermission.ADMINISTRATOR
  38. else -> MemberPermission.MEMBER
  39. },
  40. remark = jceInfo.autoRemark.orEmpty(),
  41. nameCard = jceInfo.sName.orEmpty(),
  42. specialTitle = jceInfo.sSpecialTitle.orEmpty(),
  43. muteTimestamp = jceInfo.dwShutupTimestap?.toInt() ?: 0,
  44. anonymousId = null,
  45. joinTimestamp = jceInfo.dwJoinTime?.toInt() ?: 0,
  46. lastSpeakTimestamp = jceInfo.dwLastSpeakTime?.toInt() ?: 0,
  47. isOfficialBot = client.groupConfig.isOfficialRobot(jceInfo.memberUin)
  48. )
  49. }