|
|
@@ -5,8 +5,7 @@ package net.mamoe.mirai.contact.internal
|
|
|
import kotlinx.coroutines.CompletableDeferred
|
|
|
import kotlinx.coroutines.Deferred
|
|
|
import kotlinx.coroutines.sync.Mutex
|
|
|
-import kotlinx.coroutines.sync.withLock
|
|
|
-import net.mamoe.mirai.*
|
|
|
+import net.mamoe.mirai.Bot
|
|
|
import net.mamoe.mirai.contact.*
|
|
|
import net.mamoe.mirai.contact.data.Profile
|
|
|
import net.mamoe.mirai.message.Message
|
|
|
@@ -14,8 +13,12 @@ import net.mamoe.mirai.message.MessageChain
|
|
|
import net.mamoe.mirai.message.chain
|
|
|
import net.mamoe.mirai.message.singleChain
|
|
|
import net.mamoe.mirai.network.protocol.tim.packet.action.*
|
|
|
+import net.mamoe.mirai.network.qqAccount
|
|
|
import net.mamoe.mirai.network.sessionKey
|
|
|
+import net.mamoe.mirai.qqAccount
|
|
|
+import net.mamoe.mirai.sendPacket
|
|
|
import net.mamoe.mirai.utils.SuspendLazy
|
|
|
+import net.mamoe.mirai.withSession
|
|
|
|
|
|
internal sealed class ContactImpl : Contact {
|
|
|
abstract override suspend fun sendMessage(message: MessageChain)
|
|
|
@@ -37,14 +40,18 @@ internal data class GroupImpl internal constructor(override val bot: Bot, val gr
|
|
|
|
|
|
override suspend fun getMember(id: UInt): Member =
|
|
|
if (_members.containsKey(id)) _members[id]!!
|
|
|
- else membersLock.withLock {
|
|
|
+ else throw NoSuchElementException("No such member whose id is $id in group $id") /*membersLock.withLock {
|
|
|
_members.getOrPut(id) { MemberImpl(bot.getQQ(id), this) }
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
override suspend fun sendMessage(message: MessageChain) {
|
|
|
bot.sendPacket(GroupPacket.Message(bot.qqAccount, internalId, bot.sessionKey, message))
|
|
|
}
|
|
|
|
|
|
+ override suspend fun queryGroupInfo(): GroupInfo = bot.withSession {
|
|
|
+ GroupPacket.QueryGroupInfo(qqAccount, internalId, sessionKey).sendAndExpect()
|
|
|
+ }
|
|
|
+
|
|
|
override fun toString(): String = "Group(${this.id})"
|
|
|
}
|
|
|
|
|
|
@@ -74,6 +81,6 @@ internal data class QQImpl internal constructor(override val bot: Bot, override
|
|
|
/**
|
|
|
* 群成员
|
|
|
*/
|
|
|
-internal data class MemberImpl(private val delegate: QQ, override val group: Group) : QQ by delegate, Member {
|
|
|
- override fun toString(): String = "Member(${this.id})"
|
|
|
+internal data class MemberImpl(private val delegate: QQ, override val group: Group, override val permission: MemberPermission) : QQ by delegate, Member {
|
|
|
+ override fun toString(): String = "Member(id=${this.id}, permission=$permission)"
|
|
|
}
|