Skip to content

Commit e32cae4

Browse files
EepyElvyraToricanepre-commit-ci[bot]FayeDel
authored
refactor!: optimize sync behavior (#762)
* refactor: optimize sync behavior * ooops * Update interactions/api/http/interaction.py Co-authored-by: Toricane <73972068+Toricane@users.noreply.github.com> * Update interactions/client/bot.pyi Co-authored-by: Toricane <73972068+Toricane@users.noreply.github.com> * Update interactions/api/http/scheduledEvent.py Co-authored-by: Toricane <73972068+Toricane@users.noreply.github.com> * Update interactions/client/bot.py Co-authored-by: Toricane <73972068+Toricane@users.noreply.github.com> * Update bot.py * ci: correct from checks. * fix: Fix command check for user and member decorator * Update interactions/client/bot.py Co-authored-by: Toricane <73972068+Toricane@users.noreply.github.com> * fix!: Fix autocomplete when sync is disabled * Update bot.py * Update bot.py * Update bot.pyi * ci: correct from checks. * Update bot.py * fix: fix option checks and autocomplete dispatch with command names * ci * refactor: unnecessary if checks * fix!: Fix synchronisation by properly checking attributes and their logic comparators. * refactor: Remove print statements. * refactor: move sync and autocomplete into _ready * doc: add warning * Update interactions/client/bot.py Co-authored-by: Toricane <73972068+Toricane@users.noreply.github.com> Co-authored-by: Toricane <73972068+Toricane@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: DeltaX <33706469+DeltaXWizard@users.noreply.github.com>
1 parent fe970fa commit e32cae4

30 files changed

+466
-286
lines changed

interactions/api/http/channel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from .route import Route
88

99

10-
class _ChannelRequest:
10+
class ChannelRequest:
1111

1212
_req: _Request
1313
cache: Cache

interactions/api/http/channel.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ from ...api.cache import Cache
44
from .request import _Request
55

66

7-
class _ChannelRequest:
7+
class ChannelRequest:
88

99
_req: _Request
1010
cache: Cache

interactions/api/http/client.py

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,35 @@
33
import interactions.api.cache
44

55
from ...api.cache import Cache
6-
from .channel import _ChannelRequest
7-
from .emoji import _EmojiRequest
8-
from .guild import _GuildRequest
9-
from .interaction import _InteractionRequest
10-
from .member import _MemberRequest
11-
from .message import _MessageRequest
12-
from .reaction import _ReactionRequest
6+
from .channel import ChannelRequest
7+
from .emoji import EmojiRequest
8+
from .guild import GuildRequest
9+
from .interaction import InteractionRequest
10+
from .member import MemberRequest
11+
from .message import MessageRequest
12+
from .reaction import ReactionRequest
1313
from .request import _Request
1414
from .route import Route
15-
from .scheduledEvent import _ScheduledEventRequest
16-
from .sticker import _StickerRequest
17-
from .thread import _ThreadRequest
18-
from .user import _UserRequest
19-
from .webhook import _WebhookRequest
15+
from .scheduledEvent import ScheduledEventRequest
16+
from .sticker import StickerRequest
17+
from .thread import ThreadRequest
18+
from .user import UserRequest
19+
from .webhook import WebhookRequest
2020

2121

2222
class HTTPClient(
23-
_ChannelRequest,
24-
_EmojiRequest,
25-
_GuildRequest,
26-
_InteractionRequest,
27-
_MemberRequest,
28-
_MessageRequest,
29-
_ReactionRequest,
30-
_ScheduledEventRequest,
31-
_StickerRequest,
32-
_ThreadRequest,
33-
_UserRequest,
34-
_WebhookRequest,
23+
ChannelRequest,
24+
EmojiRequest,
25+
GuildRequest,
26+
InteractionRequest,
27+
MemberRequest,
28+
MessageRequest,
29+
ReactionRequest,
30+
ScheduledEventRequest,
31+
StickerRequest,
32+
ThreadRequest,
33+
UserRequest,
34+
WebhookRequest,
3535
):
3636
"""
3737
The user-facing client of the Web API for individual endpoints.
@@ -55,18 +55,18 @@ def __init__(self, token: str):
5555
self.token = token
5656
self._req = _Request(self.token)
5757
self.cache = interactions.api.cache.ref_cache
58-
_UserRequest.__init__(self)
59-
_MessageRequest.__init__(self)
60-
_GuildRequest.__init__(self)
61-
_ChannelRequest.__init__(self)
62-
_ThreadRequest.__init__(self)
63-
_ReactionRequest.__init__(self)
64-
_StickerRequest.__init__(self)
65-
_InteractionRequest.__init__(self)
66-
_WebhookRequest.__init__(self)
67-
_ScheduledEventRequest.__init__(self)
68-
_EmojiRequest.__init__(self)
69-
_MemberRequest.__init__(self)
58+
UserRequest.__init__(self)
59+
MessageRequest.__init__(self)
60+
GuildRequest.__init__(self)
61+
ChannelRequest.__init__(self)
62+
ThreadRequest.__init__(self)
63+
ReactionRequest.__init__(self)
64+
StickerRequest.__init__(self)
65+
InteractionRequest.__init__(self)
66+
WebhookRequest.__init__(self)
67+
ScheduledEventRequest.__init__(self)
68+
EmojiRequest.__init__(self)
69+
MemberRequest.__init__(self)
7070

7171
# An ideology is that this client does every single HTTP call, which reduces multiple ClientSessions in theory
7272
# because of how they are constructed/closed. This includes Gateway

interactions/api/http/client.pyi

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,34 @@
11
from typing import Optional, Tuple
22

3-
from .request import _Request
43
from ...api.cache import Cache
5-
from .channel import _ChannelRequest
6-
from .emoji import _EmojiRequest
7-
from .guild import _GuildRequest
8-
from .interaction import _InteractionRequest
9-
from .member import _MemberRequest
10-
from .message import _MessageRequest
11-
from .reaction import _ReactionRequest
4+
from .channel import ChannelRequest
5+
from .emoji import EmojiRequest
6+
from .guild import GuildRequest
7+
from .interaction import InteractionRequest
8+
from .member import MemberRequest
9+
from .message import MessageRequest
10+
from .reaction import ReactionRequest
1211
from .request import _Request
13-
from .scheduledEvent import _ScheduledEventRequest
14-
from .sticker import _StickerRequest
15-
from .thread import _ThreadRequest
16-
from .user import _UserRequest
17-
from .webhook import _WebhookRequest
12+
from .scheduledEvent import ScheduledEventRequest
13+
from .sticker import StickerRequest
14+
from .thread import ThreadRequest
15+
from .user import UserRequest
16+
from .webhook import WebhookRequest
1817

1918

2019
class HTTPClient(
21-
_ChannelRequest,
22-
_EmojiRequest,
23-
_GuildRequest,
24-
_InteractionRequest,
25-
_MemberRequest,
26-
_MessageRequest,
27-
_ReactionRequest,
28-
_ScheduledEventRequest,
29-
_StickerRequest,
30-
_ThreadRequest,
31-
_UserRequest,
32-
_WebhookRequest,
20+
ChannelRequest,
21+
EmojiRequest,
22+
GuildRequest,
23+
InteractionRequest,
24+
MemberRequest,
25+
MessageRequest,
26+
ReactionRequest,
27+
ScheduledEventRequest,
28+
StickerRequest,
29+
ThreadRequest,
30+
UserRequest,
31+
WebhookRequest,
3332
):
3433

3534
token: str

interactions/api/http/emoji.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from .route import Route
66

77

8-
class _EmojiRequest:
8+
class EmojiRequest:
99

1010
_req: _Request
1111
cache: Cache

interactions/api/http/emoji.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ from .request import _Request
44
from ...api.cache import Cache
55

66

7-
class _EmojiRequest:
7+
class EmojiRequest:
88

99
_req: _Request
1010
cache: Cache

interactions/api/http/guild.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from .route import Route
1111

1212

13-
class _GuildRequest:
13+
class GuildRequest:
1414

1515
_req: _Request
1616
cache: Cache

interactions/api/http/guild.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ from ..models.role import Role
44
from .request import _Request
55

66

7-
class _GuildRequest:
7+
class GuildRequest:
88

99
_req: _Request
1010
cache: Cache

interactions/api/http/interaction.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from .route import Route
77

88

9-
class _InteractionRequest:
9+
class InteractionRequest:
1010

1111
_req: _Request
1212
cache: Cache
@@ -15,22 +15,34 @@ def __init__(self) -> None:
1515
pass
1616

1717
async def get_application_commands(
18-
self, application_id: Union[int, Snowflake], guild_id: Optional[int] = None
18+
self,
19+
application_id: Union[int, Snowflake],
20+
guild_id: Optional[int] = None,
21+
with_localizations: Optional[bool] = None,
1922
) -> List[dict]:
2023
"""
2124
Get all application commands from an application.
2225
2326
:param application_id: Application ID snowflake
2427
:param guild_id: Guild to get commands from, if specified. Defaults to global (None)
28+
:param with_localizations: Whether to include full localization dictionaries (name_localizations and description_localizations) in the returned objects, instead of the name_localized and description_localized fields. Default false.
2529
:return: A list of Application commands.
2630
"""
2731
application_id = int(application_id)
2832

33+
params = {}
34+
35+
if with_localizations:
36+
params["with_localizations"] = f"{with_localizations}"
37+
2938
if guild_id in (None, "None"):
30-
return await self._req.request(Route("GET", f"/applications/{application_id}/commands"))
39+
return await self._req.request(
40+
Route("GET", f"/applications/{application_id}/commands"), params=params
41+
)
3142
else:
3243
return await self._req.request(
33-
Route("GET", f"/applications/{application_id}/guilds/{guild_id}/commands")
44+
Route("GET", f"/applications/{application_id}/guilds/{guild_id}/commands"),
45+
params=params,
3446
)
3547

3648
async def create_application_command(
@@ -70,9 +82,9 @@ async def overwrite_application_command(
7082
:return: An array of application command objects.
7183
"""
7284
url = (
73-
f"/applications/{application_id}/commands"
74-
if not guild_id
75-
else f"/applications/{application_id}/guilds/{guild_id}/commands"
85+
f"/applications/{application_id}/guilds/{guild_id}/commands"
86+
if guild_id
87+
else f"/applications/{application_id}/commands"
7688
)
7789

7890
return await self._req.request(Route("PUT", url), json=data)

interactions/api/http/interaction.pyi

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@ from ...api.cache import Cache
55
from .request import _Request
66

77

8-
class _InteractionRequest:
8+
class InteractionRequest:
99

1010
_req: _Request
1111
cache: Cache
1212

1313
def __init__(self) -> None: ...
14+
1415
async def get_application_commands(
15-
self, application_id: Union[int, Snowflake], guild_id: Optional[int] = None
16+
self, application_id: Union[int, Snowflake], guild_id: Optional[int] = None,
17+
with_localizations: Optional[bool] = None
1618
) -> List[dict]: ...
1719
async def create_application_command(
1820
self, application_id: Union[int, Snowflake], data: dict, guild_id: Optional[int] = None

0 commit comments

Comments
 (0)