Skip to content

Commit 065d36f

Browse files
authored
Merge pull request #286 from simple-robot/dev/support-channel-user-list-API
支持获取语音频道用户列表api
2 parents 4857ecd + c187965 commit 065d36f

File tree

8 files changed

+826
-1
lines changed

8 files changed

+826
-1
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ ktor-client-core = { group = "io.ktor", name = "ktor-client-core", version.ref =
7777
ktor-client-java = { group = "io.ktor", name = "ktor-client-java", version.ref = "ktor" }
7878
ktor-client-cio = { group = "io.ktor", name = "ktor-client-cio", version.ref = "ktor" }
7979
ktor-client-ws = { group = "io.ktor", name = "ktor-client-websockets", version.ref = "ktor" }
80+
ktor-client-mock = { group = "io.ktor", name = "ktor-client-mock", version.ref = "ktor" }
8081

8182
ktor-client-js = { group = "io.ktor", name = "ktor-client-js", version.ref = "ktor" }
8283

simbot-component-kook-api/api/simbot-component-kook-api.api

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,18 @@ public final class love/forte/simbot/kook/api/channel/ChannelInfo$Companion {
505505
public final fun serializer ()Lkotlinx/serialization/KSerializer;
506506
}
507507

508+
public final class love/forte/simbot/kook/api/channel/ChannelKickoutApi : love/forte/simbot/kook/api/KookPostApi {
509+
public static final field Factory Llove/forte/simbot/kook/api/channel/ChannelKickoutApi$Factory;
510+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
511+
public static final fun create (Ljava/lang/String;Ljava/lang/String;)Llove/forte/simbot/kook/api/channel/ChannelKickoutApi;
512+
public fun getBody ()Ljava/lang/Object;
513+
public fun getResultDeserializationStrategy ()Lkotlinx/serialization/DeserializationStrategy;
514+
}
515+
516+
public final class love/forte/simbot/kook/api/channel/ChannelKickoutApi$Factory {
517+
public final fun create (Ljava/lang/String;Ljava/lang/String;)Llove/forte/simbot/kook/api/channel/ChannelKickoutApi;
518+
}
519+
508520
public final class love/forte/simbot/kook/api/channel/ChannelView {
509521
public static final field Companion Llove/forte/simbot/kook/api/channel/ChannelView$Companion;
510522
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZIZLjava/lang/String;Ljava/util/List;ILjava/util/List;)V
@@ -652,6 +664,17 @@ public final class love/forte/simbot/kook/api/channel/GetChannelListApiKt {
652664
public static synthetic fun toChannel$default (Llove/forte/simbot/kook/api/channel/ChannelInfo;Ljava/lang/String;Ljava/lang/String;ILjava/util/List;Ljava/util/List;IZILjava/lang/Object;)Llove/forte/simbot/kook/objects/Channel;
653665
}
654666

667+
public final class love/forte/simbot/kook/api/channel/GetChannelUserListApi : love/forte/simbot/kook/api/KookGetApi {
668+
public static final field Factory Llove/forte/simbot/kook/api/channel/GetChannelUserListApi$Factory;
669+
public synthetic fun <init> (Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
670+
public static final fun create (Ljava/lang/String;)Llove/forte/simbot/kook/api/channel/GetChannelUserListApi;
671+
public fun getResultDeserializationStrategy ()Lkotlinx/serialization/DeserializationStrategy;
672+
}
673+
674+
public final class love/forte/simbot/kook/api/channel/GetChannelUserListApi$Factory {
675+
public final fun create (Ljava/lang/String;)Llove/forte/simbot/kook/api/channel/GetChannelUserListApi;
676+
}
677+
655678
public final class love/forte/simbot/kook/api/channel/GetChannelViewApi : love/forte/simbot/kook/api/KookGetApi {
656679
public static final field Factory Llove/forte/simbot/kook/api/channel/GetChannelViewApi$Factory;
657680
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/Boolean;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
@@ -666,6 +689,103 @@ public final class love/forte/simbot/kook/api/channel/GetChannelViewApi$Factory
666689
public static synthetic fun create$default (Llove/forte/simbot/kook/api/channel/GetChannelViewApi$Factory;Ljava/lang/String;Ljava/lang/Boolean;ILjava/lang/Object;)Llove/forte/simbot/kook/api/channel/GetChannelViewApi;
667690
}
668691

692+
public final class love/forte/simbot/kook/api/channel/LiveInfo {
693+
public static final field Companion Llove/forte/simbot/kook/api/channel/LiveInfo$Companion;
694+
public fun <init> ()V
695+
public fun <init> (ZILjava/lang/String;J)V
696+
public synthetic fun <init> (ZILjava/lang/String;JILkotlin/jvm/internal/DefaultConstructorMarker;)V
697+
public final fun component1 ()Z
698+
public final fun component2 ()I
699+
public final fun component3 ()Ljava/lang/String;
700+
public final fun component4 ()J
701+
public final fun copy (ZILjava/lang/String;J)Llove/forte/simbot/kook/api/channel/LiveInfo;
702+
public static synthetic fun copy$default (Llove/forte/simbot/kook/api/channel/LiveInfo;ZILjava/lang/String;JILjava/lang/Object;)Llove/forte/simbot/kook/api/channel/LiveInfo;
703+
public fun equals (Ljava/lang/Object;)Z
704+
public final fun getAudienceCount ()I
705+
public final fun getInLive ()Z
706+
public final fun getLiveStartTime ()J
707+
public final fun getLiveThumb ()Ljava/lang/String;
708+
public fun hashCode ()I
709+
public fun toString ()Ljava/lang/String;
710+
}
711+
712+
public synthetic class love/forte/simbot/kook/api/channel/LiveInfo$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
713+
public static final field INSTANCE Llove/forte/simbot/kook/api/channel/LiveInfo$$serializer;
714+
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
715+
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
716+
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Llove/forte/simbot/kook/api/channel/LiveInfo;
717+
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
718+
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
719+
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Llove/forte/simbot/kook/api/channel/LiveInfo;)V
720+
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
721+
}
722+
723+
public final class love/forte/simbot/kook/api/channel/LiveInfo$Companion {
724+
public final fun serializer ()Lkotlinx/serialization/KSerializer;
725+
}
726+
727+
public final class love/forte/simbot/kook/api/channel/VoiceChannelUser : love/forte/simbot/kook/objects/User {
728+
public static final field Companion Llove/forte/simbot/kook/api/channel/VoiceChannelUser$Companion;
729+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/util/List;ZZZZZJJLlove/forte/simbot/kook/api/channel/LiveInfo;)V
730+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/util/List;ZZZZZJJLlove/forte/simbot/kook/api/channel/LiveInfo;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
731+
public final fun component1 ()Ljava/lang/String;
732+
public final fun component10 ()Ljava/util/List;
733+
public final fun component11 ()Z
734+
public final fun component12 ()Z
735+
public final fun component13 ()Z
736+
public final fun component14 ()Z
737+
public final fun component15 ()Z
738+
public final fun component16 ()J
739+
public final fun component17 ()J
740+
public final fun component18 ()Llove/forte/simbot/kook/api/channel/LiveInfo;
741+
public final fun component2 ()Ljava/lang/String;
742+
public final fun component3 ()Ljava/lang/String;
743+
public final fun component4 ()Ljava/lang/String;
744+
public final fun component5 ()Z
745+
public final fun component6 ()Ljava/lang/String;
746+
public final fun component7 ()I
747+
public final fun component8 ()Ljava/lang/String;
748+
public final fun component9 ()Ljava/lang/String;
749+
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/util/List;ZZZZZJJLlove/forte/simbot/kook/api/channel/LiveInfo;)Llove/forte/simbot/kook/api/channel/VoiceChannelUser;
750+
public static synthetic fun copy$default (Llove/forte/simbot/kook/api/channel/VoiceChannelUser;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/util/List;ZZZZZJJLlove/forte/simbot/kook/api/channel/LiveInfo;ILjava/lang/Object;)Llove/forte/simbot/kook/api/channel/VoiceChannelUser;
751+
public fun equals (Ljava/lang/Object;)Z
752+
public final fun getActiveTime ()J
753+
public fun getAvatar ()Ljava/lang/String;
754+
public fun getId ()Ljava/lang/String;
755+
public fun getIdentifyNum ()Ljava/lang/String;
756+
public final fun getJoinedAt ()J
757+
public final fun getLiveInfo ()Llove/forte/simbot/kook/api/channel/LiveInfo;
758+
public fun getNickname ()Ljava/lang/String;
759+
public final fun getOs ()Ljava/lang/String;
760+
public fun getRoles ()Ljava/util/List;
761+
public fun getStatus ()I
762+
public fun getUsername ()Ljava/lang/String;
763+
public fun getVipAvatar ()Ljava/lang/String;
764+
public fun hashCode ()I
765+
public final fun isAiReduceNoise ()Z
766+
public fun isBot ()Z
767+
public fun isMobileVerified ()Z
768+
public fun isOnline ()Z
769+
public final fun isPersonalCardBg ()Z
770+
public final fun isVip ()Z
771+
public fun toString ()Ljava/lang/String;
772+
}
773+
774+
public synthetic class love/forte/simbot/kook/api/channel/VoiceChannelUser$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
775+
public static final field INSTANCE Llove/forte/simbot/kook/api/channel/VoiceChannelUser$$serializer;
776+
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
777+
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
778+
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Llove/forte/simbot/kook/api/channel/VoiceChannelUser;
779+
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
780+
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
781+
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Llove/forte/simbot/kook/api/channel/VoiceChannelUser;)V
782+
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
783+
}
784+
785+
public final class love/forte/simbot/kook/api/channel/VoiceChannelUser$Companion {
786+
public final fun serializer ()Lkotlinx/serialization/KSerializer;
787+
}
788+
669789
public final class love/forte/simbot/kook/api/guild/BoostData {
670790
public static final field Companion Llove/forte/simbot/kook/api/guild/BoostData$Companion;
671791
public fun <init> (Ljava/lang/String;Ljava/lang/String;IILlove/forte/simbot/kook/objects/SimpleUser;)V

simbot-component-kook-api/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ kotlin {
8484
dependencies {
8585
implementation(kotlin("test"))
8686
implementation(libs.kotlinx.coroutines.test)
87+
implementation(libs.ktor.client.mock)
8788
}
8889
}
8990

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* Copyright (c) 2023-2025. ForteScarlet.
3+
*
4+
* This file is part of simbot-component-kook.
5+
*
6+
* simbot-component-kook is free software: you can redistribute it and/or modify
7+
* it under the terms of the GNU Lesser General Public License as published by
8+
* the Free Software Foundation, either version 3 of the License, or
9+
* (at your option) any later version.
10+
*
11+
* simbot-component-kook is distributed in the hope that it will be useful,
12+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
* GNU Lesser General Public License for more details.
15+
*
16+
* You should have received a copy of the GNU Lesser General Public License
17+
* along with simbot-component-kook,
18+
* If not, see <https://www.gnu.org/licenses/>.
19+
*/
20+
21+
package love.forte.simbot.kook.api.channel
22+
23+
import kotlinx.serialization.DeserializationStrategy
24+
import kotlinx.serialization.SerialName
25+
import kotlinx.serialization.Serializable
26+
import kotlinx.serialization.builtins.serializer
27+
import love.forte.simbot.kook.api.KookPostApi
28+
import kotlin.jvm.JvmStatic
29+
30+
/**
31+
* [踢出语音频道中的用户](https://developer.kookapp.cn/doc/http/channel#踢出语音频道中的用户)
32+
*
33+
* 踢出语音频道中的用户,只能踢出在语音频道中的用户
34+
*
35+
* @author ForteScarlet
36+
*/
37+
public class ChannelKickoutApi private constructor(
38+
channelId: String,
39+
userId: String
40+
) : KookPostApi<Unit>() {
41+
// TODO 在 KookVoiceChannel 中添加支持的上层API
42+
43+
public companion object Factory {
44+
private val PATH = ApiPath.create("channel", "kickout")
45+
46+
/**
47+
* 构造 [ChannelKickoutApi].
48+
*
49+
* @param channelId 目标频道 id,需要是语音频道
50+
* @param userId 用户 id
51+
*/
52+
@JvmStatic
53+
public fun create(channelId: String, userId: String): ChannelKickoutApi =
54+
ChannelKickoutApi(channelId, userId)
55+
}
56+
57+
override val resultDeserializationStrategy: DeserializationStrategy<Unit>
58+
get() = Unit.serializer()
59+
60+
override val apiPath: ApiPath
61+
get() = PATH
62+
63+
override val body: Any = Body(channelId, userId)
64+
65+
@Serializable
66+
private data class Body(
67+
@SerialName("channel_id")
68+
val channelId: String,
69+
@SerialName("user_id")
70+
val userId: String
71+
)
72+
}

0 commit comments

Comments
 (0)