qqbotsdk-guild-py 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qqbotsdk/api/guild/agent.md +33 -0
- qqbotsdk/api/guild/channel.py +129 -0
- qqbotsdk/api/guild/content.py +214 -0
- qqbotsdk/api/guild/guild.py +68 -0
- qqbotsdk/api/guild/member.py +179 -0
- qqbotsdk/api/guild/messages.py +126 -0
- qqbotsdk/model/guild/agent.md +36 -0
- qqbotsdk/model/guild/channel.py +177 -0
- qqbotsdk/model/guild/content.py +285 -0
- qqbotsdk/model/guild/event.py +281 -0
- qqbotsdk/model/guild/event_audio.py +58 -0
- qqbotsdk/model/guild/event_forum.py +668 -0
- qqbotsdk/model/guild/event_member.py +85 -0
- qqbotsdk/model/guild/event_message.py +205 -0
- qqbotsdk/model/guild/guild.py +165 -0
- qqbotsdk/model/guild/member.py +256 -0
- qqbotsdk/model/guild/messages.py +349 -0
- qqbotsdk_guild_py-2.0.0.dist-info/METADATA +25 -0
- qqbotsdk_guild_py-2.0.0.dist-info/RECORD +20 -0
- qqbotsdk_guild_py-2.0.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# agent.md — qqbotsdk/api/guild(频道域接口)
|
|
2
|
+
|
|
3
|
+
适用范围:`packages/qqbotsdk-guild/src/qqbotsdk/api/guild/**`(`channel.py`、`guild.py`、`member.py`、`messages.py`、`content.py`)。
|
|
4
|
+
|
|
5
|
+
## MUST(必须做)
|
|
6
|
+
|
|
7
|
+
- MUST 使用频道域路径:`/guilds/{guild_id}/...`、`/channels/{channel_id}/...`、`/users/@me/...`、`/dms/...`。
|
|
8
|
+
- MUST 对**同路径不同载荷**的接口保持区分,不要合并成一个函数:
|
|
9
|
+
- 全员禁言 `PATCH /guilds/{guild_id}/mute`(`MuteRequest`,无响应体);
|
|
10
|
+
- 批量禁言同路径(`MuteMembersRequest` → `MuteMembersResponse`);
|
|
11
|
+
- 单人禁言 `PATCH /guilds/{guild_id}/members/{user_id}/mute`(`MuteRequest`,无响应体)。
|
|
12
|
+
- MUST 让无响应体的接口(权限修改、禁言、撤回、上麦/下麦、表情表态、公告删除等)返回 `None`,但仍读取响应。
|
|
13
|
+
- MUST 遵循顶层 `api/agent.md` 的请求骨架与命名约定。
|
|
14
|
+
|
|
15
|
+
## SHOULD(应当做)
|
|
16
|
+
|
|
17
|
+
- SHOULD 对权限接口复用同一个请求模型(`UpdateChannelPermissionsRequest` 同时服务成员权限与身份组权限)。
|
|
18
|
+
- SHOULD 把 MIME/文件相关处理留在调用方,api 层只做薄映射。
|
|
19
|
+
|
|
20
|
+
## MUST NOT(禁止做)
|
|
21
|
+
|
|
22
|
+
- MUST NOT 在本目录实现子频道公告(官方已废弃,见包级 `agent.md`)。
|
|
23
|
+
- MUST NOT 把 `guild_id`/`channel_id` 塞进请求模型。
|
|
24
|
+
- MUST NOT 手写鉴权头或自建会话;一律用 `qqbotsdk.api.core.session`。
|
|
25
|
+
- MUST NOT 在接口里吞异常或做重试。
|
|
26
|
+
|
|
27
|
+
## 自检
|
|
28
|
+
|
|
29
|
+
```powershell
|
|
30
|
+
cd D:\QQBotSDK
|
|
31
|
+
.venv\Scripts\ruff.exe check packages\qqbotsdk-guild\src\qqbotsdk\api
|
|
32
|
+
.venv\Scripts\pyright.exe
|
|
33
|
+
```
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
from qqbotsdk.api.core import session
|
|
2
|
+
from qqbotsdk.model.guild.channel import (
|
|
3
|
+
CreateChannelRequest,
|
|
4
|
+
CreateChannelResponse,
|
|
5
|
+
GetChannelOnlineNumsResponse,
|
|
6
|
+
GetChannelPermissionsResponse,
|
|
7
|
+
GetChannelResponse,
|
|
8
|
+
GetChannelRolePermissionsResponse,
|
|
9
|
+
GetGuildChannelsResponse,
|
|
10
|
+
UpdateChannelPermissionsRequest,
|
|
11
|
+
UpdateChannelRequest,
|
|
12
|
+
UpdateChannelResponse,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def get_channel(
|
|
17
|
+
channel_id: str,
|
|
18
|
+
) -> GetChannelResponse:
|
|
19
|
+
async with session.get(
|
|
20
|
+
f"/channels/{channel_id}",
|
|
21
|
+
) as resp:
|
|
22
|
+
result = await resp.json()
|
|
23
|
+
|
|
24
|
+
return GetChannelResponse.model_validate(result)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
async def get_guild_channels(
|
|
28
|
+
guild_id: str,
|
|
29
|
+
) -> GetGuildChannelsResponse:
|
|
30
|
+
async with session.get(
|
|
31
|
+
f"/guilds/{guild_id}/channels",
|
|
32
|
+
) as resp:
|
|
33
|
+
result = await resp.json()
|
|
34
|
+
|
|
35
|
+
return GetGuildChannelsResponse.model_validate(result)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
async def create_channel(
|
|
39
|
+
guild_id: str,
|
|
40
|
+
payload: CreateChannelRequest,
|
|
41
|
+
) -> CreateChannelResponse:
|
|
42
|
+
async with session.post(
|
|
43
|
+
f"/guilds/{guild_id}/channels",
|
|
44
|
+
json=payload.model_dump(exclude_none=True),
|
|
45
|
+
) as resp:
|
|
46
|
+
result = await resp.json()
|
|
47
|
+
|
|
48
|
+
return CreateChannelResponse.model_validate(result)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
async def update_channel(
|
|
52
|
+
channel_id: str,
|
|
53
|
+
payload: UpdateChannelRequest,
|
|
54
|
+
) -> UpdateChannelResponse:
|
|
55
|
+
async with session.patch(
|
|
56
|
+
f"/channels/{channel_id}",
|
|
57
|
+
json=payload.model_dump(exclude_none=True),
|
|
58
|
+
) as resp:
|
|
59
|
+
result = await resp.json()
|
|
60
|
+
|
|
61
|
+
return UpdateChannelResponse.model_validate(result)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
async def delete_channel(
|
|
65
|
+
channel_id: str,
|
|
66
|
+
) -> None:
|
|
67
|
+
async with session.delete(
|
|
68
|
+
f"/channels/{channel_id}",
|
|
69
|
+
) as resp:
|
|
70
|
+
await resp.json()
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
async def get_channel_online_nums(
|
|
74
|
+
channel_id: str,
|
|
75
|
+
) -> GetChannelOnlineNumsResponse:
|
|
76
|
+
async with session.get(
|
|
77
|
+
f"/channels/{channel_id}/online_nums",
|
|
78
|
+
) as resp:
|
|
79
|
+
result = await resp.json()
|
|
80
|
+
|
|
81
|
+
return GetChannelOnlineNumsResponse.model_validate(result)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
async def get_channel_permissions(
|
|
85
|
+
channel_id: str,
|
|
86
|
+
user_id: str,
|
|
87
|
+
) -> GetChannelPermissionsResponse:
|
|
88
|
+
async with session.get(
|
|
89
|
+
f"/channels/{channel_id}/members/{user_id}/permissions",
|
|
90
|
+
) as resp:
|
|
91
|
+
result = await resp.json()
|
|
92
|
+
|
|
93
|
+
return GetChannelPermissionsResponse.model_validate(result)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
async def get_channel_role_permissions(
|
|
97
|
+
channel_id: str,
|
|
98
|
+
role_id: str,
|
|
99
|
+
) -> GetChannelRolePermissionsResponse:
|
|
100
|
+
async with session.get(
|
|
101
|
+
f"/channels/{channel_id}/roles/{role_id}/permissions",
|
|
102
|
+
) as resp:
|
|
103
|
+
result = await resp.json()
|
|
104
|
+
|
|
105
|
+
return GetChannelRolePermissionsResponse.model_validate(result)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
async def update_channel_permissions(
|
|
109
|
+
channel_id: str,
|
|
110
|
+
user_id: str,
|
|
111
|
+
payload: UpdateChannelPermissionsRequest,
|
|
112
|
+
) -> None:
|
|
113
|
+
async with session.put(
|
|
114
|
+
f"/channels/{channel_id}/members/{user_id}/permissions",
|
|
115
|
+
json=payload.model_dump(exclude_none=True),
|
|
116
|
+
) as resp:
|
|
117
|
+
await resp.json()
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
async def update_channel_role_permissions(
|
|
121
|
+
channel_id: str,
|
|
122
|
+
role_id: str,
|
|
123
|
+
payload: UpdateChannelPermissionsRequest,
|
|
124
|
+
) -> None:
|
|
125
|
+
async with session.put(
|
|
126
|
+
f"/channels/{channel_id}/roles/{role_id}/permissions",
|
|
127
|
+
json=payload.model_dump(exclude_none=True),
|
|
128
|
+
) as resp:
|
|
129
|
+
await resp.json()
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
from qqbotsdk.api.core import session
|
|
2
|
+
from qqbotsdk.model.guild.content import (
|
|
3
|
+
AudioControlRequest,
|
|
4
|
+
CreateChannelScheduleRequest,
|
|
5
|
+
CreateChannelScheduleResponse,
|
|
6
|
+
CreateGuildAnnounceRequest,
|
|
7
|
+
CreateGuildAnnounceResponse,
|
|
8
|
+
DeleteChannelThreadResponse,
|
|
9
|
+
GetChannelPinsResponse,
|
|
10
|
+
GetChannelScheduleResponse,
|
|
11
|
+
GetChannelSchedulesRequest,
|
|
12
|
+
GetChannelSchedulesResponse,
|
|
13
|
+
GetChannelThreadResponse,
|
|
14
|
+
GetChannelThreadsResponse,
|
|
15
|
+
PutChannelThreadRequest,
|
|
16
|
+
PutChannelThreadResponse,
|
|
17
|
+
UpdateChannelScheduleRequest,
|
|
18
|
+
UpdateChannelScheduleResponse,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
async def create_guild_announce(
|
|
23
|
+
guild_id: str,
|
|
24
|
+
payload: CreateGuildAnnounceRequest,
|
|
25
|
+
) -> CreateGuildAnnounceResponse:
|
|
26
|
+
async with session.post(
|
|
27
|
+
f"/guilds/{guild_id}/announces",
|
|
28
|
+
json=payload.model_dump(exclude_none=True),
|
|
29
|
+
) as resp:
|
|
30
|
+
result = await resp.json()
|
|
31
|
+
|
|
32
|
+
return CreateGuildAnnounceResponse.model_validate(result)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
async def delete_guild_announce(
|
|
36
|
+
guild_id: str,
|
|
37
|
+
message_id: str,
|
|
38
|
+
) -> None:
|
|
39
|
+
async with session.delete(
|
|
40
|
+
f"/guilds/{guild_id}/announces/{message_id}",
|
|
41
|
+
) as resp:
|
|
42
|
+
await resp.json()
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
async def pin_channel_message(
|
|
46
|
+
channel_id: str,
|
|
47
|
+
message_id: str,
|
|
48
|
+
) -> GetChannelPinsResponse:
|
|
49
|
+
async with session.put(
|
|
50
|
+
f"/channels/{channel_id}/pins/{message_id}",
|
|
51
|
+
) as resp:
|
|
52
|
+
result = await resp.json()
|
|
53
|
+
|
|
54
|
+
return GetChannelPinsResponse.model_validate(result)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
async def unpin_channel_message(
|
|
58
|
+
channel_id: str,
|
|
59
|
+
message_id: str,
|
|
60
|
+
) -> None:
|
|
61
|
+
async with session.delete(
|
|
62
|
+
f"/channels/{channel_id}/pins/{message_id}",
|
|
63
|
+
) as resp:
|
|
64
|
+
await resp.json()
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
async def get_channel_pins(
|
|
68
|
+
channel_id: str,
|
|
69
|
+
) -> GetChannelPinsResponse:
|
|
70
|
+
async with session.get(
|
|
71
|
+
f"/channels/{channel_id}/pins",
|
|
72
|
+
) as resp:
|
|
73
|
+
result = await resp.json()
|
|
74
|
+
|
|
75
|
+
return GetChannelPinsResponse.model_validate(result)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
async def get_channel_schedules(
|
|
79
|
+
channel_id: str,
|
|
80
|
+
payload: GetChannelSchedulesRequest,
|
|
81
|
+
) -> GetChannelSchedulesResponse:
|
|
82
|
+
async with session.get(
|
|
83
|
+
f"/channels/{channel_id}/schedules",
|
|
84
|
+
params=payload.model_dump(exclude_none=True),
|
|
85
|
+
) as resp:
|
|
86
|
+
result = await resp.json()
|
|
87
|
+
|
|
88
|
+
return GetChannelSchedulesResponse.model_validate(result)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
async def get_channel_schedule(
|
|
92
|
+
channel_id: str,
|
|
93
|
+
schedule_id: str,
|
|
94
|
+
) -> GetChannelScheduleResponse:
|
|
95
|
+
async with session.get(
|
|
96
|
+
f"/channels/{channel_id}/schedules/{schedule_id}",
|
|
97
|
+
) as resp:
|
|
98
|
+
result = await resp.json()
|
|
99
|
+
|
|
100
|
+
return GetChannelScheduleResponse.model_validate(result)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
async def create_channel_schedule(
|
|
104
|
+
channel_id: str,
|
|
105
|
+
payload: CreateChannelScheduleRequest,
|
|
106
|
+
) -> CreateChannelScheduleResponse:
|
|
107
|
+
async with session.post(
|
|
108
|
+
f"/channels/{channel_id}/schedules",
|
|
109
|
+
json=payload.model_dump(exclude_none=True),
|
|
110
|
+
) as resp:
|
|
111
|
+
result = await resp.json()
|
|
112
|
+
|
|
113
|
+
return CreateChannelScheduleResponse.model_validate(result)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
async def update_channel_schedule(
|
|
117
|
+
channel_id: str,
|
|
118
|
+
schedule_id: str,
|
|
119
|
+
payload: UpdateChannelScheduleRequest,
|
|
120
|
+
) -> UpdateChannelScheduleResponse:
|
|
121
|
+
async with session.patch(
|
|
122
|
+
f"/channels/{channel_id}/schedules/{schedule_id}",
|
|
123
|
+
json=payload.model_dump(exclude_none=True),
|
|
124
|
+
) as resp:
|
|
125
|
+
result = await resp.json()
|
|
126
|
+
|
|
127
|
+
return UpdateChannelScheduleResponse.model_validate(result)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
async def delete_channel_schedule(
|
|
131
|
+
channel_id: str,
|
|
132
|
+
schedule_id: str,
|
|
133
|
+
) -> None:
|
|
134
|
+
async with session.delete(
|
|
135
|
+
f"/channels/{channel_id}/schedules/{schedule_id}",
|
|
136
|
+
) as resp:
|
|
137
|
+
await resp.json()
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
async def control_channel_audio(
|
|
141
|
+
channel_id: str,
|
|
142
|
+
payload: AudioControlRequest,
|
|
143
|
+
) -> None:
|
|
144
|
+
async with session.post(
|
|
145
|
+
f"/channels/{channel_id}/audio",
|
|
146
|
+
json=payload.model_dump(exclude_none=True),
|
|
147
|
+
) as resp:
|
|
148
|
+
await resp.json()
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
async def put_channel_mic(
|
|
152
|
+
channel_id: str,
|
|
153
|
+
) -> None:
|
|
154
|
+
async with session.put(
|
|
155
|
+
f"/channels/{channel_id}/mic",
|
|
156
|
+
) as resp:
|
|
157
|
+
await resp.json()
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
async def delete_channel_mic(
|
|
161
|
+
channel_id: str,
|
|
162
|
+
) -> None:
|
|
163
|
+
async with session.delete(
|
|
164
|
+
f"/channels/{channel_id}/mic",
|
|
165
|
+
) as resp:
|
|
166
|
+
await resp.json()
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
async def get_channel_threads(
|
|
170
|
+
channel_id: str,
|
|
171
|
+
) -> GetChannelThreadsResponse:
|
|
172
|
+
async with session.get(
|
|
173
|
+
f"/channels/{channel_id}/threads",
|
|
174
|
+
) as resp:
|
|
175
|
+
result = await resp.json()
|
|
176
|
+
|
|
177
|
+
return GetChannelThreadsResponse.model_validate(result)
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
async def get_channel_thread(
|
|
181
|
+
channel_id: str,
|
|
182
|
+
thread_id: str,
|
|
183
|
+
) -> GetChannelThreadResponse:
|
|
184
|
+
async with session.get(
|
|
185
|
+
f"/channels/{channel_id}/threads/{thread_id}",
|
|
186
|
+
) as resp:
|
|
187
|
+
result = await resp.json()
|
|
188
|
+
|
|
189
|
+
return GetChannelThreadResponse.model_validate(result)
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
async def put_channel_thread(
|
|
193
|
+
channel_id: str,
|
|
194
|
+
payload: PutChannelThreadRequest,
|
|
195
|
+
) -> PutChannelThreadResponse:
|
|
196
|
+
async with session.put(
|
|
197
|
+
f"/channels/{channel_id}/threads",
|
|
198
|
+
json=payload.model_dump(exclude_none=True),
|
|
199
|
+
) as resp:
|
|
200
|
+
result = await resp.json()
|
|
201
|
+
|
|
202
|
+
return PutChannelThreadResponse.model_validate(result)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
async def delete_channel_thread(
|
|
206
|
+
channel_id: str,
|
|
207
|
+
thread_id: str,
|
|
208
|
+
) -> DeleteChannelThreadResponse:
|
|
209
|
+
async with session.delete(
|
|
210
|
+
f"/channels/{channel_id}/threads/{thread_id}",
|
|
211
|
+
) as resp:
|
|
212
|
+
result = await resp.json()
|
|
213
|
+
|
|
214
|
+
return DeleteChannelThreadResponse.model_validate(result)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
from qqbotsdk.api.core import session
|
|
2
|
+
from qqbotsdk.model.guild.guild import (
|
|
3
|
+
CreateApiPermissionDemandRequest,
|
|
4
|
+
CreateApiPermissionDemandResponse,
|
|
5
|
+
GetGuildApiPermissionsResponse,
|
|
6
|
+
GetGuildMessageSettingResponse,
|
|
7
|
+
GetGuildResponse,
|
|
8
|
+
GetMeGuildsRequest,
|
|
9
|
+
GetMeGuildsResponse,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
async def get_guild(
|
|
14
|
+
guild_id: str,
|
|
15
|
+
) -> GetGuildResponse:
|
|
16
|
+
async with session.get(
|
|
17
|
+
f"/guilds/{guild_id}",
|
|
18
|
+
) as resp:
|
|
19
|
+
result = await resp.json()
|
|
20
|
+
|
|
21
|
+
return GetGuildResponse.model_validate(result)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
async def get_me_guilds(
|
|
25
|
+
payload: GetMeGuildsRequest,
|
|
26
|
+
) -> GetMeGuildsResponse:
|
|
27
|
+
async with session.get(
|
|
28
|
+
"/users/@me/guilds",
|
|
29
|
+
params=payload.model_dump(exclude_none=True),
|
|
30
|
+
) as resp:
|
|
31
|
+
result = await resp.json()
|
|
32
|
+
|
|
33
|
+
return GetMeGuildsResponse.model_validate(result)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
async def get_guild_message_setting(
|
|
37
|
+
guild_id: str,
|
|
38
|
+
) -> GetGuildMessageSettingResponse:
|
|
39
|
+
async with session.get(
|
|
40
|
+
f"/guilds/{guild_id}/message/setting",
|
|
41
|
+
) as resp:
|
|
42
|
+
result = await resp.json()
|
|
43
|
+
|
|
44
|
+
return GetGuildMessageSettingResponse.model_validate(result)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
async def get_guild_api_permissions(
|
|
48
|
+
guild_id: str,
|
|
49
|
+
) -> GetGuildApiPermissionsResponse:
|
|
50
|
+
async with session.get(
|
|
51
|
+
f"/guilds/{guild_id}/api_permission",
|
|
52
|
+
) as resp:
|
|
53
|
+
result = await resp.json()
|
|
54
|
+
|
|
55
|
+
return GetGuildApiPermissionsResponse.model_validate(result)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
async def create_api_permission_demand(
|
|
59
|
+
guild_id: str,
|
|
60
|
+
payload: CreateApiPermissionDemandRequest,
|
|
61
|
+
) -> CreateApiPermissionDemandResponse:
|
|
62
|
+
async with session.post(
|
|
63
|
+
f"/guilds/{guild_id}/api_permission/demand",
|
|
64
|
+
json=payload.model_dump(exclude_none=True),
|
|
65
|
+
) as resp:
|
|
66
|
+
result = await resp.json()
|
|
67
|
+
|
|
68
|
+
return CreateApiPermissionDemandResponse.model_validate(result)
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
from qqbotsdk.api.core import session
|
|
2
|
+
from qqbotsdk.model.guild.member import (
|
|
3
|
+
CreateGuildRoleRequest,
|
|
4
|
+
CreateGuildRoleResponse,
|
|
5
|
+
GetGuildMemberResponse,
|
|
6
|
+
GetGuildMembersRequest,
|
|
7
|
+
GetGuildMembersResponse,
|
|
8
|
+
GetGuildRolesResponse,
|
|
9
|
+
GetRoleMembersRequest,
|
|
10
|
+
GetRoleMembersResponse,
|
|
11
|
+
GuildMemberRoleRequest,
|
|
12
|
+
MuteMembersRequest,
|
|
13
|
+
MuteMembersResponse,
|
|
14
|
+
MuteRequest,
|
|
15
|
+
RemoveGuildMemberRequest,
|
|
16
|
+
UpdateGuildRoleRequest,
|
|
17
|
+
UpdateGuildRoleResponse,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
async def get_guild_members(
|
|
22
|
+
guild_id: str,
|
|
23
|
+
payload: GetGuildMembersRequest,
|
|
24
|
+
) -> GetGuildMembersResponse:
|
|
25
|
+
async with session.get(
|
|
26
|
+
f"/guilds/{guild_id}/members",
|
|
27
|
+
params=payload.model_dump(exclude_none=True),
|
|
28
|
+
) as resp:
|
|
29
|
+
result = await resp.json()
|
|
30
|
+
|
|
31
|
+
return GetGuildMembersResponse.model_validate(result)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
async def get_guild_member(
|
|
35
|
+
guild_id: str,
|
|
36
|
+
user_id: str,
|
|
37
|
+
) -> GetGuildMemberResponse:
|
|
38
|
+
async with session.get(
|
|
39
|
+
f"/guilds/{guild_id}/members/{user_id}",
|
|
40
|
+
) as resp:
|
|
41
|
+
result = await resp.json()
|
|
42
|
+
|
|
43
|
+
return GetGuildMemberResponse.model_validate(result)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
async def remove_guild_member(
|
|
47
|
+
guild_id: str,
|
|
48
|
+
user_id: str,
|
|
49
|
+
payload: RemoveGuildMemberRequest,
|
|
50
|
+
) -> None:
|
|
51
|
+
async with session.delete(
|
|
52
|
+
f"/guilds/{guild_id}/members/{user_id}",
|
|
53
|
+
json=payload.model_dump(exclude_none=True),
|
|
54
|
+
) as resp:
|
|
55
|
+
await resp.json()
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
async def get_guild_roles(
|
|
59
|
+
guild_id: str,
|
|
60
|
+
) -> GetGuildRolesResponse:
|
|
61
|
+
async with session.get(
|
|
62
|
+
f"/guilds/{guild_id}/roles",
|
|
63
|
+
) as resp:
|
|
64
|
+
result = await resp.json()
|
|
65
|
+
|
|
66
|
+
return GetGuildRolesResponse.model_validate(result)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
async def create_guild_role(
|
|
70
|
+
guild_id: str,
|
|
71
|
+
payload: CreateGuildRoleRequest,
|
|
72
|
+
) -> CreateGuildRoleResponse:
|
|
73
|
+
async with session.post(
|
|
74
|
+
f"/guilds/{guild_id}/roles",
|
|
75
|
+
json=payload.model_dump(exclude_none=True),
|
|
76
|
+
) as resp:
|
|
77
|
+
result = await resp.json()
|
|
78
|
+
|
|
79
|
+
return CreateGuildRoleResponse.model_validate(result)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
async def update_guild_role(
|
|
83
|
+
guild_id: str,
|
|
84
|
+
role_id: str,
|
|
85
|
+
payload: UpdateGuildRoleRequest,
|
|
86
|
+
) -> UpdateGuildRoleResponse:
|
|
87
|
+
async with session.patch(
|
|
88
|
+
f"/guilds/{guild_id}/roles/{role_id}",
|
|
89
|
+
json=payload.model_dump(exclude_none=True),
|
|
90
|
+
) as resp:
|
|
91
|
+
result = await resp.json()
|
|
92
|
+
|
|
93
|
+
return UpdateGuildRoleResponse.model_validate(result)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
async def delete_guild_role(
|
|
97
|
+
guild_id: str,
|
|
98
|
+
role_id: str,
|
|
99
|
+
) -> None:
|
|
100
|
+
async with session.delete(
|
|
101
|
+
f"/guilds/{guild_id}/roles/{role_id}",
|
|
102
|
+
) as resp:
|
|
103
|
+
await resp.json()
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
async def get_role_members(
|
|
107
|
+
guild_id: str,
|
|
108
|
+
role_id: str,
|
|
109
|
+
payload: GetRoleMembersRequest,
|
|
110
|
+
) -> GetRoleMembersResponse:
|
|
111
|
+
async with session.get(
|
|
112
|
+
f"/guilds/{guild_id}/roles/{role_id}/members",
|
|
113
|
+
params=payload.model_dump(exclude_none=True),
|
|
114
|
+
) as resp:
|
|
115
|
+
result = await resp.json()
|
|
116
|
+
|
|
117
|
+
return GetRoleMembersResponse.model_validate(result)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
async def add_guild_member_role(
|
|
121
|
+
guild_id: str,
|
|
122
|
+
user_id: str,
|
|
123
|
+
role_id: str,
|
|
124
|
+
payload: GuildMemberRoleRequest,
|
|
125
|
+
) -> None:
|
|
126
|
+
async with session.put(
|
|
127
|
+
f"/guilds/{guild_id}/members/{user_id}/roles/{role_id}",
|
|
128
|
+
json=payload.model_dump(exclude_none=True),
|
|
129
|
+
) as resp:
|
|
130
|
+
await resp.json()
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
async def remove_guild_member_role(
|
|
134
|
+
guild_id: str,
|
|
135
|
+
user_id: str,
|
|
136
|
+
role_id: str,
|
|
137
|
+
payload: GuildMemberRoleRequest,
|
|
138
|
+
) -> None:
|
|
139
|
+
async with session.delete(
|
|
140
|
+
f"/guilds/{guild_id}/members/{user_id}/roles/{role_id}",
|
|
141
|
+
json=payload.model_dump(exclude_none=True),
|
|
142
|
+
) as resp:
|
|
143
|
+
await resp.json()
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
async def mute_guild(
|
|
147
|
+
guild_id: str,
|
|
148
|
+
payload: MuteRequest,
|
|
149
|
+
) -> None:
|
|
150
|
+
async with session.patch(
|
|
151
|
+
f"/guilds/{guild_id}/mute",
|
|
152
|
+
json=payload.model_dump(exclude_none=True),
|
|
153
|
+
) as resp:
|
|
154
|
+
await resp.json()
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
async def mute_guild_members(
|
|
158
|
+
guild_id: str,
|
|
159
|
+
payload: MuteMembersRequest,
|
|
160
|
+
) -> MuteMembersResponse:
|
|
161
|
+
async with session.patch(
|
|
162
|
+
f"/guilds/{guild_id}/mute",
|
|
163
|
+
json=payload.model_dump(exclude_none=True),
|
|
164
|
+
) as resp:
|
|
165
|
+
result = await resp.json()
|
|
166
|
+
|
|
167
|
+
return MuteMembersResponse.model_validate(result)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
async def mute_guild_member(
|
|
171
|
+
guild_id: str,
|
|
172
|
+
user_id: str,
|
|
173
|
+
payload: MuteRequest,
|
|
174
|
+
) -> None:
|
|
175
|
+
async with session.patch(
|
|
176
|
+
f"/guilds/{guild_id}/members/{user_id}/mute",
|
|
177
|
+
json=payload.model_dump(exclude_none=True),
|
|
178
|
+
) as resp:
|
|
179
|
+
await resp.json()
|