3
3
# 异步api
4
4
5
5
from io import BufferedReader
6
- from typing import Any , List , Dict , Union , BinaryIO
6
+ from typing import Any , List , Union , BinaryIO
7
7
8
8
from .flags import Permission
9
9
from .http import BotHttp , Route
23
23
)
24
24
25
25
26
- def _handle_message_parameters (
27
- content : str = None ,
28
- embed : message .Embed = None ,
29
- ark : message .Ark = None ,
30
- message_reference : message .Reference = None ,
31
- image : str = None ,
32
- file_image : Union [bytes , BinaryIO , str ] = None ,
33
- msg_id : str = None ,
34
- event_id : str = None ,
35
- markdown : message .MarkdownPayload = None ,
36
- keyboard : message .Keyboard = None ,
37
- ) -> Dict :
38
- payload = {}
39
- params = locals ()
40
- payload .update ({k : v for k , v in params .items () if v })
41
- return payload
42
-
43
-
44
26
class BotAPI :
45
27
"""
46
28
机器人相关的API接口类
@@ -101,10 +83,8 @@ async def create_guild_role(self, guild_id: str, **fields: Any) -> guild.GuildRo
101
83
Returns:
102
84
class:GuildRole
103
85
"""
104
- valid_keys = ("name" , "color" , "hoist" )
105
- payload = {k : v for k , v in fields .items () if k in valid_keys }
106
86
route = Route ("POST" , "/guilds/{guild_id}/roles" , guild_id = guild_id )
107
- return await self ._http .request (route , json = payload )
87
+ return await self ._http .request (route , json = fields )
108
88
109
89
async def update_guild_role (self , guild_id : str , role_id : str , ** fields : Any ) -> guild .GuildRole :
110
90
"""
@@ -122,10 +102,8 @@ async def update_guild_role(self, guild_id: str, role_id: str, **fields: Any) ->
122
102
Returns:
123
103
class:GuildRole
124
104
"""
125
- valid_keys = ("name" , "color" , "hoist" )
126
- payload = {k : v for k , v in fields .items () if k in valid_keys }
127
105
route = Route ("PATCH" , "/guilds/{guild_id}/roles/{role_id}" , guild_id = guild_id , role_id = role_id )
128
- return await self ._http .request (route , json = payload )
106
+ return await self ._http .request (route , json = fields )
129
107
130
108
async def delete_guild_role (self , guild_id : str , role_id : str ) -> str :
131
109
"""
@@ -160,9 +138,7 @@ async def create_guild_role_member(
160
138
Returns:
161
139
成功执行返回`None`。
162
140
"""
163
- payload = {}
164
- if channel_id :
165
- payload = {"channel" : {"id" : channel_id }}
141
+ payload = {"channel" : {"id" : channel_id }}
166
142
167
143
route = Route (
168
144
"PUT" ,
@@ -187,9 +163,7 @@ async def delete_guild_role_member(self, guild_id: str, role_id: str, user_id: s
187
163
Returns:
188
164
成功执行返回`None`。
189
165
"""
190
- payload = {}
191
- if channel_id :
192
- payload = {"channel" : {"id" : channel_id }}
166
+ payload = {"channel" : {"id" : channel_id }}
193
167
194
168
route = Route (
195
169
"DELETE" ,
@@ -234,12 +208,7 @@ async def get_guild_members(self, guild_id: str, after: str = "0", limit: int =
234
208
Returns:
235
209
user.Member 对象的列表。
236
210
"""
237
- params : Dict [str , Any ] = {}
238
-
239
- if after is not None :
240
- params ["after" ] = after
241
- if limit is not None :
242
- params ["limit" ] = limit
211
+ params = {"after" : after , "limit" : limit }
243
212
244
213
route = Route (
245
214
"GET" ,
@@ -346,10 +315,8 @@ async def update_channel(self, channel_id: str, **fields) -> channel.ChannelPayl
346
315
Returns:Dict:
347
316
channel.Channel
348
317
"""
349
- valid_keys = ("name" , "position" , "parent_id" , "private_type" , "speak_permission" )
350
- payload = {k : v for k , v in fields .items () if k in valid_keys and v }
351
318
route = Route ("PATCH" , "/channels/{channel_id}" , channel_id = channel_id )
352
- return await self ._http .request (route , json = payload )
319
+ return await self ._http .request (route , json = fields )
353
320
354
321
async def delete_channel (self , channel_id : str ) -> channel .ChannelPayload :
355
322
"""
@@ -396,11 +363,7 @@ async def update_channel_user_permissions(
396
363
Returns:
397
364
成功执行返回`None`。
398
365
"""
399
- payload = {}
400
- if add is not None :
401
- payload .update ({"add" : str (add .value )})
402
- if remove is not None :
403
- payload .update ({"remove" : str (remove .value )})
366
+ payload = {"add" : str (add .value ) if add else None , "remove" : str (remove .value ) if remove else None }
404
367
405
368
route = Route (
406
369
"PUT" , "/channels/{channel_id}/members/{user_id}/permissions" , channel_id = channel_id , user_id = user_id
@@ -438,11 +401,7 @@ async def update_channel_role_permissions(
438
401
Returns:
439
402
成功执行返回`None`。
440
403
"""
441
- payload = {}
442
- if add is not None :
443
- payload .update ({"add" : str (add .value )})
444
- if remove is not None :
445
- payload .update ({"remove" : str (remove .value )})
404
+ payload = {"add" : str (add .value ) if add else None , "remove" : str (remove .value ) if remove else None }
446
405
447
406
route = Route (
448
407
"PUT" , "/channels/{channel_id}/roles/{role_id}/permissions" , channel_id = channel_id , role_id = role_id
@@ -511,9 +470,9 @@ async def post_message(
511
470
elif isinstance (file_image , str ):
512
471
with open (file_image , "rb" ) as img :
513
472
file_image = img .read ()
514
- payload = _handle_message_parameters (
515
- content , embed , ark , message_reference , image , file_image , msg_id , event_id , markdown , keyboard
516
- )
473
+ payload = locals ()
474
+ payload . pop ( "self" , None )
475
+ payload . pop ( "img" , None )
517
476
route = Route ("POST" , "/channels/{channel_id}/messages" , channel_id = channel_id )
518
477
return await self ._http .request (route , json = payload )
519
478
@@ -533,7 +492,7 @@ async def recall_message(self, channel_id: str, message_id: str, hidetip: bool =
533
492
Returns:
534
493
成功执行返回`None`。
535
494
"""
536
- params = {"hidetip" : "true" if hidetip else "false" }
495
+ params = {"hidetip" : str ( hidetip ). lower () }
537
496
538
497
route = Route (
539
498
"DELETE" ,
@@ -631,11 +590,11 @@ async def post_dms(
631
590
elif isinstance (file_image , str ):
632
591
with open (file_image , "rb" ) as img :
633
592
file_image = img .read ()
634
- send_payload = _handle_message_parameters (
635
- content , embed , ark , message_reference , image , file_image , msg_id , event_id , markdown , keyboard
636
- )
593
+ payload = locals ()
594
+ payload . pop ( "self" , None )
595
+ payload . pop ( "img" , None )
637
596
route = Route ("POST" , "/dms/{guild_id}/messages" , guild_id = guild_id )
638
- return await self ._http .request (route , json = send_payload )
597
+ return await self ._http .request (route , json = payload )
639
598
640
599
# 音频接口
641
600
async def update_audio (self , channel_id : str , audio_control : audio .AudioControl ) -> str :
@@ -714,9 +673,9 @@ async def me_guilds(self, guild_id: str = None, limit: int = 100, desc: bool = F
714
673
"""
715
674
params = {"limit" : limit }
716
675
if desc and guild_id :
717
- params . update ({ "before" : guild_id })
676
+ params [ "before" ] = guild_id
718
677
elif guild_id :
719
- params . update ({ "after" : guild_id })
678
+ params [ "after" ] = guild_id
720
679
721
680
route = Route ("GET" , "/users/@me/guilds" )
722
681
return await self ._http .request (route , params = params )
@@ -748,7 +707,10 @@ async def mute_all(self, guild_id: str, mute_end_timestamp: str = None, mute_sec
748
707
Returns:
749
708
成功执行返回`None`。
750
709
"""
751
- payload = {k : v for k , v in locals ().items () if k in ["mute_end_timestamp" , "mute_seconds" ] and v }
710
+ payload = {
711
+ "mute_end_timestamp" : mute_end_timestamp ,
712
+ "mute_seconds" : mute_seconds
713
+ }
752
714
route = Route ("PATCH" , "/guilds/{guild_id}/mute" , guild_id = guild_id )
753
715
return await self ._http .request (route , json = payload )
754
716
@@ -787,7 +749,10 @@ async def mute_member(
787
749
Returns:
788
750
成功执行返回`None`。
789
751
"""
790
- payload = {k : v for k , v in locals ().items () if k in ["mute_end_timestamp" , "mute_seconds" ] and v }
752
+ payload = {
753
+ "mute_end_timestamp" : mute_end_timestamp ,
754
+ "mute_seconds" : mute_seconds
755
+ }
791
756
route = Route ("PATCH" , "/guilds/{guild_id}/members/{user_id}/mute" , guild_id = guild_id , user_id = user_id )
792
757
return await self ._http .request (route , json = payload )
793
758
@@ -806,8 +771,11 @@ async def mute_multi_member(
806
771
Returns:
807
772
成功执行返回`None`。
808
773
"""
809
- payload = {k : v for k , v in locals ().items () if k in ["mute_end_timestamp" , "mute_seconds" ] and v }
810
- payload .update ({"user_ids" : user_ids })
774
+ payload = {
775
+ "mute_end_timestamp" : mute_end_timestamp ,
776
+ "mute_seconds" : mute_seconds ,
777
+ "user_ids" : user_ids
778
+ }
811
779
route = Route ("PATCH" , "/guilds/{guild_id}/mute" , guild_id = guild_id )
812
780
return await self ._http .request (route , json = payload )
813
781
@@ -938,9 +906,7 @@ async def get_schedules(self, channel_id: str, since: str = None) -> List[schedu
938
906
Returns:
939
907
列表[schedule.Schedule]
940
908
"""
941
- payload = {}
942
- if since :
943
- payload = {"since" : since }
909
+ payload = {"since" : since }
944
910
route = Route ("GET" , "/channels/{channel_id}/schedules" , channel_id = channel_id )
945
911
return await self ._http .request (route , json = payload )
946
912
@@ -1147,10 +1113,8 @@ async def get_reaction_users(
1147
1113
type = emoji_type ,
1148
1114
id = emoji_id ,
1149
1115
)
1150
- path = {"limit" : limit }
1151
- if cookie :
1152
- path .update ({"cookie" : cookie })
1153
- return await self ._http .request (route , params = path )
1116
+ params = {"limit" : limit , "cookie" : cookie } if cookie else {"limit" : limit }
1117
+ return await self ._http .request (route , params = params )
1154
1118
1155
1119
# 精华消息API
1156
1120
async def put_pin (self , channel_id : str , message_id : str ) -> pins_message .PinsMessage :
0 commit comments