Skip to content

Commit a43b172

Browse files
authored
Merge branch 'master' into fix-is-integration
Signed-off-by: Paillat <[email protected]>
2 parents f4f1f2e + 968a586 commit a43b172

File tree

5 files changed

+62
-6
lines changed

5 files changed

+62
-6
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ These changes are available on the `master` branch, but have not yet been releas
3333
- Added new role tags `subscription_listing_id`, `guild_connections` and
3434
`available_for_purchase`.
3535
([#2606](https://github.com/Pycord-Development/pycord/pull/2606))
36+
- Added missing `with_counts` parameter to `fetch_guilds` method.
37+
([#2615](https://github.com/Pycord-Development/pycord/pull/2615))
38+
- Added missing permissions: `Permissions.use_soundboard`,
39+
`Permissions.use_external_sounds` and
40+
`Permissions.view_creator_monetization_analytics`.
41+
([#2620](https://github.com/Pycord-Development/pycord/pull/2620))
3642

3743
### Fixed
3844

discord/client.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1462,6 +1462,7 @@ def fetch_guilds(
14621462
limit: int | None = 100,
14631463
before: SnowflakeTime = None,
14641464
after: SnowflakeTime = None,
1465+
with_counts: bool = True,
14651466
) -> GuildIterator:
14661467
"""Retrieves an :class:`.AsyncIterator` that enables receiving your guilds.
14671468
@@ -1489,6 +1490,11 @@ def fetch_guilds(
14891490
Retrieve guilds after this date or object.
14901491
If a datetime is provided, it is recommended to use a UTC aware datetime.
14911492
If the datetime is naive, it is assumed to be local time.
1493+
with_counts: :class:`bool`
1494+
Whether to include member count information in guilds. This fills the
1495+
:attr:`.Guild.approximate_member_count` and :attr:`.Guild.approximate_presence_count`
1496+
fields.
1497+
Defaults to ``True``.
14921498
14931499
Yields
14941500
------
@@ -1515,7 +1521,9 @@ def fetch_guilds(
15151521
15161522
All parameters are optional.
15171523
"""
1518-
return GuildIterator(self, limit=limit, before=before, after=after)
1524+
return GuildIterator(
1525+
self, limit=limit, before=before, after=after, with_counts=with_counts
1526+
)
15191527

15201528
async def fetch_template(self, code: Template | str) -> Template:
15211529
"""|coro|

discord/http.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,6 +1445,7 @@ def get_guilds(
14451445
limit: int,
14461446
before: Snowflake | None = None,
14471447
after: Snowflake | None = None,
1448+
with_counts: bool = True,
14481449
) -> Response[list[guild.Guild]]:
14491450
params: dict[str, Any] = {
14501451
"limit": limit,
@@ -1454,6 +1455,8 @@ def get_guilds(
14541455
params["before"] = before
14551456
if after:
14561457
params["after"] = after
1458+
if with_counts:
1459+
params["with_counts"] = int(with_counts)
14571460

14581461
return self.request(Route("GET", "/users/@me/guilds"), params=params)
14591462

discord/iterators.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -585,9 +585,14 @@ class GuildIterator(_AsyncIterator["Guild"]):
585585
Object before which all guilds must be.
586586
after: Optional[Union[:class:`abc.Snowflake`, :class:`datetime.datetime`]]
587587
Object after which all guilds must be.
588+
with_counts: :class:`bool`
589+
Whether to include member count information in guilds. This fills the
590+
:attr:`.Guild.approximate_member_count` and :attr:`.Guild.approximate_presence_count`
591+
fields.
592+
Defaults to ``True``.
588593
"""
589594

590-
def __init__(self, bot, limit, before=None, after=None):
595+
def __init__(self, bot, limit, before=None, after=None, with_counts=True):
591596
if isinstance(before, datetime.datetime):
592597
before = Object(id=time_snowflake(before, high=False))
593598
if isinstance(after, datetime.datetime):
@@ -597,6 +602,7 @@ def __init__(self, bot, limit, before=None, after=None):
597602
self.limit = limit
598603
self.before = before
599604
self.after = after
605+
self.with_counts = with_counts
600606

601607
self._filter = None
602608

@@ -654,7 +660,9 @@ async def _retrieve_guilds(self, retrieve) -> list[Guild]:
654660
async def _retrieve_guilds_before_strategy(self, retrieve):
655661
"""Retrieve guilds using before parameter."""
656662
before = self.before.id if self.before else None
657-
data: list[GuildPayload] = await self.get_guilds(retrieve, before=before)
663+
data: list[GuildPayload] = await self.get_guilds(
664+
retrieve, before=before, with_counts=self.with_counts
665+
)
658666
if len(data):
659667
if self.limit is not None:
660668
self.limit -= retrieve
@@ -664,7 +672,9 @@ async def _retrieve_guilds_before_strategy(self, retrieve):
664672
async def _retrieve_guilds_after_strategy(self, retrieve):
665673
"""Retrieve guilds using after parameter."""
666674
after = self.after.id if self.after else None
667-
data: list[GuildPayload] = await self.get_guilds(retrieve, after=after)
675+
data: list[GuildPayload] = await self.get_guilds(
676+
retrieve, after=after, with_counts=self.with_counts
677+
)
668678
if len(data):
669679
if self.limit is not None:
670680
self.limit -= retrieve

discord/permissions.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ def all_channel(cls: type[P]) -> P:
191191
- :attr:`manage_emojis`
192192
- :attr:`view_audit_log`
193193
- :attr:`view_guild_insights`
194+
- :attr:`view_creator_monetization_analytics`
194195
- :attr:`manage_guild`
195196
- :attr:`change_nickname`
196197
- :attr:`manage_nicknames`
@@ -218,8 +219,10 @@ def general(cls: type[P]) -> P:
218219
permissions :attr:`administrator`, :attr:`create_instant_invite`, :attr:`kick_members`,
219220
:attr:`ban_members`, :attr:`change_nickname` and :attr:`manage_nicknames` are
220221
no longer part of the general permissions.
222+
.. versionchanged:: 2.7
223+
Added :attr:`view_creator_monetization_analytics` permission.
221224
"""
222-
return cls(0b01110000000010000000010010110000)
225+
return cls(0b100000000001110000000010000000010010110000)
223226

224227
@classmethod
225228
def membership(cls: type[P]) -> P:
@@ -250,7 +253,7 @@ def voice(cls: type[P]) -> P:
250253
"""A factory method that creates a :class:`Permissions` with all
251254
"Voice" permissions from the official Discord UI set to ``True``.
252255
"""
253-
return cls(0b1000000001000000000000011111100000000001100000000)
256+
return cls(0b1001001001000000000000011111100000000001100000000)
254257

255258
@classmethod
256259
def stage(cls: type[P]) -> P:
@@ -610,6 +613,30 @@ def moderate_members(self) -> int:
610613
"""
611614
return 1 << 40
612615

616+
@flag_value
617+
def view_creator_monetization_analytics(self) -> int:
618+
""":class:`bool`: Returns ``True`` if a user can view creator monetization (role subscription) analytics.
619+
620+
.. versionadded:: 2.7
621+
"""
622+
return 1 << 41
623+
624+
@flag_value
625+
def use_soundboard(self) -> int:
626+
""":class:`bool`: Returns ``True`` if a user can use the soundboard in a voice channel.
627+
628+
.. versionadded:: 2.7
629+
"""
630+
return 1 << 42
631+
632+
@flag_value
633+
def use_external_sounds(self) -> int:
634+
""":class:`bool`: Returns ``True`` if a user can use external soundboard sounds in a voice channel.
635+
636+
.. versionadded:: 2.7
637+
"""
638+
return 1 << 45
639+
613640
@flag_value
614641
def send_voice_messages(self) -> int:
615642
""":class:`bool`: Returns ``True`` if a member can send voice messages.
@@ -762,6 +789,8 @@ class PermissionOverwrite:
762789
use_external_stickers: bool | None
763790
start_embedded_activities: bool | None
764791
moderate_members: bool | None
792+
use_soundboard: bool | None
793+
use_external_sounds: bool | None
765794
send_voice_messages: bool | None
766795
set_voice_channel_status: bool | None
767796
send_polls: bool | None

0 commit comments

Comments
 (0)