nonebot-adapter-qq 1.4.2__py3-none-any.whl → 1.4.3__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.
- nonebot/adapters/qq/bot.py +76 -44
- {nonebot_adapter_qq-1.4.2.dist-info → nonebot_adapter_qq-1.4.3.dist-info}/METADATA +1 -1
- {nonebot_adapter_qq-1.4.2.dist-info → nonebot_adapter_qq-1.4.3.dist-info}/RECORD +5 -5
- {nonebot_adapter_qq-1.4.2.dist-info → nonebot_adapter_qq-1.4.3.dist-info}/LICENSE +0 -0
- {nonebot_adapter_qq-1.4.2.dist-info → nonebot_adapter_qq-1.4.3.dist-info}/WHEEL +0 -0
nonebot/adapters/qq/bot.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import json
|
2
|
+
from base64 import b64encode
|
2
3
|
from typing_extensions import Never, override
|
3
4
|
from datetime import datetime, timezone, timedelta
|
4
5
|
from typing import (
|
@@ -15,9 +16,10 @@ from typing import (
|
|
15
16
|
overload,
|
16
17
|
)
|
17
18
|
|
19
|
+
from pydantic import BaseModel
|
18
20
|
from nonebot.message import handle_event
|
19
|
-
from pydantic import BaseModel, parse_obj_as
|
20
21
|
from nonebot.drivers import Request, Response
|
22
|
+
from nonebot.compat import type_validate_python
|
21
23
|
|
22
24
|
from nonebot.adapters import Bot as BaseBot
|
23
25
|
|
@@ -578,7 +580,7 @@ class Bot(BaseBot):
|
|
578
580
|
"GET",
|
579
581
|
self.adapter.get_api_base().joinpath("users/@me"),
|
580
582
|
)
|
581
|
-
return
|
583
|
+
return type_validate_python(User, await self._request(request))
|
582
584
|
|
583
585
|
@API
|
584
586
|
async def guilds(
|
@@ -593,7 +595,7 @@ class Bot(BaseBot):
|
|
593
595
|
self.adapter.get_api_base().joinpath("users", "@me", "guilds"),
|
594
596
|
params=exclude_none({"before": before, "after": after, "limit": limit}),
|
595
597
|
)
|
596
|
-
return
|
598
|
+
return type_validate_python(List[Guild], await self._request(request))
|
597
599
|
|
598
600
|
# Guild API
|
599
601
|
@API
|
@@ -602,7 +604,7 @@ class Bot(BaseBot):
|
|
602
604
|
"GET",
|
603
605
|
self.adapter.get_api_base().joinpath("guilds", guild_id),
|
604
606
|
)
|
605
|
-
return
|
607
|
+
return type_validate_python(Guild, await self._request(request))
|
606
608
|
|
607
609
|
# Channel API
|
608
610
|
@API
|
@@ -611,7 +613,7 @@ class Bot(BaseBot):
|
|
611
613
|
"GET",
|
612
614
|
self.adapter.get_api_base().joinpath("guilds", guild_id, "channels"),
|
613
615
|
)
|
614
|
-
return
|
616
|
+
return type_validate_python(List[Channel], await self._request(request))
|
615
617
|
|
616
618
|
@API
|
617
619
|
async def get_channel(self, *, channel_id: str) -> Channel:
|
@@ -619,7 +621,7 @@ class Bot(BaseBot):
|
|
619
621
|
"GET",
|
620
622
|
self.adapter.get_api_base().joinpath("channels", channel_id),
|
621
623
|
)
|
622
|
-
return
|
624
|
+
return type_validate_python(Channel, await self._request(request))
|
623
625
|
|
624
626
|
@API
|
625
627
|
async def post_channels(
|
@@ -653,7 +655,7 @@ class Bot(BaseBot):
|
|
653
655
|
}
|
654
656
|
),
|
655
657
|
)
|
656
|
-
return
|
658
|
+
return type_validate_python(List[Channel], await self._request(request))
|
657
659
|
|
658
660
|
@API
|
659
661
|
async def patch_channel(
|
@@ -685,7 +687,7 @@ class Bot(BaseBot):
|
|
685
687
|
}
|
686
688
|
),
|
687
689
|
)
|
688
|
-
return
|
690
|
+
return type_validate_python(Channel, await self._request(request))
|
689
691
|
|
690
692
|
@API
|
691
693
|
async def delete_channel(self, *, channel_id: str) -> None:
|
@@ -709,7 +711,7 @@ class Bot(BaseBot):
|
|
709
711
|
self.adapter.get_api_base().joinpath("guilds", guild_id, "members"),
|
710
712
|
params=exclude_none({"after": after, "limit": limit}),
|
711
713
|
)
|
712
|
-
return
|
714
|
+
return type_validate_python(List[Member], await self._request(request))
|
713
715
|
|
714
716
|
@API
|
715
717
|
async def get_role_members(
|
@@ -727,7 +729,7 @@ class Bot(BaseBot):
|
|
727
729
|
),
|
728
730
|
params=exclude_none({"start_index": start_index, "limit": limit}),
|
729
731
|
)
|
730
|
-
return
|
732
|
+
return type_validate_python(GetRoleMembersReturn, await self._request(request))
|
731
733
|
|
732
734
|
@API
|
733
735
|
async def get_member(self, *, guild_id: str, user_id: str) -> Member:
|
@@ -737,7 +739,7 @@ class Bot(BaseBot):
|
|
737
739
|
"guilds", guild_id, "members", user_id
|
738
740
|
),
|
739
741
|
)
|
740
|
-
return
|
742
|
+
return type_validate_python(Member, await self._request(request))
|
741
743
|
|
742
744
|
@API
|
743
745
|
async def delete_member(
|
@@ -769,7 +771,7 @@ class Bot(BaseBot):
|
|
769
771
|
"GET",
|
770
772
|
self.adapter.get_api_base().joinpath("guilds", guild_id, "roles"),
|
771
773
|
)
|
772
|
-
return
|
774
|
+
return type_validate_python(GetGuildRolesReturn, await self._request(request))
|
773
775
|
|
774
776
|
@API
|
775
777
|
async def post_guild_role(
|
@@ -791,7 +793,7 @@ class Bot(BaseBot):
|
|
791
793
|
}
|
792
794
|
),
|
793
795
|
)
|
794
|
-
return
|
796
|
+
return type_validate_python(PostGuildRoleReturn, await self._request(request))
|
795
797
|
|
796
798
|
@API
|
797
799
|
async def patch_guild_role(
|
@@ -814,7 +816,7 @@ class Bot(BaseBot):
|
|
814
816
|
}
|
815
817
|
),
|
816
818
|
)
|
817
|
-
return
|
819
|
+
return type_validate_python(PatchGuildRoleReturn, await self._request(request))
|
818
820
|
|
819
821
|
@API
|
820
822
|
async def delete_guild_role(self, *, guild_id: str, role_id: str) -> None:
|
@@ -871,7 +873,7 @@ class Bot(BaseBot):
|
|
871
873
|
"channels", channel_id, "members", user_id, "permissions"
|
872
874
|
),
|
873
875
|
)
|
874
|
-
return
|
876
|
+
return type_validate_python(ChannelPermissions, await self._request(request))
|
875
877
|
|
876
878
|
@API
|
877
879
|
async def put_channel_permissions(
|
@@ -901,7 +903,7 @@ class Bot(BaseBot):
|
|
901
903
|
"channels", channel_id, "roles", role_id, "permissions"
|
902
904
|
),
|
903
905
|
)
|
904
|
-
return
|
906
|
+
return type_validate_python(ChannelPermissions, await self._request(request))
|
905
907
|
|
906
908
|
@API
|
907
909
|
async def put_channel_roles_permissions(
|
@@ -935,7 +937,7 @@ class Bot(BaseBot):
|
|
935
937
|
result = await self._request(request)
|
936
938
|
if isinstance(result, dict) and "message" in result:
|
937
939
|
result = result["message"]
|
938
|
-
return
|
940
|
+
return type_validate_python(GuildMessage, result)
|
939
941
|
|
940
942
|
@staticmethod
|
941
943
|
def _parse_send_message(data: Dict[str, Any]) -> Dict[str, Any]:
|
@@ -999,7 +1001,7 @@ class Bot(BaseBot):
|
|
999
1001
|
self.adapter.get_api_base().joinpath("channels", channel_id, "messages"),
|
1000
1002
|
**params,
|
1001
1003
|
)
|
1002
|
-
return
|
1004
|
+
return type_validate_python(GuildMessage, await self._request(request))
|
1003
1005
|
|
1004
1006
|
@API
|
1005
1007
|
async def delete_message(
|
@@ -1027,7 +1029,7 @@ class Bot(BaseBot):
|
|
1027
1029
|
"guilds", guild_id, "message", "setting"
|
1028
1030
|
),
|
1029
1031
|
)
|
1030
|
-
return
|
1032
|
+
return type_validate_python(MessageSetting, await self._request(request))
|
1031
1033
|
|
1032
1034
|
# DMS API
|
1033
1035
|
@API
|
@@ -1039,7 +1041,7 @@ class Bot(BaseBot):
|
|
1039
1041
|
{"recipient_id": recipient_id, "source_guild_id": source_guild_id}
|
1040
1042
|
),
|
1041
1043
|
)
|
1042
|
-
return
|
1044
|
+
return type_validate_python(DMS, await self._request(request))
|
1043
1045
|
|
1044
1046
|
@API
|
1045
1047
|
async def post_dms_messages(
|
@@ -1076,7 +1078,7 @@ class Bot(BaseBot):
|
|
1076
1078
|
self.adapter.get_api_base().joinpath("dms", guild_id, "messages"),
|
1077
1079
|
**params,
|
1078
1080
|
)
|
1079
|
-
return
|
1081
|
+
return type_validate_python(GuildMessage, await self._request(request))
|
1080
1082
|
|
1081
1083
|
@API
|
1082
1084
|
async def delete_dms_message(
|
@@ -1173,7 +1175,7 @@ class Bot(BaseBot):
|
|
1173
1175
|
}
|
1174
1176
|
),
|
1175
1177
|
)
|
1176
|
-
return
|
1178
|
+
return type_validate_python(List[int], await self._request(request))
|
1177
1179
|
|
1178
1180
|
# Announce API
|
1179
1181
|
@API
|
@@ -1225,7 +1227,7 @@ class Bot(BaseBot):
|
|
1225
1227
|
"channels", channel_id, "pins", message_id
|
1226
1228
|
),
|
1227
1229
|
)
|
1228
|
-
return
|
1230
|
+
return type_validate_python(PinsMessage, await self._request(request))
|
1229
1231
|
|
1230
1232
|
@API
|
1231
1233
|
async def delete_pins_message(self, *, channel_id: str, message_id: str) -> None:
|
@@ -1243,7 +1245,7 @@ class Bot(BaseBot):
|
|
1243
1245
|
"GET",
|
1244
1246
|
self.adapter.get_api_base().joinpath("channels", channel_id, "pins"),
|
1245
1247
|
)
|
1246
|
-
return
|
1248
|
+
return type_validate_python(PinsMessage, await self._request(request))
|
1247
1249
|
|
1248
1250
|
# Schedule API
|
1249
1251
|
@API
|
@@ -1258,7 +1260,7 @@ class Bot(BaseBot):
|
|
1258
1260
|
self.adapter.get_api_base() / f"channels/{channel_id}/schedules",
|
1259
1261
|
json=exclude_none({"since": since}),
|
1260
1262
|
)
|
1261
|
-
return
|
1263
|
+
return type_validate_python(List[Schedule], await self._request(request))
|
1262
1264
|
|
1263
1265
|
@API
|
1264
1266
|
async def get_schedule(self, *, channel_id: str, schedule_id: str) -> Schedule:
|
@@ -1268,7 +1270,7 @@ class Bot(BaseBot):
|
|
1268
1270
|
"channels", channel_id, "schedules", schedule_id
|
1269
1271
|
),
|
1270
1272
|
)
|
1271
|
-
return
|
1273
|
+
return type_validate_python(Schedule, await self._request(request))
|
1272
1274
|
|
1273
1275
|
@API
|
1274
1276
|
async def post_schedule(
|
@@ -1310,7 +1312,7 @@ class Bot(BaseBot):
|
|
1310
1312
|
)
|
1311
1313
|
},
|
1312
1314
|
)
|
1313
|
-
return
|
1315
|
+
return type_validate_python(Schedule, await self._request(request))
|
1314
1316
|
|
1315
1317
|
@API
|
1316
1318
|
async def patch_schedule(
|
@@ -1357,7 +1359,7 @@ class Bot(BaseBot):
|
|
1357
1359
|
)
|
1358
1360
|
},
|
1359
1361
|
)
|
1360
|
-
return
|
1362
|
+
return type_validate_python(Schedule, await self._request(request))
|
1361
1363
|
|
1362
1364
|
@API
|
1363
1365
|
async def delete_schedule(self, *, channel_id: str, schedule_id: str) -> None:
|
@@ -1473,7 +1475,7 @@ class Bot(BaseBot):
|
|
1473
1475
|
"GET",
|
1474
1476
|
self.adapter.get_api_base().joinpath("channels", channel_id, "threads"),
|
1475
1477
|
)
|
1476
|
-
return
|
1478
|
+
return type_validate_python(GetThreadsListReturn, await self._request(request))
|
1477
1479
|
|
1478
1480
|
@API
|
1479
1481
|
async def get_thread(self, *, channel_id: str, thread_id: str) -> GetThreadReturn:
|
@@ -1483,7 +1485,7 @@ class Bot(BaseBot):
|
|
1483
1485
|
"channels", channel_id, "threads", thread_id
|
1484
1486
|
),
|
1485
1487
|
)
|
1486
|
-
return
|
1488
|
+
return type_validate_python(GetThreadReturn, await self._request(request))
|
1487
1489
|
|
1488
1490
|
@overload
|
1489
1491
|
async def put_thread(
|
@@ -1529,7 +1531,7 @@ class Bot(BaseBot):
|
|
1529
1531
|
}
|
1530
1532
|
),
|
1531
1533
|
)
|
1532
|
-
return
|
1534
|
+
return type_validate_python(PutThreadReturn, await self._request(request))
|
1533
1535
|
|
1534
1536
|
@API
|
1535
1537
|
async def delete_thread(self, *, channel_id: str, thread_id: str) -> None:
|
@@ -1550,7 +1552,9 @@ class Bot(BaseBot):
|
|
1550
1552
|
"GET",
|
1551
1553
|
self.adapter.get_api_base().joinpath("guilds", guild_id, "api_permission"),
|
1552
1554
|
)
|
1553
|
-
return
|
1555
|
+
return type_validate_python(
|
1556
|
+
GetGuildAPIPermissionReturn, await self._request(request)
|
1557
|
+
)
|
1554
1558
|
|
1555
1559
|
@API
|
1556
1560
|
async def post_api_permission_demand(
|
@@ -1574,7 +1578,7 @@ class Bot(BaseBot):
|
|
1574
1578
|
}
|
1575
1579
|
),
|
1576
1580
|
)
|
1577
|
-
return
|
1581
|
+
return type_validate_python(APIPermissionDemand, await self._request(request))
|
1578
1582
|
|
1579
1583
|
# WebSocket API
|
1580
1584
|
@API
|
@@ -1583,7 +1587,7 @@ class Bot(BaseBot):
|
|
1583
1587
|
"GET",
|
1584
1588
|
self.adapter.get_api_base().joinpath("gateway"),
|
1585
1589
|
)
|
1586
|
-
return
|
1590
|
+
return type_validate_python(UrlGetReturn, await self._request(request))
|
1587
1591
|
|
1588
1592
|
@API
|
1589
1593
|
async def shard_url_get(self) -> ShardUrlGetReturn:
|
@@ -1591,7 +1595,7 @@ class Bot(BaseBot):
|
|
1591
1595
|
"GET",
|
1592
1596
|
self.adapter.get_api_base().joinpath("gateway", "bot"),
|
1593
1597
|
)
|
1594
|
-
return
|
1598
|
+
return type_validate_python(ShardUrlGetReturn, await self._request(request))
|
1595
1599
|
|
1596
1600
|
# Interaction API
|
1597
1601
|
@API
|
@@ -1667,7 +1671,7 @@ class Bot(BaseBot):
|
|
1667
1671
|
}
|
1668
1672
|
),
|
1669
1673
|
)
|
1670
|
-
return
|
1674
|
+
return type_validate_python(PostC2CMessagesReturn, await self._request(request))
|
1671
1675
|
|
1672
1676
|
@API
|
1673
1677
|
async def post_c2c_files(
|
@@ -1675,10 +1679,12 @@ class Bot(BaseBot):
|
|
1675
1679
|
*,
|
1676
1680
|
openid: str,
|
1677
1681
|
file_type: Literal[1, 2, 3, 4],
|
1678
|
-
url: str,
|
1682
|
+
url: Optional[str] = None,
|
1679
1683
|
srv_send_msg: bool = True,
|
1680
|
-
file_data:
|
1684
|
+
file_data: Optional[Union[str, bytes]] = None,
|
1681
1685
|
) -> PostC2CFilesReturn:
|
1686
|
+
if isinstance(file_data, bytes):
|
1687
|
+
file_data = b64encode(file_data).decode()
|
1682
1688
|
request = Request(
|
1683
1689
|
"POST",
|
1684
1690
|
self.adapter.get_api_base().joinpath("v2", "users", openid, "files"),
|
@@ -1691,7 +1697,17 @@ class Bot(BaseBot):
|
|
1691
1697
|
}
|
1692
1698
|
),
|
1693
1699
|
)
|
1694
|
-
return
|
1700
|
+
return type_validate_python(PostC2CFilesReturn, await self._request(request))
|
1701
|
+
|
1702
|
+
@API
|
1703
|
+
async def delete_c2c_message(self, *, openid: str, message_id: str) -> None:
|
1704
|
+
request = Request(
|
1705
|
+
"DELETE",
|
1706
|
+
self.adapter.get_api_base().joinpath(
|
1707
|
+
"v2", "users", openid, "messages", message_id
|
1708
|
+
),
|
1709
|
+
)
|
1710
|
+
return await self._request(request)
|
1695
1711
|
|
1696
1712
|
# Group API
|
1697
1713
|
@API
|
@@ -1757,7 +1773,9 @@ class Bot(BaseBot):
|
|
1757
1773
|
}
|
1758
1774
|
),
|
1759
1775
|
)
|
1760
|
-
return
|
1776
|
+
return type_validate_python(
|
1777
|
+
PostGroupMessagesReturn, await self._request(request)
|
1778
|
+
)
|
1761
1779
|
|
1762
1780
|
@API
|
1763
1781
|
async def post_group_files(
|
@@ -1765,10 +1783,12 @@ class Bot(BaseBot):
|
|
1765
1783
|
*,
|
1766
1784
|
group_openid: str,
|
1767
1785
|
file_type: Literal[1, 2, 3, 4],
|
1768
|
-
url: str,
|
1786
|
+
url: Optional[str] = None,
|
1769
1787
|
srv_send_msg: bool = True,
|
1770
|
-
file_data:
|
1788
|
+
file_data: Optional[Union[str, bytes]] = None,
|
1771
1789
|
) -> PostGroupFilesReturn:
|
1790
|
+
if isinstance(file_data, bytes):
|
1791
|
+
file_data = b64encode(file_data).decode()
|
1772
1792
|
request = Request(
|
1773
1793
|
"POST",
|
1774
1794
|
self.adapter.get_api_base().joinpath("v2", "groups", group_openid, "files"),
|
@@ -1781,7 +1801,17 @@ class Bot(BaseBot):
|
|
1781
1801
|
}
|
1782
1802
|
),
|
1783
1803
|
)
|
1784
|
-
return
|
1804
|
+
return type_validate_python(PostGroupFilesReturn, await self._request(request))
|
1805
|
+
|
1806
|
+
@API
|
1807
|
+
async def delete_group_message(self, *, group_openid: str, message_id: str) -> None:
|
1808
|
+
request = Request(
|
1809
|
+
"DELETE",
|
1810
|
+
self.adapter.get_api_base().joinpath(
|
1811
|
+
"v2", "groups", group_openid, "messages", message_id
|
1812
|
+
),
|
1813
|
+
)
|
1814
|
+
return await self._request(request)
|
1785
1815
|
|
1786
1816
|
@API
|
1787
1817
|
async def post_group_members(
|
@@ -1796,4 +1826,6 @@ class Bot(BaseBot):
|
|
1796
1826
|
self.adapter.get_api_base().joinpath("v2", "groups", group_id, "members"),
|
1797
1827
|
json=exclude_none({"limit": limit, "start_index": start_index}),
|
1798
1828
|
)
|
1799
|
-
return
|
1829
|
+
return type_validate_python(
|
1830
|
+
PostGroupMembersReturn, await self._request(request)
|
1831
|
+
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
nonebot/adapters/qq/__init__.py,sha256=u2bR9HLdgIEV22nu2VJeUFscklTUj8DN4650q0k5SHw,787
|
2
2
|
nonebot/adapters/qq/adapter.py,sha256=WAvX20qtfn1xaCPRRVImZy-omYiDWqf2vXz8aQoPHQE,14410
|
3
|
-
nonebot/adapters/qq/bot.py,sha256=
|
3
|
+
nonebot/adapters/qq/bot.py,sha256=cxIJKilZbsqP9zn66xlxJJeHV3FexR7HHqS3qjrkR9o,60571
|
4
4
|
nonebot/adapters/qq/compat.py,sha256=7g5QvRzWREesZ7MSEhNRh53UZwEyhQlxE3e_KpqQ0pw,768
|
5
5
|
nonebot/adapters/qq/config.py,sha256=rdBWweI0db8-9KQF-lvNLMCMa55PJPOkvn9DVJMprac,2148
|
6
6
|
nonebot/adapters/qq/event.py,sha256=4VvHq7l5aQYmIEBLpjHrCL_neqYBTximeuPHQHnt384,18754
|
@@ -14,7 +14,7 @@ nonebot/adapters/qq/models/qq.py,sha256=zzpHdXgSHoiT-tPyjmR2YjL4IZpLogc-tvAThh7W
|
|
14
14
|
nonebot/adapters/qq/permission.py,sha256=0aedypl6xymhAV3UkW0vlvHTBkJeDmOef3SxG2tPcHQ,988
|
15
15
|
nonebot/adapters/qq/store.py,sha256=X-NeSVCrxngQDPo9IXKWehERNa4sefdrYrZn5-yucF4,874
|
16
16
|
nonebot/adapters/qq/utils.py,sha256=rMHpOf1zUrVodCYULMTBr82pF54tGK3b5TMykSnY6jc,1568
|
17
|
-
nonebot_adapter_qq-1.4.
|
18
|
-
nonebot_adapter_qq-1.4.
|
19
|
-
nonebot_adapter_qq-1.4.
|
20
|
-
nonebot_adapter_qq-1.4.
|
17
|
+
nonebot_adapter_qq-1.4.3.dist-info/LICENSE,sha256=4EZBnkZPQYBvtO2KFGaUQHTO8nZ26pGeaCFchdBq_AE,1064
|
18
|
+
nonebot_adapter_qq-1.4.3.dist-info/METADATA,sha256=VFQ3Bow3UuiBrtpxSuraenWDSwydTglBQBUAQw-9rsA,2785
|
19
|
+
nonebot_adapter_qq-1.4.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
20
|
+
nonebot_adapter_qq-1.4.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|