|
22 | 22 | forum,
|
23 | 23 | )
|
24 | 24 |
|
25 |
| - |
26 | 25 | class BotAPI:
|
27 | 26 | """
|
28 | 27 | 机器人相关的API接口类
|
@@ -195,11 +194,11 @@ async def get_guild_member(self, guild_id: str, user_id: str) -> user.Member:
|
195 | 194 | return await self._http.request(route)
|
196 | 195 |
|
197 | 196 | async def get_delete_member(
|
198 |
| - self, |
199 |
| - guild_id: str, |
200 |
| - user_id: str, |
201 |
| - add_blacklist: bool = False, |
202 |
| - delete_history_msg_days: int = 0 |
| 197 | + self, |
| 198 | + guild_id: str, |
| 199 | + user_id: str, |
| 200 | + add_blacklist: bool = False, |
| 201 | + delete_history_msg_days: int = 0 |
203 | 202 | ) -> str:
|
204 | 203 | """
|
205 | 204 | 删除频道成员
|
@@ -248,8 +247,8 @@ async def get_guild_members(self, guild_id: str, after: str = "0", limit: int =
|
248 | 247 | )
|
249 | 248 | return await self._http.request(route, params=params)
|
250 | 249 |
|
251 |
| - async def get_guild_role_members( |
252 |
| - self, guild_id: str, role_id: str, start_index: str = "0", limit: int = 1 |
| 250 | + async def get_guild_role_members( |
| 251 | + self, guild_id: str, role_id: str, start_index: str = "0", limit: int = 1 |
253 | 252 | ) -> Dict[str, Union[List[user.Member], str]]:
|
254 | 253 | """
|
255 | 254 | 获取频道身份组成员列表。
|
@@ -459,7 +458,7 @@ async def update_channel_role_permissions(
|
459 | 458 | Returns:
|
460 | 459 | 成功执行返回`None`。
|
461 | 460 | """
|
462 |
| - payload = {"add": str(add.value) if add else None, "remove": str(remove.value) if remove else None} |
| 461 | + payload = {"add": str(add.value) if add else None, "remove": str(remove.value) if remove else None} |
463 | 462 |
|
464 | 463 | route = Route(
|
465 | 464 | "PUT", "/channels/{channel_id}/roles/{role_id}/permissions", channel_id=channel_id, role_id=role_id
|
@@ -1313,3 +1312,133 @@ async def delete_thread(self, channel_id: str, thread_id: str) -> str:
|
1313 | 1312 | "DELETE", "/channels/{channel_id}/threads/{thread_id}", channel_id=channel_id, thread_id=thread_id
|
1314 | 1313 | )
|
1315 | 1314 | return await self._http.request(route)
|
| 1315 | + |
| 1316 | + async def post_group_message( |
| 1317 | + self, |
| 1318 | + group_openid: str, |
| 1319 | + msg_type: int = 0, |
| 1320 | + content: str = None, |
| 1321 | + embed: message.Embed = None, |
| 1322 | + ark: message.Ark = None, |
| 1323 | + message_reference: message.Reference = None, |
| 1324 | + media: message.Media = None, |
| 1325 | + msg_id: str = None, |
| 1326 | + event_id: str = None, |
| 1327 | + markdown: message.MarkdownPayload = None, |
| 1328 | + keyboard: message.Keyboard = None, |
| 1329 | + ) -> message.Message: |
| 1330 | + """ |
| 1331 | + 发送消息。 |
| 1332 | +
|
| 1333 | + 注意: |
| 1334 | + - 要求操作人在该群具有发送消息的权限。 |
| 1335 | + - 发送成功之后,会触发一个创建消息的事件。 |
| 1336 | + - 被动回复消息有效期为 5 分钟 |
| 1337 | + - 发送消息接口要求机器人接口需要链接到websocket gateway 上保持在线状态 |
| 1338 | +
|
| 1339 | + Args: |
| 1340 | + group_openid (str): 您要将消息发送到的群的 ID。 |
| 1341 | + msg_type (int): 消息类型:0 是文本,1 图文混排,2 是 markdown,3 ark,4 embed,7 media 富媒体 |
| 1342 | + content (str): 消息的文本内容。 |
| 1343 | + embed (message.Embed): embed 消息,一种特殊的 ark |
| 1344 | + ark (message.Ark): ark 模版消息 |
| 1345 | + message_reference (message.Reference): 对消息的引用。 |
| 1346 | + media (message.Media): 富媒体消息 |
| 1347 | + msg_id (str): 您要回复的消息的 ID。 |
| 1348 | + event_id (str): 您要回复的消息的事件 ID。 |
| 1349 | + markdown (message.MarkdownPayload): markdown 消息 |
| 1350 | + keyboard (message.Keyboard): keyboard 消息 |
| 1351 | +
|
| 1352 | + Returns: |
| 1353 | + message.Message: 一个消息字典对象。 |
| 1354 | + """ |
| 1355 | + payload = locals() |
| 1356 | + payload.pop("self", None) |
| 1357 | + route = Route("POST", "/v2/groups/{group_openid}/messages", group_openid=group_openid) |
| 1358 | + return await self._http.request(route, json=payload) |
| 1359 | + |
| 1360 | + async def post_c2c_message( |
| 1361 | + self, |
| 1362 | + openid: str, |
| 1363 | + msg_type: int = 0, |
| 1364 | + content: str = None, |
| 1365 | + embed: message.Embed = None, |
| 1366 | + ark: message.Ark = None, |
| 1367 | + message_reference: message.Reference = None, |
| 1368 | + media: message.Media = None, |
| 1369 | + msg_id: str = None, |
| 1370 | + event_id: str = None, |
| 1371 | + markdown: message.MarkdownPayload = None, |
| 1372 | + keyboard: message.Keyboard = None, |
| 1373 | + ) -> message.Message: |
| 1374 | + """ |
| 1375 | + 发送消息。 |
| 1376 | +
|
| 1377 | + 注意: |
| 1378 | + - 要求操作人具有发送消息的权限。 |
| 1379 | + - 发送成功之后,会触发一个创建消息的事件。 |
| 1380 | + - 被动回复消息有效期为 5 分钟 |
| 1381 | + - 发送消息接口要求机器人接口需要链接到websocket gateway 上保持在线状态 |
| 1382 | +
|
| 1383 | + Args: |
| 1384 | + openid (str): 您要将消息发送到的用户的 ID。 |
| 1385 | + msg_type (int): 消息类型:0 是文本,1 图文混排,2 是 markdown,3 ark,4 embed,7 media 富媒体 |
| 1386 | + content (str): 消息的文本内容。 |
| 1387 | + embed (message.Embed): embed 消息,一种特殊的 ark |
| 1388 | + ark (message.Ark): ark 模版消息 |
| 1389 | + message_reference (message.Reference): 对消息的引用。 |
| 1390 | + media (message.Media): 富媒体消息 |
| 1391 | + msg_id (str): 您要回复的消息的 ID。 |
| 1392 | + event_id (str): 您要回复的消息的事件 ID。 |
| 1393 | + markdown (message.MarkdownPayload): markdown 消息 |
| 1394 | + keyboard (message.Keyboard): keyboard 消息 |
| 1395 | +
|
| 1396 | + Returns: |
| 1397 | + message.Message: 一个消息字典对象。 |
| 1398 | + """ |
| 1399 | + payload = locals() |
| 1400 | + payload.pop("self", None) |
| 1401 | + route = Route("POST", "/v2/users/{openid}/messages", openid=openid) |
| 1402 | + return await self._http.request(route, json=payload) |
| 1403 | + |
| 1404 | + async def post_group_file( |
| 1405 | + self, |
| 1406 | + group_openid: str, |
| 1407 | + file_type: int, |
| 1408 | + url: str, |
| 1409 | + srv_send_msg: bool = False, |
| 1410 | + ) -> message.Media: |
| 1411 | + """ |
| 1412 | + 上传/发送群聊图片 |
| 1413 | +
|
| 1414 | + Args: |
| 1415 | + file_type (int): 媒体类型:1 图片png/jpg,2 视频mp4,3 语音silk,4 文件(暂不开放) |
| 1416 | + url (str): 需要发送媒体资源的url |
| 1417 | + srv_send_msg (bool): 设置 true 会直接发送消息到目标端,且会占用主动消息频次 |
| 1418 | + """ |
| 1419 | + payload = locals() |
| 1420 | + payload.pop("self", None) |
| 1421 | + route = Route("POST", "/v2/groups/{group_openid}/files", group_openid=group_openid) |
| 1422 | + return await self._http.request(route, json=payload) |
| 1423 | + |
| 1424 | + async def post_c2c_file( |
| 1425 | + self, |
| 1426 | + openid: str, |
| 1427 | + file_type: int, |
| 1428 | + url: str, |
| 1429 | + srv_send_msg: bool = False, |
| 1430 | + ) -> message.Media: |
| 1431 | + """ |
| 1432 | + 上传/发送c2c图片 |
| 1433 | +
|
| 1434 | + Args: |
| 1435 | + file_type (int): 媒体类型:1 图片png/jpg,2 视频mp4,3 语音silk,4 文件(暂不开放) |
| 1436 | + url (str): 需要发送媒体资源的url |
| 1437 | + srv_send_msg (bool): 设置 true 会直接发送消息到目标端,且会占用主动消息频次 |
| 1438 | + """ |
| 1439 | + payload = locals() |
| 1440 | + payload.pop("self", None) |
| 1441 | + route = Route("POST", "/v2/users/{openid}/files", openid=openid) |
| 1442 | + return await self._http.request(route, json=payload) |
| 1443 | + |
| 1444 | + |
0 commit comments