mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-12 14:00:12 +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 isMuted ()Z
|
||||||
public fun kick (Ljava/lang/String;)V
|
public fun kick (Ljava/lang/String;)V
|
||||||
public abstract fun kick (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
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 fun modifyAdmin (Z)V
|
||||||
public abstract fun modifyAdmin (ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
public abstract fun modifyAdmin (ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||||
public fun nudge ()Lnet/mamoe/mirai/message/action/MemberNudge;
|
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 isMuted ()Z
|
||||||
public fun kick (Ljava/lang/String;)V
|
public fun kick (Ljava/lang/String;)V
|
||||||
public abstract fun kick (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
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 fun modifyAdmin (Z)V
|
||||||
public abstract fun modifyAdmin (ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
public abstract fun modifyAdmin (ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||||
public fun nudge ()Lnet/mamoe/mirai/message/action/MemberNudge;
|
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 成员被踢出事件.
|
* @see MemberLeaveEvent.Kick 成员被踢出事件.
|
||||||
* @throws PermissionDeniedException 无权限修改时
|
* @throws PermissionDeniedException 无权限修改时
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public suspend fun kick(message: String)
|
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.data.MemberInfo
|
||||||
import net.mamoe.mirai.event.broadcast
|
import net.mamoe.mirai.event.broadcast
|
||||||
import net.mamoe.mirai.event.events.*
|
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.OnlineMessageSourceToTempImpl
|
||||||
import net.mamoe.mirai.internal.message.createMessageReceipt
|
import net.mamoe.mirai.internal.message.createMessageReceipt
|
||||||
import net.mamoe.mirai.internal.network.protocol.packet.chat.TroopManagement
|
import net.mamoe.mirai.internal.network.protocol.packet.chat.TroopManagement
|
||||||
@ -171,6 +169,10 @@ internal class NormalMemberImpl constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun kick(message: String) {
|
override suspend fun kick(message: String) {
|
||||||
|
kick(message, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun kick(message: String, block: Boolean) {
|
||||||
checkBotPermissionHigherThanThis("kick")
|
checkBotPermissionHigherThanThis("kick")
|
||||||
check(group.members[this.id] != null) {
|
check(group.members[this.id] != null) {
|
||||||
"Member ${this.id} had already been kicked from group ${group.id}"
|
"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(
|
val response: TroopManagement.Kick.Response = TroopManagement.Kick(
|
||||||
client = bot.client,
|
client = bot.client,
|
||||||
member = this@NormalMemberImpl,
|
member = this@NormalMemberImpl,
|
||||||
message = message
|
message = message,
|
||||||
|
ban = block
|
||||||
).sendAndExpect()
|
).sendAndExpect()
|
||||||
|
|
||||||
check(response.success) { "kick failed: ${response.ret}" }
|
check(response.success) { "kick failed: ${response.ret}" }
|
||||||
|
@ -192,7 +192,8 @@ internal class TroopManagement {
|
|||||||
operator fun invoke(
|
operator fun invoke(
|
||||||
client: QQAndroidClient,
|
client: QQAndroidClient,
|
||||||
member: Member,
|
member: Member,
|
||||||
message: String
|
message: String,
|
||||||
|
ban: Boolean
|
||||||
) = buildOutgoingUniPacket(client) {
|
) = buildOutgoingUniPacket(client) {
|
||||||
writeProtoBuf(
|
writeProtoBuf(
|
||||||
OidbSso.OIDBSSOPkg.serializer(),
|
OidbSso.OIDBSSOPkg.serializer(),
|
||||||
@ -206,7 +207,7 @@ internal class TroopManagement {
|
|||||||
Oidb0x8a0.KickMemberInfo(
|
Oidb0x8a0.KickMemberInfo(
|
||||||
optUint32Operate = 5,
|
optUint32Operate = 5,
|
||||||
optUint64MemberUin = member.id,
|
optUint64MemberUin = member.id,
|
||||||
optUint32Flag = 0
|
optUint32Flag = if (ban) 1 else 0 //1为拉黑
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
kickMsg = message.toByteArray()
|
kickMsg = message.toByteArray()
|
||||||
|
Loading…
Reference in New Issue
Block a user