Skip to content

Commit e37ee3a

Browse files
authored
fix(channel): implement permission overwrites (#625)
1 parent 0961b12 commit e37ee3a

File tree

7 files changed

+41
-19
lines changed

7 files changed

+41
-19
lines changed

docs/api.models.flags.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.. currentmodule:: interactions
2+
3+
Flag Bitshift Models
4+
====================
5+
6+
.. automodule:: interactions.api.models.flags
7+
:members:
8+
:noindex:

docs/api.models.intents.rst

Lines changed: 0 additions & 8 deletions
This file was deleted.

docs/api.models.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Model Objects
99
api.models.channel.rst
1010
api.models.guild.rst
1111
api.models.gw.rst
12-
api.models.intents.rst
12+
api.models.flags.rst
1313
api.models.member.rst
1414
api.models.message.rst
1515
api.models.misc.rst

interactions/api/models/channel.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from enum import IntEnum
33
from typing import Callable, List, Optional, Union
44

5-
from .misc import MISSING, DictSerializerMixin, Snowflake
5+
from .misc import MISSING, DictSerializerMixin, Overwrite, Snowflake
66

77

88
class ChannelType(IntEnum):
@@ -278,7 +278,7 @@ async def modify(
278278
user_limit: Optional[int] = MISSING,
279279
rate_limit_per_user: Optional[int] = MISSING,
280280
position: Optional[int] = MISSING,
281-
# permission_overwrites,
281+
permission_overwrites: Optional[List[Overwrite]] = MISSING,
282282
parent_id: Optional[int] = MISSING,
283283
nsfw: Optional[bool] = MISSING,
284284
reason: Optional[str] = None,
@@ -302,6 +302,8 @@ async def modify(
302302
:type parent_id: Optional[int]
303303
:param nsfw?: Whether the channel is nsfw or not, defaults to the current value of the channel
304304
:type nsfw: Optional[bool]
305+
:param permission_overwrites?: The permission overwrites, if any
306+
:type permission_overwrites: Optional[List[Overwrite]]
305307
:param reason?: The reason for the edit
306308
:type reason: Optional[str]
307309
:return: The modified channel as new object
@@ -317,8 +319,13 @@ async def modify(
317319
self.rate_limit_per_user if rate_limit_per_user is MISSING else rate_limit_per_user
318320
)
319321
_position = self.position if position is MISSING else position
320-
_parent_id = self.parent_id if parent_id is MISSING else parent_id
322+
_parent_id = int(self.parent_id) if parent_id is MISSING else int(parent_id)
321323
_nsfw = self.nsfw if nsfw is MISSING else nsfw
324+
_permission_overwrites = (
325+
self.permission_overwrites
326+
if permission_overwrites is MISSING
327+
else [overwrite._json for overwrite in permission_overwrites]
328+
)
322329
_type = self.type
323330

324331
payload = Channel(
@@ -331,6 +338,7 @@ async def modify(
331338
position=_position,
332339
parent_id=_parent_id,
333340
nsfw=_nsfw,
341+
permission_overwrites=_permission_overwrites,
334342
)
335343
res = await self._client.modify_channel(
336344
channel_id=int(self.id),

interactions/api/models/channel.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class Channel(DictSerializerMixin):
9898
user_limit: Optional[int] = MISSING,
9999
rate_limit_per_user: Optional[int] = MISSING,
100100
position: Optional[int] = MISSING,
101-
# permission_overwrites,
101+
permission_overwrites: Optional[List[Overwrite]] = MISSING,
102102
parent_id: Optional[int] = MISSING,
103103
nsfw: Optional[bool] = MISSING,
104104
reason: Optional[str] = None,

interactions/api/models/guild.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from .channel import Channel, ChannelType
66
from .member import Member
77
from .message import Emoji, Sticker
8-
from .misc import MISSING, DictSerializerMixin, Snowflake
8+
from .misc import MISSING, DictSerializerMixin, Overwrite, Snowflake
99
from .presence import PresenceActivity
1010
from .role import Role
1111
from .team import Application
@@ -674,7 +674,7 @@ async def create_channel(
674674
user_limit: Optional[int] = MISSING,
675675
rate_limit_per_user: Optional[int] = MISSING,
676676
position: Optional[int] = MISSING,
677-
# permission_overwrites,
677+
permission_overwrites: Optional[List[Overwrite]] = MISSING,
678678
parent_id: Optional[int] = MISSING,
679679
nsfw: Optional[bool] = MISSING,
680680
reason: Optional[str] = None,
@@ -698,6 +698,8 @@ async def create_channel(
698698
:type position: Optional[int]
699699
:param parent_id?: The id of the parent category for a channel
700700
:type parent_id: Optional[int]
701+
:param permission_overwrites?: The permission overwrites, if any
702+
:type permission_overwrites: Optional[Overwrite]
701703
:param nsfw?: Whether the channel is nsfw or not, default ``False``
702704
:type nsfw: Optional[bool]
703705
:param reason: The reason for the creation
@@ -742,6 +744,10 @@ async def create_channel(
742744
payload["parent_id"] = parent_id
743745
if nsfw is not MISSING:
744746
payload["nsfw"] = nsfw
747+
if permission_overwrites is not MISSING:
748+
payload["permission_overwrites"] = [
749+
overwrite._json for overwrite in permission_overwrites
750+
]
745751

746752
res = await self._client.create_channel(
747753
guild_id=int(self.id),
@@ -760,7 +766,7 @@ async def modify_channel(
760766
user_limit: Optional[int] = MISSING,
761767
rate_limit_per_user: Optional[int] = MISSING,
762768
position: Optional[int] = MISSING,
763-
# permission_overwrites,
769+
permission_overwrites: Optional[List[Overwrite]] = MISSING,
764770
parent_id: Optional[int] = MISSING,
765771
nsfw: Optional[bool] = MISSING,
766772
reason: Optional[str] = None,
@@ -784,6 +790,8 @@ async def modify_channel(
784790
:type position: Optional[int]
785791
:param parent_id?: The id of the parent category for a channel, defaults to the current value of the channel
786792
:type parent_id: Optional[int]
793+
:param permission_overwrites?: The permission overwrites, if any
794+
:type permission_overwrites: Optional[Overwrite]
787795
:param nsfw?: Whether the channel is nsfw or not, defaults to the current value of the channel
788796
:type nsfw: Optional[bool]
789797
:param reason: The reason for the edit
@@ -805,6 +813,11 @@ async def modify_channel(
805813
_position = ch.position if position is MISSING else position
806814
_parent_id = ch.parent_id if parent_id is MISSING else parent_id
807815
_nsfw = ch.nsfw if nsfw is MISSING else nsfw
816+
_permission_overwrites = (
817+
ch.permission_overwrites
818+
if permission_overwrites is MISSING
819+
else [overwrite._json for overwrite in permission_overwrites]
820+
)
808821
_type = ch.type
809822

810823
payload = Channel(
@@ -814,6 +827,7 @@ async def modify_channel(
814827
bitrate=_bitrate,
815828
user_limit=_user_limit,
816829
rate_limit_per_user=_rate_limit_per_user,
830+
permission_overwrites=_permission_overwrites,
817831
position=_position,
818832
parent_id=_parent_id,
819833
nsfw=_nsfw,

interactions/api/models/guild.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ from enum import IntEnum
55
from .channel import Channel, ChannelType, Thread
66
from .member import Member
77
from .message import Emoji, Sticker
8-
from .misc import DictSerializerMixin, MISSING, Snowflake
8+
from .misc import DictSerializerMixin, MISSING, Snowflake, Overwrite
99
from .presence import PresenceActivity
1010
from .role import Role
1111
from .user import User
@@ -214,7 +214,7 @@ class Guild(DictSerializerMixin):
214214
user_limit: Optional[int] = MISSING,
215215
rate_limit_per_user: Optional[int] = MISSING,
216216
position: Optional[int] = MISSING,
217-
# permission_overwrites,
217+
permission_overwrites: Optional[List[Overwrite]] = MISSING,
218218
parent_id: Optional[int] = MISSING,
219219
nsfw: Optional[bool] = MISSING,
220220
reason: Optional[str] = None,
@@ -228,7 +228,7 @@ class Guild(DictSerializerMixin):
228228
user_limit: Optional[int] = MISSING,
229229
rate_limit_per_user: Optional[int] = MISSING,
230230
position: Optional[int] = MISSING,
231-
# permission_overwrites,
231+
permission_overwrites: Optional[List[Overwrite]] = MISSING,
232232
parent_id: Optional[int] = MISSING,
233233
nsfw: Optional[bool] = MISSING,
234234
reason: Optional[str] = None,

0 commit comments

Comments
 (0)