mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-11 21:30:11 +08:00
支持在踢出群成员时选择是否拉黑 (#1457)
* 支持在踢出群成员时选择是否拉黑 * fix binary-compatibility for kick NormalMember * change doc
This commit is contained in:
parent
615092e80b
commit
bd61c1e80d
@ -446,6 +446,8 @@ public abstract interface class net/mamoe/mirai/contact/NormalMember : net/mamoe
|
||||
public fun isMuted ()Z
|
||||
public fun kick (Ljava/lang/String;)V
|
||||
public abstract fun kick (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun kick (Ljava/lang/String;Z)V
|
||||
public abstract fun kick (Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun modifyAdmin (Z)V
|
||||
public abstract fun modifyAdmin (ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun nudge ()Lnet/mamoe/mirai/message/action/MemberNudge;
|
||||
|
@ -446,6 +446,8 @@ public abstract interface class net/mamoe/mirai/contact/NormalMember : net/mamoe
|
||||
public fun isMuted ()Z
|
||||
public fun kick (Ljava/lang/String;)V
|
||||
public abstract fun kick (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun kick (Ljava/lang/String;Z)V
|
||||
public abstract fun kick (Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun modifyAdmin (Z)V
|
||||
public abstract fun modifyAdmin (ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun nudge ()Lnet/mamoe/mirai/message/action/MemberNudge;
|
||||
|
@ -105,12 +105,26 @@ public interface NormalMember : Member {
|
||||
*
|
||||
* 管理员可踢出成员, 群主可踢出管理员和群员.
|
||||
*
|
||||
* @param block 为 `true` 时拉黑成员
|
||||
*
|
||||
* @see MemberLeaveEvent.Kick 成员被踢出事件.
|
||||
* @throws PermissionDeniedException 无权限修改时
|
||||
*
|
||||
*/
|
||||
public suspend fun kick(message: String, block: Boolean)
|
||||
|
||||
/**
|
||||
* 踢出该成员, 默认不拉黑
|
||||
*
|
||||
* 管理员可踢出成员, 群主可踢出管理员和群员.
|
||||
*
|
||||
* @see MemberLeaveEvent.Kick 成员被踢出事件.
|
||||
* @throws PermissionDeniedException 无权限修改时
|
||||
*
|
||||
*/
|
||||
public suspend fun kick(message: String)
|
||||
|
||||
|
||||
/**
|
||||
* 给予或移除群成员的管理员权限。
|
||||
*
|
||||
|
@ -21,8 +21,6 @@ import net.mamoe.mirai.contact.*
|
||||
import net.mamoe.mirai.data.MemberInfo
|
||||
import net.mamoe.mirai.event.broadcast
|
||||
import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.internal.message.OnlineMessageSourceToGroupImpl
|
||||
import net.mamoe.mirai.internal.message.OnlineMessageSourceToStrangerImpl
|
||||
import net.mamoe.mirai.internal.message.OnlineMessageSourceToTempImpl
|
||||
import net.mamoe.mirai.internal.message.createMessageReceipt
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.chat.TroopManagement
|
||||
@ -171,6 +169,10 @@ internal class NormalMemberImpl constructor(
|
||||
}
|
||||
|
||||
override suspend fun kick(message: String) {
|
||||
kick(message, false)
|
||||
}
|
||||
|
||||
override suspend fun kick(message: String, block: Boolean) {
|
||||
checkBotPermissionHigherThanThis("kick")
|
||||
check(group.members[this.id] != null) {
|
||||
"Member ${this.id} had already been kicked from group ${group.id}"
|
||||
@ -179,7 +181,8 @@ internal class NormalMemberImpl constructor(
|
||||
val response: TroopManagement.Kick.Response = TroopManagement.Kick(
|
||||
client = bot.client,
|
||||
member = this@NormalMemberImpl,
|
||||
message = message
|
||||
message = message,
|
||||
ban = block
|
||||
).sendAndExpect()
|
||||
|
||||
check(response.success) { "kick failed: ${response.ret}" }
|
||||
|
@ -192,7 +192,8 @@ internal class TroopManagement {
|
||||
operator fun invoke(
|
||||
client: QQAndroidClient,
|
||||
member: Member,
|
||||
message: String
|
||||
message: String,
|
||||
ban: Boolean
|
||||
) = buildOutgoingUniPacket(client) {
|
||||
writeProtoBuf(
|
||||
OidbSso.OIDBSSOPkg.serializer(),
|
||||
@ -206,7 +207,7 @@ internal class TroopManagement {
|
||||
Oidb0x8a0.KickMemberInfo(
|
||||
optUint32Operate = 5,
|
||||
optUint64MemberUin = member.id,
|
||||
optUint32Flag = 0
|
||||
optUint32Flag = if (ban) 1 else 0 //1为拉黑
|
||||
)
|
||||
),
|
||||
kickMsg = message.toByteArray()
|
||||
|
Loading…
Reference in New Issue
Block a user