mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 12:18:59 +00:00
Add support for attachment flags
This commit is contained in:
parent
00ea67d315
commit
14faa9bdab
@ -58,6 +58,7 @@ __all__ = (
|
|||||||
'ChannelFlags',
|
'ChannelFlags',
|
||||||
'AutoModPresets',
|
'AutoModPresets',
|
||||||
'MemberFlags',
|
'MemberFlags',
|
||||||
|
'AttachmentFlags',
|
||||||
)
|
)
|
||||||
|
|
||||||
BF = TypeVar('BF', bound='BaseFlags')
|
BF = TypeVar('BF', bound='BaseFlags')
|
||||||
@ -1824,3 +1825,76 @@ class MemberFlags(BaseFlags):
|
|||||||
def started_onboarding(self):
|
def started_onboarding(self):
|
||||||
""":class:`bool`: Returns ``True`` if the member has started onboarding."""
|
""":class:`bool`: Returns ``True`` if the member has started onboarding."""
|
||||||
return 1 << 3
|
return 1 << 3
|
||||||
|
|
||||||
|
|
||||||
|
@fill_with_flags()
|
||||||
|
class AttachmentFlags(BaseFlags):
|
||||||
|
r"""Wraps up the Discord Attachment flags
|
||||||
|
|
||||||
|
.. versionadded:: 2.4
|
||||||
|
|
||||||
|
.. container:: operations
|
||||||
|
|
||||||
|
.. describe:: x == y
|
||||||
|
|
||||||
|
Checks if two AttachmentFlags are equal.
|
||||||
|
|
||||||
|
.. describe:: x != y
|
||||||
|
|
||||||
|
Checks if two AttachmentFlags are not equal.
|
||||||
|
|
||||||
|
.. describe:: x | y, x |= y
|
||||||
|
|
||||||
|
Returns a AttachmentFlags instance with all enabled flags from
|
||||||
|
both x and y.
|
||||||
|
|
||||||
|
.. describe:: x & y, x &= y
|
||||||
|
|
||||||
|
Returns a AttachmentFlags instance with only flags enabled on
|
||||||
|
both x and y.
|
||||||
|
|
||||||
|
.. describe:: x ^ y, x ^= y
|
||||||
|
|
||||||
|
Returns a AttachmentFlags instance with only flags enabled on
|
||||||
|
only one of x or y, not on both.
|
||||||
|
|
||||||
|
.. describe:: ~x
|
||||||
|
|
||||||
|
Returns a AttachmentFlags instance with all flags inverted from x.
|
||||||
|
|
||||||
|
.. describe:: hash(x)
|
||||||
|
|
||||||
|
Return the flag's hash.
|
||||||
|
|
||||||
|
.. describe:: iter(x)
|
||||||
|
|
||||||
|
Returns an iterator of ``(name, value)`` pairs. This allows it
|
||||||
|
to be, for example, constructed as a dict or a list of pairs.
|
||||||
|
Note that aliases are not shown.
|
||||||
|
|
||||||
|
.. describe:: bool(b)
|
||||||
|
|
||||||
|
Returns whether any flag is set to ``True``.
|
||||||
|
|
||||||
|
|
||||||
|
Attributes
|
||||||
|
-----------
|
||||||
|
value: :class:`int`
|
||||||
|
The raw value. You should query flags via the properties
|
||||||
|
rather than using this raw value.
|
||||||
|
"""
|
||||||
|
|
||||||
|
@flag_value
|
||||||
|
def clip(self):
|
||||||
|
""":class:`bool`: Returns ``True`` if the attachment is a clip."""
|
||||||
|
return 1 << 0
|
||||||
|
|
||||||
|
@flag_value
|
||||||
|
def thumbnail(self):
|
||||||
|
""":class:`bool`: Returns ``True`` if the attachment is a thumbnail."""
|
||||||
|
return 1 << 1
|
||||||
|
|
||||||
|
@flag_value
|
||||||
|
def remix(self):
|
||||||
|
""":class:`bool`: Returns ``True`` if the attachment has been edited using the remix feature."""
|
||||||
|
return 1 << 2
|
||||||
|
@ -54,7 +54,7 @@ from .errors import HTTPException
|
|||||||
from .components import _component_factory
|
from .components import _component_factory
|
||||||
from .embeds import Embed
|
from .embeds import Embed
|
||||||
from .member import Member
|
from .member import Member
|
||||||
from .flags import MessageFlags
|
from .flags import MessageFlags, AttachmentFlags
|
||||||
from .file import File
|
from .file import File
|
||||||
from .utils import escape_mentions, MISSING
|
from .utils import escape_mentions, MISSING
|
||||||
from .http import handle_message_parameters
|
from .http import handle_message_parameters
|
||||||
@ -207,6 +207,7 @@ class Attachment(Hashable):
|
|||||||
'ephemeral',
|
'ephemeral',
|
||||||
'duration',
|
'duration',
|
||||||
'waveform',
|
'waveform',
|
||||||
|
'_flags',
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, *, data: AttachmentPayload, state: ConnectionState):
|
def __init__(self, *, data: AttachmentPayload, state: ConnectionState):
|
||||||
@ -226,6 +227,13 @@ class Attachment(Hashable):
|
|||||||
waveform = data.get('waveform')
|
waveform = data.get('waveform')
|
||||||
self.waveform: Optional[bytes] = utils._base64_to_bytes(waveform) if waveform is not None else None
|
self.waveform: Optional[bytes] = utils._base64_to_bytes(waveform) if waveform is not None else None
|
||||||
|
|
||||||
|
self._flags: int = data.get('flags', 0)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def flags(self) -> AttachmentFlags:
|
||||||
|
""":class:`AttachmentFlags`: The attachment's flags."""
|
||||||
|
return AttachmentFlags._from_value(self._flags)
|
||||||
|
|
||||||
def is_spoiler(self) -> bool:
|
def is_spoiler(self) -> bool:
|
||||||
""":class:`bool`: Whether this attachment contains a spoiler."""
|
""":class:`bool`: Whether this attachment contains a spoiler."""
|
||||||
return self.filename.startswith('SPOILER_')
|
return self.filename.startswith('SPOILER_')
|
||||||
|
@ -70,6 +70,7 @@ class Attachment(TypedDict):
|
|||||||
ephemeral: NotRequired[bool]
|
ephemeral: NotRequired[bool]
|
||||||
duration_secs: NotRequired[float]
|
duration_secs: NotRequired[float]
|
||||||
waveform: NotRequired[str]
|
waveform: NotRequired[str]
|
||||||
|
flags: NotRequired[int]
|
||||||
|
|
||||||
|
|
||||||
MessageActivityType = Literal[1, 2, 3, 5]
|
MessageActivityType = Literal[1, 2, 3, 5]
|
||||||
|
@ -4982,6 +4982,14 @@ MemberFlags
|
|||||||
.. autoclass:: MemberFlags
|
.. autoclass:: MemberFlags
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
AttachmentFlags
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. attributetable:: AttachmentFlags
|
||||||
|
|
||||||
|
.. autoclass:: AttachmentFlags
|
||||||
|
:members:
|
||||||
|
|
||||||
ForumTag
|
ForumTag
|
||||||
~~~~~~~~~
|
~~~~~~~~~
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user