Skip to content

Commit cd7e014

Browse files
committed
fix(ratelimit-handling): Fixed buckets (of most endpoints)
1 parent 2d42155 commit cd7e014

File tree

1 file changed

+89
-45
lines changed

1 file changed

+89
-45
lines changed

discord/http.py

Lines changed: 89 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,10 @@ def pins_from(self, channel_id):
516516

517517
# Thread management
518518
def create_thread(self, channel_id, *, name, auto_archive_duration, type, message_id=None, reason=None):
519-
r = Route('POST', f'/channels/{channel_id}{f"/messages/{message_id}" if message_id else ""}/threads')
519+
if message_id:
520+
r = Route('POST', '/channels/{channel_id}/messages/{message_id}', channel_id=channel_id, message_id=message_id)
521+
else:
522+
r = Route('POST', '/channels/{channel_id}/threads', channel_id=channel_id)
520523
params = {
521524
'type': int(type),
522525
'name': str(name),
@@ -525,7 +528,7 @@ def create_thread(self, channel_id, *, name, auto_archive_duration, type, messag
525528
return self.request(r, json=params, reason=reason)
526529

527530
def edit_thread(self, channel_id, *, name=None, auto_archive_duration=None, archived=None, locked=None, reason=None):
528-
r = Route('PATCH', f'/channels/{channel_id}')
531+
r = Route('PATCH', '/channels/{channel_id}', channel_id=channel_id)
529532
params = {}
530533
if name:
531534
params['name'] = str(name)
@@ -537,21 +540,24 @@ def edit_thread(self, channel_id, *, name=None, auto_archive_duration=None, arch
537540
params['locked'] = bool(locked)
538541
return self.request(r, json=params, reason=reason)
539542

540-
def add_thread_member(self, channeL_id, member_id='@me'):
541-
r = Route('PUT', f'/channels/{channeL_id}/thread-members/{member_id}')
543+
def add_thread_member(self, channel_id, member_id='@me'):
544+
r = Route('PUT', '/channels/{channel_id}/thread-members/{member_id}', channel_id=channel_id, member_id=member_id)
542545
return self.request(r)
543546

544547
def remove_thread_member(self, channel_id, member_id='@me'):
545-
r = Route('DELETE', f'/channels/{channel_id}/thread-members/{member_id}')
548+
r = Route('DELETE', '/channels/{channel_id}/thread-members/{member_id}', channel_id=channel_id, member_id=member_id)
546549
return self.request(r)
547550

548551
def list_thread_members(self, channel_id):
549-
return self.request(Route('GET', f'/channels/{channel_id}/thread-members'))
552+
return self.request(Route('GET', '/channels/{channel_id}/thread-members', channel_id=channel_id))
550553

551554
def list_archived_threads(self, channel_id, type, joined_privat=False, *, before=None, limit=None):
552555
if type not in ('public', 'privat'):
553556
raise ValueError('type must be public or privat, not %s' % type)
554-
r = Route('GET', f'/channels/{channel_id}{"/users/@me" if joined_privat else ""}/threads/archived/{type}')
557+
if joined_privat:
558+
r = Route('GET', '/channels/{channel_id}/users/@me', channel_id=channel_id)
559+
else:
560+
r = Route('GET', '/channels/{channel_id}/threads/archived/{type}', channel_id=channel_id, type=type)
555561
params = {
556562
'before': before,
557563
'limit': int(limit)
@@ -734,10 +740,10 @@ def edit_guild(self, guild_id, *, reason=None, **fields):
734740
return self.request(Route('PATCH', '/guilds/{guild_id}', guild_id=guild_id), json=payload, reason=reason)
735741

736742
def get_welcome_screen(self, guild_id):
737-
return self.request(Route('GET', f'/guilds/{guild_id}/welcome-screen'))
743+
return self.request(Route('GET', '/guilds/{guild_id}/welcome-screen', guild_id=guild_id))
738744

739745
def edit_welcome_screen(self, guild_id, reason, **fields):
740-
r = Route('PATCH', f'/guilds/{guild_id}/welcome-screen')
746+
r = Route('PATCH', '/guilds/{guild_id}/welcome-screen', guild_id=guild_id)
741747
return self.request(r, json=fields, reason=reason)
742748

743749
def get_template(self, code):
@@ -857,7 +863,7 @@ def edit_custom_emoji(self, guild_id, emoji_id, *, name, roles=None, reason=None
857863
return self.request(r, json=payload, reason=reason)
858864

859865
def create_guild_sticker(self, guild_id, file, reason=None, **fields):
860-
r = Route('POST', f'/guilds/{guild_id}/stickers')
866+
r = Route('POST', '/guilds/{guild_id}/stickers', guild_id=guild_id)
861867
initial_bytes = file.fp.read(16)
862868

863869
try:
@@ -890,10 +896,12 @@ def create_guild_sticker(self, guild_id, file, reason=None, **fields):
890896
return self.request(r, form=form, files=[file], reason=reason)
891897

892898
def edit_guild_sticker(self, guild_id, sticker_id, data, reason=None):
893-
return self.request(Route('PATCH', f'/guilds/{guild_id}/stickers/{sticker_id}'), json=data, reason=reason)
899+
r = Route('PATCH', '/guilds/{guild_id}/stickers/{sticker_id}', guild_id=guild_id, sticker_id=sticker_id)
900+
return self.request(r, json=data, reason=reason)
894901

895902
def delete_guild_sticker(self, guild_id, sticker_id, reason=None):
896-
return self.request(Route('DELETE', f'/guilds/{guild_id}/stickers/{sticker_id}'), reason=reason)
903+
r = Route('DELETE', '/guilds/{guild_id}/stickers/{sticker_id}', guild_id=guild_id, sticker_id=sticker_id)
904+
return self.request(r, reason=reason)
897905

898906
def get_all_integrations(self, guild_id):
899907
r = Route('GET', '/guilds/{guild_id}/integrations', guild_id=guild_id)
@@ -981,36 +989,46 @@ def delete_invite(self, invite_id, *, reason=None):
981989
# Event management
982990

983991
def get_guild_event(self, guild_id, event_id, with_user_count=True):
984-
r = Route('GET', f'/guilds/{guild_id}/scheduled-events/{event_id}?with_user_count={str(with_user_count).lower()}')
992+
with_user_count = str(with_user_count).lower()
993+
r = Route(
994+
'GET', '/guilds/{guild_id}/scheduled-events/{event_id}?with_user_count={with_user_count}',
995+
guild_id=guild_id, event_id=event_id, with_user_count=with_user_count
996+
)
985997
return self.request(r)
986998

987999
def get_guild_events(self, guild_id, with_user_count=True):
988-
r = Route('GET', f'/guilds/{guild_id}/scheduled-events?with_user_count={str(with_user_count).lower()}')
1000+
r = Route(
1001+
'GET', '/guilds/{guild_id}/scheduled-events/{event_id}?with_user_count={with_user_count}',
1002+
guild_id=guild_id, with_user_count=with_user_count
1003+
)
9891004
return self.request(r)
9901005

9911006
def get_guild_event_users(self, guild_id, event_id, limit=100, before=None, after=None, with_member=False):
992-
url = f'/guilds/{guild_id}/scheduled-events/{event_id}/users?limit={limit}'
1007+
url = '/guilds/{guild_id}/scheduled-events/{event_id}/users?limit={limit}'
9931008
if before:
9941009
url += f'&before={before}'
9951010
elif after:
9961011
url += f'&after={after}'
9971012
if with_member:
9981013
url += '&with_member=true'
999-
return self.request(Route('GET', url))
1014+
return self.request(Route('GET', url, guild_id=guild_id, event_id=event_id, limit=limit))
10001015

10011016
def create_guild_event(self, guild_id, fields, *, reason=None):
1002-
return self.request(Route('POST', f'/guilds/{guild_id}/scheduled-events'), json=fields, reason=reason)
1017+
r = Route('POST', '/guilds/{guild_id}/scheduled-events', guild_id=guild_id)
1018+
return self.request(r, json=fields, reason=reason)
10031019

10041020
def edit_guild_event(self, guild_id, event_id, *, reason=None, **fields):
10051021
valid_keys = ('name', 'description', 'entity_type', 'privacy_level', 'entity_metadata',
10061022
'channel_id', 'scheduled_start_time', 'scheduled_end_time', 'status', 'image')
10071023
payload = {
10081024
k: v for k, v in fields.items() if k in valid_keys
10091025
}
1010-
return self.request(Route('PATCH', f'/guilds/{guild_id}/scheduled-events/{event_id}'), json=payload, reason=reason)
1026+
r = Route('PATCH', '/guilds/{guild_id}/scheduled-events/{event_id}', guild_id=guild_id, event_id=event_id)
1027+
return self.request(r, json=payload, reason=reason)
10111028

10121029
def delete_guild_event(self, guild_id, event_id, *, reason=None):
1013-
return self.request(Route('DELETE', f'/guilds/{guild_id}/scheduled-events/{event_id}'), reason=reason)
1030+
r = Route('DELETE', '/guilds/{guild_id}/scheduled-events/{event_id}', guild_id=guild_id, event_id=event_id)
1031+
return self.request(r, reason=reason)
10141032

10151033
# Role management
10161034

@@ -1071,49 +1089,75 @@ def move_member(self, user_id, guild_id, channel_id, *, reason=None):
10711089

10721090
# application-command's management
10731091
def get_application_commands(self, application_id, command_id=None, guild_id=None):
1074-
return self.request(Route('GET',
1075-
f'/applications/{application_id}{f"/guilds/{guild_id}" if guild_id else ""}/commands{f"/{command_id}" if command_id else ""}?with_localizations=true'))
1092+
if guild_id:
1093+
url = '/applications/{application_id}/guilds/{guild_id}/commands'
1094+
if command_id:
1095+
url += f'/{command_id}'
1096+
r = Route('GET', f'{url}?with_localizations=true', application_id=application_id, guild_id=guild_id, command_id=command_id)
1097+
else:
1098+
r = Route('GET', f'{url}?with_localizations=true', application_id=application_id, guild_id=guild_id)
1099+
else:
1100+
url = '/applications/{application_id}/commands'
1101+
if command_id:
1102+
url += f'/{command_id}'
1103+
r = Route('GET', f'{url}?with_localizations=true', application_id=application_id, command_id=command_id)
1104+
else:
1105+
r = Route('GET', f'{url}?with_localizations=true', application_id=application_id)
1106+
return self.request(r)
10761107

10771108
def create_application_command(self, application_id, data, guild_id=None):
10781109
if guild_id:
1079-
url = f'/applications/{application_id}/guilds/{guild_id}/commands'
1110+
r = Route('POST', '/applications/{application_id}/guilds/{guild_id}/commands', application_id=application_id, guild_id=guild_id)
10801111
else:
1081-
url = f'/applications/{application_id}/commands'
1082-
return self.request(Route('POST', url), json=data)
1112+
r = Route('POST', '/applications/{application_id}/commands', application_id=application_id)
1113+
return self.request(r, json=data)
10831114

10841115
def edit_application_command(self, application_id, command_id, data, guild_id=None):
10851116
if guild_id:
1086-
url = f'/applications/{application_id}/guilds/{guild_id}/commands/{command_id}'
1117+
r = Route('PATCH', '/applications/{application_id}/guilds/{guild_id}/commands/{command_id}',
1118+
application_id=application_id, guild_id=guild_id, command_id=command_id
1119+
)
10871120
else:
1088-
url = f'/applications/{application_id}/commands/{command_id}'
1089-
return self.request(Route('PATCH', url), json=data)
1121+
r = Route('PATCH', '/applications/{application_id}/commands/{command_id}',
1122+
application_id=application_id, command_id=command_id
1123+
)
1124+
return self.request(r, json=data)
10901125

10911126
def delete_application_command(self, application_id, command_id, guild_id=None):
10921127
if guild_id:
1093-
url = f'/applications/{application_id}/guilds/{guild_id}/commands/{command_id}'
1128+
r = Route('DELETE', '/applications/{application_id}/guilds/{guild_id}/commands/{command_id}',
1129+
application_id=application_id, guild_id=guild_id, command_id=command_id
1130+
)
10941131
else:
1095-
url = f'/applications/{application_id}/commands/{command_id}'
1096-
return self.request(Route('DELETE', url))
1132+
r = Route('DELETE', '/applications/{application_id}/commands/{command_id}',
1133+
application_id=application_id, command_id=command_id
1134+
)
1135+
return self.request(r)
10971136

10981137
def bulk_overwrite_application_commands(self, application_id, data, guild_id=None):
10991138
if guild_id:
1100-
url = f'/applications/{application_id}/guilds/{guild_id}/commands'
1139+
r = Route('PUT', '/applications/{application_id}/guilds/{guild_id}/commands',
1140+
application_id=application_id, guild_id=guild_id
1141+
)
11011142
else:
1102-
url = f'/applications/{application_id}/commands'
1103-
return self.request(Route('PUT', url), json=data)
1143+
r = Route('PUT', '/applications/{application_id}/commands',application_id=application_id)
1144+
return self.request(r, json=data)
11041145

11051146
def get_guild_application_command_permissions(self, application_id, guild_id, command_id=None):
11061147
if command_id:
1107-
url = f'/applications/{application_id}/guilds/{guild_id}/commands/{command_id}/permissions'
1148+
r = Route('GET', '/applications/{application_id}/guilds/{guild_id}/commands/{command_id}/permissions',
1149+
application_id=application_id, guild_id=guild_id, command_id=command_id
1150+
)
11081151
else:
1109-
url = f'/applications/{application_id}/guilds/{guild_id}/commands/permissions'
1110-
return self.request(Route('GET', url))
1152+
r = Route('GET', '/applications/{application_id}/guilds/{guild_id}/commands/permissions',
1153+
application_id=application_id, guild_id=guild_id
1154+
)
1155+
return self.request(r)
11111156

11121157
def edit_application_command_permissions(self, application_id, guild_id, command_id, data):
1113-
return self.request(
1114-
Route('PUT', f'/applications/{application_id}/guilds/{guild_id}/commands/{command_id}/permissions'),
1115-
json=data
1116-
)
1158+
r = Route('PUT', '/applications/{application_id}/guilds/{guild_id}/commands/{command_id}/permissions',
1159+
application_id=application_id, guild_id=guild_id, command_id=command_id)
1160+
return self.request(r,json=data)
11171161

11181162
# Interaction management
11191163
def post_initial_response(self, use_webhook, _resp, interaction_id, token, application_id):
@@ -1235,19 +1279,19 @@ def send_autocomplete_callback(self, token: str, interaction_id: int, choices: l
12351279

12361280
# AutoMod management
12371281
def get_automod_rules(self, guild_id: int):
1238-
return self.request(Route('GET', f'/guilds/{guild_id}/auto-moderation/rules'))
1282+
return self.request(Route('GET', '/guilds/{guild_id}/auto-moderation/rules', guild_id=guild_id))
12391283

12401284
def get_automod_rule(self, guild_id: int, rule_id: int):
1241-
return self.request(Route('GET', f'/guilds/{guild_id}/auto-moderation/rules/{rule_id}'))
1285+
return self.request(Route('GET', '/guilds/{guild_id}/auto-moderation/rules/{rule_id}', guild_id=guild_id, rule_id=rule_id))
12421286

12431287
def create_automod_rule(self, guild_id: int, data: dict):
1244-
return self.request(Route('POST', f'/guilds/{guild_id}/auto-moderation/rules'), json=data)
1288+
return self.request(Route('POST', '/guilds/{guild_id}/auto-moderation/rules', guild_id=guild_id), json=data)
12451289

12461290
def edit_automod_rule(self, guild_id: int, rule_id: int, data: dict):
1247-
return self.request(Route('PATCH', f'/guilds/{guild_id}/auto-moderation/rules/{rule_id}'), json=data)
1291+
return self.request(Route('PATCH', '/guilds/{guild_id}/auto-moderation/rules/{rule_id}', guild_id=guild_id, rule_id=rule_id), json=data)
12481292

12491293
def delete_automod_rule(self, guild_id: int, rule_id: int):
1250-
return self.request(Route('DELETE', f'/guilds/{guild_id}/auto-moderation/rules/{rule_id}'))
1294+
return self.request(Route('DELETE', '/guilds/{guild_id}/auto-moderation/rules/{rule_id}', guild_id=guild_id, rule_id=rule_id))
12511295

12521296
# Misc
12531297
def application_info(self):

0 commit comments

Comments
 (0)