Skip to content

Commit 3a84a8c

Browse files
B1ue-Devpre-commit-ci[bot]Toricane
authored
feat(guild)!: Converting delete_message_days in ban method to seconds (#1077)
* docs: Fix description in ``set_rate_limit_per_user`` * feat: Adding ``premium_progress_bar_enabled`` for ``Guild`` * feat: Adding ``communication_disabled_until`` in GuildMember Gateway dispatch * ci: correct from checks. * fix: Fix `mention` being NoneType * chore: Update interactions/api/models/member.py By Toricane's suggestion. Co-authored-by: Toricane <73972068+Toricane@users.noreply.github.com> * feat: Converting `delete_message_days` in ban method to seconds * ci: correct from checks. Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Toricane <73972068+Toricane@users.noreply.github.com>
1 parent 497c7a5 commit 3a84a8c

File tree

3 files changed

+55
-11
lines changed

3 files changed

+55
-11
lines changed

interactions/api/http/guild.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -473,21 +473,21 @@ async def create_guild_ban(
473473
self,
474474
guild_id: int,
475475
user_id: int,
476-
delete_message_days: Optional[int] = 0,
476+
delete_message_seconds: Optional[int] = 0,
477477
reason: Optional[str] = None,
478478
) -> None:
479479
"""
480480
Bans a person from the guild, and optionally deletes previous messages sent by them.
481481
482482
:param guild_id: Guild ID snowflake
483483
:param user_id: User ID snowflake
484-
:param delete_message_days: Number of days to delete messages, from 0 to 7. Defaults to 0
484+
:param delete_message_seconds: Number of seconds to delete messages for, between 0 and 604800. Default to 0
485485
:param reason: Optional reason to ban.
486486
"""
487487

488488
return await self._req.request(
489489
Route("PUT", f"/guilds/{guild_id}/bans/{user_id}"),
490-
json={"delete_message_days": delete_message_days},
490+
json={"delete_message_seconds": delete_message_seconds},
491491
reason=reason,
492492
)
493493

interactions/api/models/guild.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -485,28 +485,50 @@ def __repr__(self) -> str:
485485
async def ban(
486486
self,
487487
member_id: Union[int, Member, Snowflake],
488+
seconds: Optional[int] = 0,
489+
minutes: Optional[int] = MISSING,
490+
hours: Optional[int] = MISSING,
491+
days: Optional[int] = MISSING,
488492
reason: Optional[str] = None,
489-
delete_message_days: Optional[int] = 0,
490493
) -> None:
491494
"""
492495
Bans a member from the guild.
493496
494497
:param member_id: The id of the member to ban
495498
:type member_id: Union[int, Member, Snowflake]
499+
:param seconds?: Number of seconds to delete messages, from 0 to 604800. Defaults to 0
500+
:type seconds?: Optional[int]
501+
:param minutes?: Number of minutes to delete messages, from 0 to 10080
502+
:type minutes?: Optional[int]
503+
:param hours?: Number of hours to delete messages, from 0 to 168
504+
:type hours?: Optional[int]
505+
:param days?: Number of days to delete messages, from 0 to 7
506+
:type days?: Optional[int]
496507
:param reason?: The reason of the ban
497508
:type reason?: Optional[str]
498-
:param delete_message_days?: Number of days to delete messages, from 0 to 7. Defaults to 0
499-
:type delete_message_days?: Optional[int]
500509
"""
501510
if not self._client:
502511
raise LibraryException(code=13)
503512

513+
if days is not MISSING:
514+
seconds += days * 24 * 3600
515+
if hours is not MISSING:
516+
seconds += hours * 3600
517+
if minutes is not MISSING:
518+
seconds += minutes * 60
519+
520+
if seconds > 604800:
521+
raise LibraryException(
522+
code=12,
523+
message="The amount of total seconds to delete messages exceeds the limit Discord provides (604800)",
524+
)
525+
504526
_member_id = int(member_id.id) if isinstance(member_id, Member) else int(member_id)
505527
await self._client.create_guild_ban(
506528
guild_id=int(self.id),
507529
user_id=_member_id,
508530
reason=reason,
509-
delete_message_days=delete_message_days,
531+
delete_message_seconds=seconds,
510532
)
511533

512534
if not self.members:

interactions/api/models/member.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,18 +158,27 @@ def name(self) -> str:
158158
async def ban(
159159
self,
160160
guild_id: Optional[Union[int, Snowflake, "Guild"]] = MISSING,
161+
seconds: Optional[int] = 0,
162+
minutes: Optional[int] = MISSING,
163+
hours: Optional[int] = MISSING,
164+
days: Optional[int] = MISSING,
161165
reason: Optional[str] = None,
162-
delete_message_days: Optional[int] = 0,
163166
) -> None:
164167
"""
165168
Bans the member from a guild.
166169
167170
:param guild_id: The id of the guild to ban the member from
168171
:type guild_id: Optional[Union[int, Snowflake, "Guild"]]
172+
:param seconds?: Number of seconds to delete messages, from 0 to 604800. Defaults to 0
173+
:type seconds?: Optional[int]
174+
:param minutes?: Number of minutes to delete messages, from 0 to 10080
175+
:type minutes?: Optional[int]
176+
:param hours?: Number of hours to delete messages, from 0 to 168
177+
:type hours?: Optional[int]
178+
:param days?: Number of days to delete messages, from 0 to 7
179+
:type days?: Optional[int]
169180
:param reason?: The reason of the ban
170181
:type reason?: Optional[str]
171-
:param delete_message_days?: Number of days to delete messages, from 0 to 7. Defaults to 0
172-
:type delete_message_days?: Optional[int]
173182
"""
174183

175184
if guild_id is MISSING:
@@ -182,11 +191,24 @@ async def ban(
182191
int(guild_id) if isinstance(guild_id, (Snowflake, int)) else int(guild_id.id)
183192
)
184193

194+
if days is not MISSING:
195+
seconds += days * 24 * 3600
196+
if hours is not MISSING:
197+
seconds += hours * 3600
198+
if minutes is not MISSING:
199+
seconds += minutes * 60
200+
201+
if seconds > 604800:
202+
raise LibraryException(
203+
code=12,
204+
message="The amount of total seconds to delete messages exceeds the limit Discord provides (604800)",
205+
)
206+
185207
await self._client.create_guild_ban(
186208
guild_id=_guild_id,
187209
user_id=int(self.user.id),
188210
reason=reason,
189-
delete_message_days=delete_message_days,
211+
delete_message_seconds=seconds,
190212
)
191213

192214
async def kick(

0 commit comments

Comments
 (0)