diff --git a/interactions/api/http/guild.py b/interactions/api/http/guild.py index 42d6eaf40..b085dcfd7 100644 --- a/interactions/api/http/guild.py +++ b/interactions/api/http/guild.py @@ -473,7 +473,7 @@ async def create_guild_ban( self, guild_id: int, user_id: int, - delete_message_days: Optional[int] = 0, + delete_message_seconds: Optional[int] = 0, reason: Optional[str] = None, ) -> None: """ @@ -481,13 +481,13 @@ async def create_guild_ban( :param guild_id: Guild ID snowflake :param user_id: User ID snowflake - :param delete_message_days: Number of days to delete messages, from 0 to 7. Defaults to 0 + :param delete_message_seconds: Number of seconds to delete messages for, between 0 and 604800. Default to 0 :param reason: Optional reason to ban. """ return await self._req.request( Route("PUT", f"/guilds/{guild_id}/bans/{user_id}"), - json={"delete_message_days": delete_message_days}, + json={"delete_message_seconds": delete_message_seconds}, reason=reason, ) diff --git a/interactions/api/models/guild.py b/interactions/api/models/guild.py index 98f6a791c..e676fcc1f 100644 --- a/interactions/api/models/guild.py +++ b/interactions/api/models/guild.py @@ -485,28 +485,50 @@ def __repr__(self) -> str: async def ban( self, member_id: Union[int, Member, Snowflake], + seconds: Optional[int] = 0, + minutes: Optional[int] = MISSING, + hours: Optional[int] = MISSING, + days: Optional[int] = MISSING, reason: Optional[str] = None, - delete_message_days: Optional[int] = 0, ) -> None: """ Bans a member from the guild. :param member_id: The id of the member to ban :type member_id: Union[int, Member, Snowflake] + :param seconds?: Number of seconds to delete messages, from 0 to 604800. Defaults to 0 + :type seconds?: Optional[int] + :param minutes?: Number of minutes to delete messages, from 0 to 10080 + :type minutes?: Optional[int] + :param hours?: Number of hours to delete messages, from 0 to 168 + :type hours?: Optional[int] + :param days?: Number of days to delete messages, from 0 to 7 + :type days?: Optional[int] :param reason?: The reason of the ban :type reason?: Optional[str] - :param delete_message_days?: Number of days to delete messages, from 0 to 7. Defaults to 0 - :type delete_message_days?: Optional[int] """ if not self._client: raise LibraryException(code=13) + if days is not MISSING: + seconds += days * 24 * 3600 + if hours is not MISSING: + seconds += hours * 3600 + if minutes is not MISSING: + seconds += minutes * 60 + + if seconds > 604800: + raise LibraryException( + code=12, + message="The amount of total seconds to delete messages exceeds the limit Discord provides (604800)", + ) + _member_id = int(member_id.id) if isinstance(member_id, Member) else int(member_id) await self._client.create_guild_ban( guild_id=int(self.id), user_id=_member_id, reason=reason, - delete_message_days=delete_message_days, + delete_message_seconds=seconds, ) if not self.members: diff --git a/interactions/api/models/member.py b/interactions/api/models/member.py index 09763040d..4ab8aacc9 100644 --- a/interactions/api/models/member.py +++ b/interactions/api/models/member.py @@ -158,18 +158,27 @@ def name(self) -> str: async def ban( self, guild_id: Optional[Union[int, Snowflake, "Guild"]] = MISSING, + seconds: Optional[int] = 0, + minutes: Optional[int] = MISSING, + hours: Optional[int] = MISSING, + days: Optional[int] = MISSING, reason: Optional[str] = None, - delete_message_days: Optional[int] = 0, ) -> None: """ Bans the member from a guild. :param guild_id: The id of the guild to ban the member from :type guild_id: Optional[Union[int, Snowflake, "Guild"]] + :param seconds?: Number of seconds to delete messages, from 0 to 604800. Defaults to 0 + :type seconds?: Optional[int] + :param minutes?: Number of minutes to delete messages, from 0 to 10080 + :type minutes?: Optional[int] + :param hours?: Number of hours to delete messages, from 0 to 168 + :type hours?: Optional[int] + :param days?: Number of days to delete messages, from 0 to 7 + :type days?: Optional[int] :param reason?: The reason of the ban :type reason?: Optional[str] - :param delete_message_days?: Number of days to delete messages, from 0 to 7. Defaults to 0 - :type delete_message_days?: Optional[int] """ if guild_id is MISSING: @@ -182,11 +191,24 @@ async def ban( int(guild_id) if isinstance(guild_id, (Snowflake, int)) else int(guild_id.id) ) + if days is not MISSING: + seconds += days * 24 * 3600 + if hours is not MISSING: + seconds += hours * 3600 + if minutes is not MISSING: + seconds += minutes * 60 + + if seconds > 604800: + raise LibraryException( + code=12, + message="The amount of total seconds to delete messages exceeds the limit Discord provides (604800)", + ) + await self._client.create_guild_ban( guild_id=_guild_id, user_id=int(self.user.id), reason=reason, - delete_message_days=delete_message_days, + delete_message_seconds=seconds, ) async def kick(