Browse Source

Set thread related perms in private channels to False

pull/10109/head
Jakub Kuczys 3 years ago
committed by dolfies
parent
commit
4367a9afd3
  1. 28
      discord/channel.py
  2. 2
      discord/guild.py
  3. 12
      discord/permissions.py

28
discord/channel.py

@ -2820,11 +2820,19 @@ class DMChannel(discord.abc.Messageable, discord.abc.Connectable, discord.abc.Pr
- :attr:`~Permissions.send_tts_messages`: You cannot send TTS messages in a DM.
- :attr:`~Permissions.manage_messages`: You cannot delete others messages in a DM.
- :attr:`~Permissions.create_private_threads`: There are no threads in a DM.
- :attr:`~Permissions.create_public_threads`: There are no threads in a DM.
- :attr:`~Permissions.manage_threads`: There are no threads in a DM.
- :attr:`~Permissions.send_messages_in_threads`: There are no threads in a DM.
.. versionchanged:: 2.0
``obj`` parameter is now positional-only.
.. versionchanged:: 2.0
Thread related permissions are now set to ``False``.
Parameters
-----------
obj: :class:`~discord.abc.Snowflake`
@ -2836,12 +2844,7 @@ class DMChannel(discord.abc.Messageable, discord.abc.Connectable, discord.abc.Pr
:class:`Permissions`
The resolved permissions.
"""
base = Permissions.text()
base.read_messages = True
base.send_tts_messages = False
base.manage_messages = False
return base
return Permissions._dm_permissions()
def get_partial_message(self, message_id: int, /) -> PartialMessage:
"""Creates a :class:`PartialMessage` from the message ID.
@ -3181,6 +3184,10 @@ class GroupChannel(discord.abc.Messageable, discord.abc.Connectable, discord.abc
- :attr:`~Permissions.send_tts_messages`: You cannot send TTS messages in a DM.
- :attr:`~Permissions.manage_messages`: You cannot delete others messages in a DM.
- :attr:`~Permissions.create_private_threads`: There are no threads in a DM.
- :attr:`~Permissions.create_public_threads`: There are no threads in a DM.
- :attr:`~Permissions.manage_threads`: There are no threads in a DM.
- :attr:`~Permissions.send_messages_in_threads`: There are no threads in a DM.
This also checks the kick_members permission if the user is the owner.
@ -3188,6 +3195,10 @@ class GroupChannel(discord.abc.Messageable, discord.abc.Connectable, discord.abc
``obj`` parameter is now positional-only.
.. versionchanged:: 2.0
Thread related permissions are now set to ``False``.
Parameters
-----------
obj: :class:`~discord.abc.Snowflake`
@ -3199,10 +3210,7 @@ class GroupChannel(discord.abc.Messageable, discord.abc.Connectable, discord.abc
The resolved permissions for the user.
"""
if obj.id in [x.id for x in self.recipients]:
base = Permissions.text()
base.read_messages = True
base.send_tts_messages = False
base.manage_messages = False
base = Permissions._dm_permissions()
base.mention_everyone = True
if not self.managed:
base.create_instant_invite = True

2
discord/guild.py

@ -1790,7 +1790,7 @@ class Guild(Hashable):
.. versionchanged:: 2.0
The ``premium_progress_bar_enabled`` keyword parameter was added.
.. versionchanged:: 2.1
.. versionchanged:: 2.0
The ``discoverable`` and ``invites_disabled`` keyword parameters were added.
Parameters

12
discord/permissions.py

@ -186,6 +186,18 @@ class Permissions(BaseFlags):
p.read_message_history = False
return ~p.value
@classmethod
def _dm_permissions(cls) -> Self:
base = cls.text()
base.read_messages = True
base.send_tts_messages = False
base.manage_messages = False
base.create_private_threads = False
base.create_public_threads = False
base.manage_threads = False
base.send_messages_in_threads = False
return base
@classmethod
def all_channel(cls) -> Self:
"""A :class:`Permissions` with all channel-specific permissions set to

Loading…
Cancel
Save