
    cjh                       d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
mZ dZ edd	      Z ed
d	      Z G d d      Z G d de      Zddd+dZ G d d      Z ed       G d de             Z e        G d de             Z e        G d de             Z e        G d de             Z e        G d de             Z e        G d de             Z e        G d  d!e             Z e        G d" d#e             Z e        G d$ d%e             Z e        G d& d'e             Z e        G d( d)e             Zy*),ae  
The MIT License (MIT)

Copyright (c) 2015-2021 Rapptz
Copyright (c) 2021-present Pycord Development

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
    )annotations)AnyCallableClassVarIteratorTypeVaroverload   )	UserFlags)SystemChannelFlagsMessageFlagsAttachmentFlagsPublicUserFlagsIntentsMemberCacheFlagsApplicationFlagsChannelFlagsSKUFlags	RoleFlagsMemberFlagsFV
flag_value)boundBF	BaseFlagsc                  N    e Zd ZddZed	d       Zed
d       ZddZddZd Zy)r   c                @     |d       | _         |j                  | _        y N)flag__doc__)selffuncs     @/var/www/html/venv/lib/python3.12/site-packages/discord/flags.py__init__zflag_value.__init__3   s    J	||    c                     y r    r!   instanceowners      r#   __get__zflag_value.__get__7   s    BEr%   c                     y r   r'   r(   s      r#   r+   zflag_value.__get__:   s    >Ar%   c                @    || S |j                  | j                        S r   )	_has_flagr   r(   s      r#   r+   zflag_value.__get__=   s"    K!!$)),,r%   c                <    |j                  | j                  |       y r   )	_set_flagr   )r!   r)   values      r#   __set__zflag_value.__set__B   s    499e,r%   c                "    d| j                   dS )Nz<flag_value flag=>)r   r!   s    r#   __repr__zflag_value.__repr__E   s    "499-q11r%   N)r"   zCallable[[Any], int])r!   r   r)   Noner*   type[BF]returnr   )r)   r   r*   r8   r9   bool)r)   z	BF | Noner*   r8   r9   r   )r)   r   r1   r:   r9   r7   )__name__
__module____qualname__r$   r	   r+   r2   r6   r'   r%   r#   r   r   2   s4    $ E EA A-
-2r%   c                      e Zd Zy)alias_flag_valueN)r;   r<   r=   r'   r%   r#   r?   r?   I   s    r%   r?   F)invertedc                     d fd}|S )Nc                @   | j                   j                         D ci c]"  \  }}t        |t              r||j                  $ c}}| _        r@t        | j
                  j                               j                         }dd|z  z   | _	        | S d| _	        | S c c}}w )N   r   )
__dict__items
isinstancer   r   VALID_FLAGSmaxvalues
bit_lengthDEFAULT_VALUE)clsnamer1   max_bitsr@   s       r#   	decoratorz"fill_with_flags.<locals>.decoratorN   s      #||113
e%, %**
 3??1134??AH "ak 2C 
 !"C

s   'B)rM   r8   r'   )r@   rP   s   ` r#   fill_with_flagsrQ   M   s     r%   c                      e Zd ZU ded<   ded<   ded<   dZddZed	        Zdd
ZddZ	ddZ
ddZd Zd Zd Zd Zd ZeZded<   eZded<   eZded<   eZded<   d dZd!dZy)"r   zClassVar[dict[str, int]]rH   zClassVar[int]rL   intr1   r1   c                    | j                   | _        |j                         D ].  \  }}|| j                  vrt	        |d      t        | ||       0 y N is not a valid flag name.rL   r1   rF   rH   	TypeErrorsetattrr!   kwargskeyr1   s       r#   r$   zBaseFlags.__init__i   U    ''
 ,,. 	&JC$***3')C DEED#u%	&r%   c                6    | j                  |       }||_        |S r   )__new__r1   )rM   r1   r!   s      r#   _from_valuezBaseFlags._from_valuep   s    {{3
r%   c                d    t        || j                        xr | j                  |j                  k(  S r   )rG   	__class__r1   r!   others     r#   __eq__zBaseFlags.__eq__v   s%    %0NTZZ5;;5NNr%   c                ,    t        | j                        S r   )hashr1   r5   s    r#   __hash__zBaseFlags.__hash__y   s    DJJr%   c                P    d| j                   j                   d| j                   dS )N<z value=r4   )rc   r;   r1   r5   s    r#   r6   zBaseFlags.__repr__|   s&    4>>**+74::,a@@r%   c              #     K   | j                   j                  j                         D ]F  \  }}t        |t              rt        |t
              s(|| j                  |j                        f H y wr   )rc   rE   rF   rG   r?   r   r.   r   )r!   rN   r1   s      r#   __iter__zBaseFlags.__iter__   s\     >>2288: 	7KD%%!12%,DNN5::666	7s   AA1"A1c                \   t        || j                        r2| j                  j                  | j                  |j                  z        S t        |t              r2| j                  j                  | j                  |j
                  z        S t        dt        |        dt        |             )Nz''&' not supported between instances of  and rG   rc   ra   r1   r   r   rY   typerd   s     r#   __and__zBaseFlags.__and__       eT^^,>>--djj5;;.FGGz*>>--djj5::.EFF9$t*U4PU;-X r%   c                \   t        || j                        r2| j                  j                  | j                  |j                  z        S t        |t              r2| j                  j                  | j                  |j
                  z        S t        dt        |        dt        |             )Nz''|' not supported between instances of ro   rp   rd   s     r#   __or__zBaseFlags.__or__   rs   r%   c           	     n    	 | |z  S # t         $ r$ t        dt        |        dt        |             w xY w)Nz''+' not supported between instances of ro   )rY   rq   rd   s     r#   __add__zBaseFlags.__add__   sF    	%< 	9$t*U4PU;-X 	s    -4c                `   t        || j                        r3| j                  j                  | j                  |j                   z        S t        |t              r3| j                  j                  | j                  |j
                   z        S t        dt        |        dt        |             )Nz''-' not supported between instances of ro   rp   rd   s     r#   __sub__zBaseFlags.__sub__   s    eT^^,>>--djjEKK<.GHHz*>>--djjEJJ;.FGG9$t*U4PU;-X r%   c                N    | j                   j                  | j                         S r   )rc   ra   r1   r5   s    r#   
__invert__zBaseFlags.__invert__   s    ~~))4::+66r%   z(Callable[[BaseFlags | flag_value], bool]__rand____ror____radd____rsub__c                &    | j                   |z  |k(  S r   rT   r!   os     r#   r.   zBaseFlags._has_flag       

Q1$$r%   c                `    |r| xj                   |z  c_         y | xj                   | z  c_         y r   rT   r!   r   toggles      r#   r0   zBaseFlags._set_flag   s"    JJ!OJJJ1"Jr%   Nr\   r:   )re   r   r9   r:   )r9   rS   )r9   str)r9   zIterator[tuple[str, bool]]r   rS   r9   r:   r   rS   r   r:   r9   r7   )r;   r<   r=   __annotations__	__slots__r$   classmethodra   rf   ri   r6   rm   rr   ru   rw   ry   r{   r|   r}   r~   r   r.   r0   r'   r%   r#   r   r   a   s    ))  JI&  
O A77 :AH6@8>G5>9@H6@9@H6@%r%   Tc                  d    e Zd ZdZdZd
dZddZed        Zed        Z	ed        Z
ed        Zy	)r   a  Wraps up a Discord system channel flag value.

    Similar to :class:`Permissions`\, the properties provided are two way.
    You can set and retrieve individual bits using the properties as if they
    were regular bools. This allows you to edit the system flags easily.

    To construct an object you can pass keyword arguments denoting the flags
    to enable or disable.

    .. container:: operations

        .. describe:: x == y

            Checks if two flags are equal.
        .. describe:: x != y

            Checks if two flags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    Attributes
    -----------
    value: :class:`int`
        The raw value. This value is a bit array field of a 53-bit integer
        representing the currently available flags. You should query
        flags via the properties rather than using this raw value.
    r'   c                &    | j                   |z  |k7  S r   rT   r   s     r#   r.   zSystemChannelFlags._has_flag   r   r%   c                `    |r| xj                   | z  c_         y | xj                   |z  c_         y r   rT   r   s      r#   r0   zSystemChannelFlags._set_flag   s"    JJ1"JJJ!OJr%   c                     y)z\:class:`bool`: Returns ``True`` if the system channel is used for member join notifications.r
   r'   r5   s    r#   join_notificationsz%SystemChannelFlags.join_notifications       r%   c                     y)za:class:`bool`: Returns ``True`` if the system channel is used for "Nitro boosting" notifications.rD   r'   r5   s    r#   premium_subscriptionsz(SystemChannelFlags.premium_subscriptions  r   r%   c                     y)z:class:`bool`: Returns ``True`` if the system channel is used for server setup helpful tips notifications.

        .. versionadded:: 2.0
           r'   r5   s    r#   guild_reminder_notificationsz/SystemChannelFlags.guild_reminder_notifications       r%   c                     y)z:class:`bool`: Returns ``True`` if the system channel is allowing member join sticker replies.

        .. versionadded:: 2.0
           r'   r5   s    r#   join_notification_repliesz,SystemChannelFlags.join_notification_replies  r   r%   Nr   r   )r;   r<   r=   r    r   r.   r0   r   r   r   r   r   r'   r%   r#   r   r      si    .` I%        r%   r   c                      e Zd ZdZdZed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zed        Zed        Zy)r   a  Wraps up a Discord Message flag value.

    See :class:`SystemChannelFlags`.

    .. container:: operations

        .. describe:: x == y

            Checks if two flags are equal.
        .. describe:: x != y

            Checks if two flags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    .. versionadded:: 1.3

    Attributes
    -----------
    value: :class:`int`
        The raw value. This value is a bit array field of a 53-bit integer
        representing the currently available flags. You should query
        flags via the properties rather than using this raw value.
    r'   c                     y)zS:class:`bool`: Returns ``True`` if the message is the original crossposted message.r
   r'   r5   s    r#   crosspostedzMessageFlags.crosspostedM  r   r%   c                     y)zT:class:`bool`: Returns ``True`` if the message was crossposted from another channel.rD   r'   r5   s    r#   is_crosspostedzMessageFlags.is_crosspostedR  r   r%   c                     y)zM:class:`bool`: Returns ``True`` if the message's embeds have been suppressed.r   r'   r5   s    r#   suppress_embedszMessageFlags.suppress_embedsW  r   r%   c                     y)zZ:class:`bool`: Returns ``True`` if the source message for this crosspost has been deleted.r   r'   r5   s    r#   source_message_deletedz#MessageFlags.source_message_deleted\  r   r%   c                     y)z:class:`bool`: Returns ``True`` if the source message is an urgent message.

        An urgent message is one sent by Discord Trust and Safety.
           r'   r5   s    r#   urgentzMessageFlags.urgenta       r%   c                     y)zz:class:`bool`: Returns ``True`` if the source message is associated with a thread.

        .. versionadded:: 2.0
            r'   r5   s    r#   
has_threadzMessageFlags.has_threadi  r   r%   c                     y)zk:class:`bool`: Returns ``True`` if the source message is ephemeral.

        .. versionadded:: 2.0
        @   r'   r5   s    r#   	ephemeralzMessageFlags.ephemeralq  r   r%   c                     y)z:class:`bool`: Returns ``True`` if the source message is deferred.

        The user sees a 'thinking' state.

        .. versionadded:: 2.0
           r'   r5   s    r#   loadingzMessageFlags.loadingy  s     r%   c                     y)zx:class:`bool`: Returns ``True`` if some roles are failed to mention in a thread.

        .. versionadded:: 2.0
           r'   r5   s    r#   &failed_to_mention_some_roles_in_threadz3MessageFlags.failed_to_mention_some_roles_in_thread  s     r%   c                     y)z:class:`bool`: Returns ``True`` if the source message does not trigger push and desktop notifications.

        Users will still receive mentions.

        .. versionadded:: 2.4
           r'   r5   s    r#   suppress_notificationsz#MessageFlags.suppress_notifications  s     r%   c                     y)zk:class:`bool`: Returns ``True`` if this message is a voice message.

        .. versionadded:: 2.5
            r'   r5   s    r#   is_voice_messagezMessageFlags.is_voice_message  s     r%   N)r;   r<   r=   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r'   r%   r#   r   r     s    +Z I                     r%   r   c                  <   e Zd ZdZdZed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        ZddZy)r   a  Wraps up the Discord User Public flags.

    .. container:: operations

        .. describe:: x == y

            Checks if two PublicUserFlags are equal.
        .. describe:: x != y

            Checks if two PublicUserFlags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    .. versionadded:: 1.4

    Attributes
    -----------
    value: :class:`int`
        The raw value. This value is a bit array field of a 53-bit integer
        representing the currently available flags. You should query
        flags via the properties rather than using this raw value.
    r'   c                6    t         j                  j                  S )zB:class:`bool`: Returns ``True`` if the user is a Discord Employee.)r   staffr1   r5   s    r#   r   zPublicUserFlags.staff  s     $$$r%   c                6    t         j                  j                  S )zA:class:`bool`: Returns ``True`` if the user is a Discord Partner.)r   partnerr1   r5   s    r#   r   zPublicUserFlags.partner  s       &&&r%   c                6    t         j                  j                  S )zI:class:`bool`: Returns ``True`` if the user is a HypeSquad Events member.)r   	hypesquadr1   r5   s    r#   r   zPublicUserFlags.hypesquad       ""(((r%   c                6    t         j                  j                  S )z;:class:`bool`: Returns ``True`` if the user is a Bug Hunter)r   
bug_hunterr1   r5   s    r#   r   zPublicUserFlags.bug_hunter  s     ##)))r%   c                6    t         j                  j                  S )zR:class:`bool`: Returns ``True`` if the user is marked as dismissed Nitro promotion)r   premium_promo_dismissedr1   r5   s    r#   r   z'PublicUserFlags.premium_promo_dismissed  s     00666r%   c                6    t         j                  j                  S )zJ:class:`bool`: Returns ``True`` if the user is a HypeSquad Bravery member.)r   hypesquad_braveryr1   r5   s    r#   r   z!PublicUserFlags.hypesquad_bravery       **000r%   c                6    t         j                  j                  S )zM:class:`bool`: Returns ``True`` if the user is a HypeSquad Brilliance member.)r   hypesquad_brilliancer1   r5   s    r#   r   z$PublicUserFlags.hypesquad_brilliance  s     --333r%   c                6    t         j                  j                  S )zJ:class:`bool`: Returns ``True`` if the user is a HypeSquad Balance member.)r   hypesquad_balancer1   r5   s    r#   r   z!PublicUserFlags.hypesquad_balance  r   r%   c                6    t         j                  j                  S )zB:class:`bool`: Returns ``True`` if the user is an Early Supporter.)r   early_supporterr1   r5   s    r#   r   zPublicUserFlags.early_supporter  s     ((...r%   c                6    t         j                  j                  S )z;:class:`bool`: Returns ``True`` if the user is a Team User.)r   	team_userr1   r5   s    r#   r   zPublicUserFlags.team_user  r   r%   c                6    t         j                  j                  S )zb:class:`bool`: Returns ``True`` if the user is a system user (i.e. represents Discord officially).)r   systemr1   r5   s    r#   r   zPublicUserFlags.system  s     %%%r%   c                6    t         j                  j                  S )zC:class:`bool`: Returns ``True`` if the user is a Bug Hunter Level 2)r   bug_hunter_level_2r1   r5   s    r#   r   z"PublicUserFlags.bug_hunter_level_2  s     ++111r%   c                6    t         j                  j                  S )z>:class:`bool`: Returns ``True`` if the user is a Verified Bot.)r   verified_botr1   r5   s    r#   r   zPublicUserFlags.verified_bot  s     %%+++r%   c                6    t         j                  j                  S )zO:class:`bool`: Returns ``True`` if the user is an Early Verified Bot Developer.r   verified_bot_developerr1   r5   s    r#   r   z&PublicUserFlags.verified_bot_developer  s     //555r%   c                6    t         j                  j                  S )zc:class:`bool`: An alias for :attr:`verified_bot_developer`.

        .. versionadded:: 1.5
        r   r5   s    r#   early_verified_bot_developerz,PublicUserFlags.early_verified_bot_developer  s     //555r%   c                6    t         j                  j                  S )zu:class:`bool`: Returns ``True`` if the user is a Discord Certified Moderator.

        .. versionadded:: 2.0
        )r   discord_certified_moderatorr1   r5   s    r#   r   z+PublicUserFlags.discord_certified_moderator  s     44:::r%   c                6    t         j                  j                  S )zx:class:`bool`: Returns ``True`` if the bot has set an interactions endpoint url.

        .. versionadded:: 2.0
        )r   bot_http_interactionsr1   r5   s    r#   r   z%PublicUserFlags.bot_http_interactions%  s     ..444r%   c                6    t         j                  j                  S )zk:class:`bool`: Returns ``True`` if the user is an Active Developer.

        .. versionadded:: 2.3
        )r   active_developerr1   r5   s    r#   r   z PublicUserFlags.active_developer-  s     ))///r%   c                j    t         D cg c]  }| j                  |j                        r|! c}S c c}w )z@List[:class:`UserFlags`]: Returns all public flags the user has.)r   r.   r1   )r!   public_flags     r#   allzPublicUserFlags.all5  s6      )
~~k//0 
 	
 
s   $0N)r9   zlist[UserFlags])r;   r<   r=   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r?   r   r   r   r   r   r'   r%   r#   r   r     sz   *X I% % ' ' ) ) * * 7 7 1 1 4 4 1 1 / / ) ) & & 2 2 , , 6 6 6 6 ; ; 5 5 0 0
r%   r   c                     e Zd ZdZdZd#dZed$d       Zed$d       Zed$d       Z	e
d        Ze
d        Zed	        Ze
d
        Ze
d        Zed        Ze
d        Ze
d        Ze
d        Ze
d        Ze
d        Zed        Ze
d        Ze
d        Zed        Ze
d        Ze
d        Zed        Ze
d        Ze
d        Ze
d        Z e
d        Z!e
d        Z"e
d        Z#e
d        Z$e
d         Z%ed!        Z&y")%r   a  Wraps up a Discord gateway intent flag.

    Similar to :class:`Permissions`\, the properties provided are two way.
    You can set and retrieve individual bits using the properties as if they
    were regular bools.

    To construct an object you can pass keyword arguments denoting the flags
    to enable or disable.

    This is used to disable certain gateway features that are unnecessary to
    run your bot. To make use of this, it is passed to the ``intents`` keyword
    argument of :class:`Client`.

    .. versionadded:: 1.5

    .. container:: operations

        .. describe:: x == y

            Checks if two flags are equal.
        .. describe:: x != y

            Checks if two flags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    Attributes
    -----------
    value: :class:`int`
        The raw value. You should query flags via the properties
        rather than using this raw value.
    r'   c                    | j                   | _        |j                         D ].  \  }}|| j                  vrt	        |d      t        | ||       0 y rV   rX   r[   s       r#   r$   zIntents.__init__w  r^   r%   c                    t        | j                  j                         D ch c]  }d|j                         dz
  z   c}      }| j	                  |       }||_        |S c c}w )zIA factory method that creates a :class:`Intents` with everything enabled.r
   )sumrH   rJ   rK   r`   r1   )rM   r   r1   r!   s       r#   r   zIntents.all~  sW     coo>T>T>VWdQ4??,q01WX{{3
	 Xs   A c                J    | j                  |       }|j                  |_        |S )zJA factory method that creates a :class:`Intents` with everything disabled.r`   rL   r1   rM   r!   s     r#   nonezIntents.none  $     {{3''
r%   c                P    | j                         }d|_        d|_        d|_        |S )zA factory method that creates a :class:`Intents` with everything enabled
        except :attr:`presences`, :attr:`members`, and :attr:`message_content`.
        F)r   	presencesmembersmessage_contentr   s     r#   defaultzIntents.default  s*    
 wwy$r%   c                     y)a  :class:`bool`: Whether guild related events are enabled.

        This corresponds to the following events:

        - :func:`on_guild_join`
        - :func:`on_guild_remove`
        - :func:`on_guild_available`
        - :func:`on_guild_unavailable`
        - :func:`on_guild_channel_update`
        - :func:`on_guild_channel_create`
        - :func:`on_guild_channel_delete`
        - :func:`on_guild_channel_pins_update`

        This also corresponds to the following attributes and classes in terms of cache:

        - :attr:`Client.guilds`
        - :class:`Guild` and all its attributes.
        - :meth:`Client.get_channel`
        - :meth:`Client.get_all_channels`

        It is highly advisable to leave this intent enabled for your bot to function.
        r
   r'   r5   s    r#   guildszIntents.guilds  s    0 r%   c                     y)a=  :class:`bool`: Whether guild member related events are enabled.

        This corresponds to the following events:

        - :func:`on_member_join`
        - :func:`on_member_remove`
        - :func:`on_raw_member_remove`
        - :func:`on_member_update`
        - :func:`on_user_update`

        This also corresponds to the following attributes and classes in terms of cache:

        - :meth:`Client.get_all_members`
        - :meth:`Client.get_user`
        - :meth:`Guild.chunk`
        - :meth:`Guild.fetch_members`
        - :meth:`Guild.get_member`
        - :attr:`Guild.members`
        - :attr:`Member.roles`
        - :attr:`Member.nick`
        - :attr:`Member.premium_since`
        - :attr:`User.name`
        - :attr:`User.avatar`
        - :attr:`User.discriminator`

        For more information go to the :ref:`member intent documentation <need_members_intent>`.

        .. note::

            This intent is privileged, meaning that bots in over 100 guilds that require this
            intent would need to request this intent on the Developer Portal.
        rD   r'   r5   s    r#   r   zIntents.members  s    D r%   c                     y)zw:class:`bool`: Alias of :attr:`.moderation`.

        .. versionchanged:: 2.5
            Changed to an alias.
        r   r'   r5   s    r#   banszIntents.bans       r%   c                     y)aH  :class:`bool`: Whether guild moderation related events are enabled.

        This corresponds to the following events:

        - :func:`on_audit_log_entry`
        - :func:`on_member_ban`
        - :func:`on_member_unban`

        This does not correspond to any attributes or classes in the library in terms of cache.
        r   r'   r5   s    r#   
moderationzIntents.moderation  s     r%   c                     y)z:class:`bool`: Alias of :attr:`.emojis_and_stickers`.

        .. versionchanged:: 2.0
            Changed to an alias.
        r   r'   r5   s    r#   emojiszIntents.emojis  r   r%   c                     y)aX  :class:`bool`: Whether guild emoji and sticker related events are enabled.

        .. versionadded:: 2.0

        This corresponds to the following events:

        - :func:`on_guild_emojis_update`
        - :func:`on_guild_stickers_update`

        This also corresponds to the following attributes and classes in terms of cache:

        - :class:`Emoji`
        - :class:`GuildSticker`
        - :meth:`Client.get_emoji`
        - :meth:`Client.get_sticker`
        - :meth:`Client.emojis`
        - :meth:`Client.stickers`
        - :attr:`Guild.emojis`
        - :attr:`Guild.stickers`
        r   r'   r5   s    r#   emojis_and_stickerszIntents.emojis_and_stickers  s    , r%   c                     y)a  :class:`bool`: Whether guild integration related events are enabled.

        This corresponds to the following events:

        - :func:`on_guild_integrations_update`
        - :func:`on_integration_create`
        - :func:`on_integration_update`
        - :func:`on_raw_integration_delete`

        This does not correspond to any attributes or classes in the library in terms of cache.
        r   r'   r5   s    r#   integrationszIntents.integrations  s     r%   c                     y)a  :class:`bool`: Whether guild webhook related events are enabled.

        This corresponds to the following events:

        - :func:`on_webhooks_update`

        This does not correspond to any attributes or classes in the library in terms of cache.
        r   r'   r5   s    r#   webhookszIntents.webhooks  s     r%   c                     y)a#  :class:`bool`: Whether guild invite related events are enabled.

        This corresponds to the following events:

        - :func:`on_invite_create`
        - :func:`on_invite_delete`

        This does not correspond to any attributes or classes in the library in terms of cache.
        r   r'   r5   s    r#   inviteszIntents.invites*  s     r%   c                     y)a  :class:`bool`: Whether guild voice state related events are enabled.

        This corresponds to the following events:

        - :func:`on_voice_state_update`

        This also corresponds to the following attributes and classes in terms of cache:

        - :attr:`VoiceChannel.members`
        - :attr:`VoiceChannel.voice_states`
        - :attr:`StageChannel.members`
        - :attr:`StageChannel.speakers`
        - :attr:`StageChannel.listeners`
        - :attr:`StageChannel.moderators`
        - :attr:`StageChannel.voice_states`
        - :attr:`Member.voice`

        .. note::

            This intent is required to connect to voice.
        r   r'   r5   s    r#   voice_stateszIntents.voice_states7  s    . r%   c                     y)a  :class:`bool`: Whether guild presence related events are enabled.

        This corresponds to the following events:

        - :func:`on_presence_update`

        This also corresponds to the following attributes and classes in terms of cache:

        - :attr:`Member.activities`
        - :attr:`Member.status`
        - :attr:`Member.raw_status`

        For more information go to the :ref:`presence intent documentation <need_presence_intent>`.

        .. note::

            This intent is privileged, meaning that bots in over 100 guilds that require this
            intent would need to request this intent on the Developer Portal.
        r   r'   r5   s    r#   r   zIntents.presencesP  s    * r%   c                     y)a  :class:`bool`: Whether guild and direct message related events are enabled.

        This is a shortcut to set or get both :attr:`guild_messages` and :attr:`dm_messages`.

        This corresponds to the following events:

        - :func:`on_message` (both guilds and DMs)
        - :func:`on_message_edit` (both guilds and DMs)
        - :func:`on_message_delete` (both guilds and DMs)
        - :func:`on_raw_message_delete` (both guilds and DMs)
        - :func:`on_raw_message_edit` (both guilds and DMs)

        This also corresponds to the following attributes and classes in terms of cache:

        - :class:`Message`
        - :attr:`Client.cached_messages`
        - :meth:`Client.get_message`
        - :attr:`Client.polls`
        - :meth:`Client.get_poll`

        Note that due to an implicit relationship this also corresponds to the following events:

        - :func:`on_reaction_add` (both guilds and DMs)
        - :func:`on_reaction_remove` (both guilds and DMs)
        - :func:`on_reaction_clear` (both guilds and DMs)

        .. note::

            :attr:`message_content` is required to receive the actual content of guild messages.
        i   r'   r5   s    r#   messageszIntents.messagesg  s    @ $r%   c                     y)a  :class:`bool`: Whether guild message related events are enabled.

        See also :attr:`dm_messages` for DMs or :attr:`messages` for both.

        This corresponds to the following events:

        - :func:`on_message` (only for guilds)
        - :func:`on_message_edit` (only for guilds)
        - :func:`on_message_delete` (only for guilds)
        - :func:`on_raw_message_delete` (only for guilds)
        - :func:`on_raw_message_edit` (only for guilds)

        This also corresponds to the following attributes and classes in terms of cache:

        - :class:`Message`
        - :attr:`Client.cached_messages` (only for guilds)
        - :meth:`Client.get_message` (only for guilds)
        - :attr:`Client.polls` (only for guilds)
        - :meth:`Client.get_poll` (only for guilds)

        Note that due to an implicit relationship this also corresponds to the following events:

        - :func:`on_reaction_add` (only for guilds)
        - :func:`on_reaction_remove` (only for guilds)
        - :func:`on_reaction_clear` (only for guilds)

        Without the :attr:`message_content` intent enabled,
        the following fields are either an empty string or empty array:

        - :attr:`Message.content`
        - :attr:`Message.embeds`
        - :attr:`Message.attachments`
        - :attr:`Message.components`
        - :attr:`Message.poll`

        For more information go to the :ref:`message content intent documentation <need_message_content_intent>`.
        i   r'   r5   s    r#   guild_messageszIntents.guild_messages  s    N r%   c                     y)a  :class:`bool`: Whether direct message related events are enabled.

        See also :attr:`guild_messages` for guilds or :attr:`messages` for both.

        This corresponds to the following events:

        - :func:`on_message` (only for DMs)
        - :func:`on_message_edit` (only for DMs)
        - :func:`on_message_delete` (only for DMs)
        - :func:`on_raw_message_delete` (only for DMs)
        - :func:`on_raw_message_edit` (only for DMs)

        This also corresponds to the following attributes and classes in terms of cache:

        - :class:`Message`
        - :attr:`Client.cached_messages` (only for DMs)
        - :meth:`Client.get_message` (only for DMs)
        - :attr:`Client.polls` (only for DMs)
        - :meth:`Client.get_poll` (only for DMs)

        Note that due to an implicit relationship this also corresponds to the following events:

        - :func:`on_reaction_add` (only for DMs)
        - :func:`on_reaction_remove` (only for DMs)
        - :func:`on_reaction_clear` (only for DMs)
        r   r'   r5   s    r#   dm_messageszIntents.dm_messages  s    8 r%   c                     y)a  :class:`bool`: Whether guild and direct message reaction related events are enabled.

        This is a shortcut to set or get both :attr:`guild_reactions` and :attr:`dm_reactions`.

        This corresponds to the following events:

        - :func:`on_reaction_add` (both guilds and DMs)
        - :func:`on_reaction_remove` (both guilds and DMs)
        - :func:`on_reaction_clear` (both guilds and DMs)
        - :func:`on_raw_reaction_add` (both guilds and DMs)
        - :func:`on_raw_reaction_remove` (both guilds and DMs)
        - :func:`on_raw_reaction_clear` (both guilds and DMs)

        This also corresponds to the following attributes and classes in terms of cache:

        - :attr:`Message.reactions` (both guild and DM messages)
        i $  r'   r5   s    r#   	reactionszIntents.reactions  s    & %r%   c                     y)a  :class:`bool`: Whether guild message reaction related events are enabled.

        See also :attr:`dm_reactions` for DMs or :attr:`reactions` for both.

        This corresponds to the following events:

        - :func:`on_reaction_add` (only for guilds)
        - :func:`on_reaction_remove` (only for guilds)
        - :func:`on_reaction_clear` (only for guilds)
        - :func:`on_raw_reaction_add` (only for guilds)
        - :func:`on_raw_reaction_remove` (only for guilds)
        - :func:`on_raw_reaction_clear` (only for guilds)

        This also corresponds to the following attributes and classes in terms of cache:

        - :attr:`Message.reactions` (only for guild messages)
        i   r'   r5   s    r#   guild_reactionszIntents.guild_reactions      & r%   c                     y)a  :class:`bool`: Whether direct message reaction related events are enabled.

        See also :attr:`guild_reactions` for guilds or :attr:`reactions` for both.

        This corresponds to the following events:

        - :func:`on_reaction_add` (only for DMs)
        - :func:`on_reaction_remove` (only for DMs)
        - :func:`on_reaction_clear` (only for DMs)
        - :func:`on_raw_reaction_add` (only for DMs)
        - :func:`on_raw_reaction_remove` (only for DMs)
        - :func:`on_raw_reaction_clear` (only for DMs)

        This also corresponds to the following attributes and classes in terms of cache:

        - :attr:`Message.reactions` (only for DM messages)
        r   r'   r5   s    r#   dm_reactionszIntents.dm_reactions  r  r%   c                     y)a}  :class:`bool`: Whether guild and direct message typing related events are enabled.

        This is a shortcut to set or get both :attr:`guild_typing` and :attr:`dm_typing`.

        This corresponds to the following events:

        - :func:`on_typing` (both guilds and DMs)

        This does not correspond to any attributes or classes in the library in terms of cache.
        i H  r'   r5   s    r#   typingzIntents.typing  s     %r%   c                     y)af  :class:`bool`: Whether guild and direct message typing related events are enabled.

        See also :attr:`dm_typing` for DMs or :attr:`typing` for both.

        This corresponds to the following events:

        - :func:`on_typing` (only for guilds)

        This does not correspond to any attributes or classes in the library in terms of cache.
           r'   r5   s    r#   guild_typingzIntents.guild_typing       r%   c                     y)ai  :class:`bool`: Whether guild and direct message typing related events are enabled.

        See also :attr:`guild_typing` for guilds or :attr:`typing` for both.

        This corresponds to the following events:

        - :func:`on_typing` (only for DMs)

        This does not correspond to any attributes or classes in the library in terms of cache.
         @  r'   r5   s    r#   	dm_typingzIntents.dm_typing+  r  r%   c                     y)a  :class:`bool`: Whether the bot will receive message content in guild messages.

        This corresponds to the following attributes:

        - :attr:`Message.content`
        - :attr:`Message.embeds`
        - :attr:`Message.attachments`
        - :attr:`Message.components`
        - :attr:`Message.poll`

        These attributes will still be available for messages received from interactions,
        the bot's own messages, messages the bot was mentioned in, and DMs.

        .. versionadded:: 2.0

        .. note::

            As of September 2022 using this intent requires opting in explicitly via the Developer Portal to receive the actual content
            of the guild messages. This intent is privileged, meaning that bots in over 100 guilds that require this
            intent would need to request this intent on the Developer Portal.
            See https://support-dev.discord.com/hc/en-us/articles/4404772028055 for more information.
           r'   r5   s    r#   r   zIntents.message_content9  s    0 r%   c                     y)at  :class:`bool`: Whether "scheduled event" related events are enabled.

        This corresponds to the following events:

        - :func:`on_scheduled_event_create`
        - :func:`on_scheduled_event_update`
        - :func:`on_scheduled_event_delete`
        - :func:`on_scheduled_event_user_add`
        - :func:`on_raw_scheduled_event_user_add`
        - :func:`on_scheduled_event_user_remove`
        - :func:`on_raw_scheduled_event_user_remove`

        This also corresponds to the following attributes and classes in terms of cache:

        - :class:`ScheduledEvent`
        - :meth:`Guild.get_scheduled_event`
           r'   r5   s    r#   scheduled_eventszIntents.scheduled_eventsS  r  r%   c                     y)a  :class:`bool`: Whether guild auto moderation configuration events are enabled.

        This corresponds to the following events:

        - :func:`on_auto_moderation_rule_create`
        - :func:`on_auto_moderation_rule_update`
        - :func:`on_auto_moderation_rule_delete`
        i   r'   r5   s    r#   auto_moderation_configurationz%Intents.auto_moderation_configurationh  s     r%   c                     y)z:class:`bool`: Whether guild auto moderation execution events are enabled.

        This corresponds to the following events:

        - :func:`on_auto_moderation_action_execution`
        i    r'   r5   s    r#   auto_moderation_executionz!Intents.auto_moderation_executiont  s     r%   c                     y)a~  :class:`bool`: Whether poll-related events in guilds are enabled.

        See also :attr:`dm_polls` for DMs or :attr:`polls` for both.

        This corresponds to the following events:

        - :func:`on_poll_vote_add` (only for guilds)
        - :func:`on_poll_vote_remove` (only for guilds)
        - :func:`on_raw_poll_vote_add` (only for guilds)
        - :func:`on_raw_poll_vote_remove` (only for guilds)

        This also corresponds to the following attributes and classes in terms of cache:

        - :attr:`PollAnswer.count` (only for guild polls)
        - :attr:`PollResults.answer_counts` (only for guild polls)
           r'   r5   s    r#   guild_pollszIntents.guild_polls~      $ r%   c                     y)a{  :class:`bool`: Whether poll-related events in direct messages are enabled.

        See also :attr:`guild_polls` for guilds or :attr:`polls` for both.

        This corresponds to the following events:

        - :func:`on_poll_vote_add` (only for DMs)
        - :func:`on_poll_vote_remove` (only for DMs)
        - :func:`on_raw_poll_vote_add` (only for DMs)
        - :func:`on_raw_poll_vote_remove` (only for DMs)

        This also corresponds to the following attributes and classes in terms of cache:

        - :attr:`PollAnswer.count` (only for DM polls)
        - :attr:`PollResults.answer_counts` (only for DM polls)
        i   r'   r5   s    r#   dm_pollszIntents.dm_polls  r,  r%   c                     y)a  :class:`bool`: Whether poll-related events in guilds and direct messages are enabled.

        This is a shortcut to set or get both :attr:`guild_polls` and :attr:`dm_polls`.

        This corresponds to the following events:

        - :func:`on_poll_vote_add` (both guilds and DMs)
        - :func:`on_poll_vote_remove` (both guilds and DMs)
        - :func:`on_raw_poll_vote_add` (both guilds and DMs)
        - :func:`on_raw_poll_vote_remove` (both guilds and DMs)

        This also corresponds to the following attributes and classes in terms of cache:

        - :attr:`PollAnswer.count` (both guild and DM polls)
        - :attr:`PollResults.answer_counts` (both guild and DM polls)
        i   r'   r5   s    r#   pollszIntents.polls  s    $ %r%   Nr   )rM   ztype[Intents]r9   r   )'r;   r<   r=   r    r   r$   r   r   r   r   r   r   r   r?   r   r   r   r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r$  r&  r(  r+  r.  r0  r'   r%   r#   r   r   >  so   3j I&        2 ! !F        .   	 	 
 
  0  , $ $B & &P  : % %(  (  ( % %      2  ( 	 	    &  & % %r%   r   c                      e Zd ZdZdZddZedd       Zedd       Ze	d        Z
ed        Zed        Zed	        Zedd
       ZddZe	d        Zy)r   a  Controls the library's cache policy when it comes to members.

    This allows for finer grained control over what members are cached.
    Note that the bot's own member is always cached. This class is passed
    to the ``member_cache_flags`` parameter in :class:`Client`.

    Due to a quirk in how Discord works, in order to ensure proper cleanup
    of cache resources it is recommended to have :attr:`Intents.members`
    enabled. Otherwise, the library cannot know when a member leaves a guild and
    is thus unable to clean up after itself.

    To construct an object you can pass keyword arguments denoting the flags
    to enable or disable.

    The default value is all flags enabled.

    .. versionadded:: 1.5

    .. container:: operations

        .. describe:: x == y

            Checks if two flags are equal.
        .. describe:: x != y

            Checks if two flags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    Attributes
    ----------
    value: :class:`int`
        The raw value. You should query flags via the properties
        rather than using this raw value.
    r'   c                   t        | j                  j                               j                         }d|z  dz
  | _        |j                         D ].  \  }}|| j                  vrt        |d      t        | ||       0 y )Nr
   rW   )rI   rH   rJ   rK   r1   rF   rY   rZ   )r!   r\   bitsr]   r1   s        r#   r$   zMemberCacheFlags.__init__  sy    4##**,-88:4i1_
 ,,. 	&JC$***3')C DEED#u%	&r%   c                    t        | j                  j                               j                         }d|z  dz
  }| j	                  |       }||_        |S )zRA factory method that creates a :class:`MemberCacheFlags` with everything enabled.r
   )rI   rH   rJ   rK   r`   r1   )rM   r3  r1   r!   s       r#   r   zMemberCacheFlags.all  sK     3??))+,779da{{3
r%   c                J    | j                  |       }|j                  |_        |S )zSA factory method that creates a :class:`MemberCacheFlags` with everything disabled.r   r   s     r#   r   zMemberCacheFlags.none  r   r%   c                4    | j                   | j                  k(  S r   )r1   rL   r5   s    r#   _emptyzMemberCacheFlags._empty  s    zzT////r%   c                     y)z:class:`bool`: Whether to cache members that are in voice.

        This requires :attr:`Intents.voice_states`.

        Members that leave voice are no longer cached.
        r
   r'   r5   s    r#   voicezMemberCacheFlags.voice  s     r%   c                     y)z:class:`bool`: Whether to cache members that joined the guild
        or are chunked as part of the initial log in flow.

        This requires :attr:`Intents.members`.

        Members that leave the guild are no longer cached.
        rD   r'   r5   s    r#   joinedzMemberCacheFlags.joined  s     r%   c                     y)z:class:`bool`: Whether to cache members obtained through interactions.

        This includes members received through
        :class:`discord.Interaction` and :class:`discord.Option`.
        r   r'   r5   s    r#   interactionzMemberCacheFlags.interaction(  s     r%   c                    | j                         }d|_        |j                  rd|_        |j                  rd|_        |S )a^  A factory method that creates a :class:`MemberCacheFlags` based on
        the currently selected :class:`Intents`.

        Parameters
        ----------
        intents: :class:`Intents`
            The intents to select from.

        Returns
        -------
        :class:`MemberCacheFlags`
            The resulting member cache flags.
        T)r   r=  r   r;  r  r9  )rM   intentsr!   s      r#   from_intentszMemberCacheFlags.from_intents1  s:      xxz??DKDJr%   c                    | j                   r|j                  st        d      | j                  r|j                  st        d      y y )Nz4MemberCacheFlags.voice requires Intents.voice_statesz0MemberCacheFlags.joined requires Intents.members)r9  r  
ValueErrorr;  r   )r!   r?  s     r#   _verify_intentsz MemberCacheFlags._verify_intentsJ  s=    ::g22STT;;wOPP  /;r%   c                     | j                   dk(  S )Nr
   rT   r5   s    r#   _voice_onlyzMemberCacheFlags._voice_onlyQ  s    zzQr%   Nr   )rM   type[MemberCacheFlags]r9   r   )rM   rF  r?  r   r9   r   )r?  r   )r;   r<   r=   r    r   r$   r   r   r   propertyr7  r   r9  r;  r=  r@  rC  rE  r'   r%   r#   r   r     s    6p I&     0 0        0Q  r%   r   c                      e Zd ZdZed        Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zed        Zed        Zed        Zed        Zy)r   az  Wraps up the Discord Application flags.

    .. container:: operations

        .. describe:: x == y

            Checks if two ApplicationFlags are equal.
        .. describe:: x != y

            Checks if two ApplicationFlags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    .. versionadded:: 2.0

    Attributes
    -----------
    value: :class:`int`
        The raw value. You should query flags via the properties
        rather than using this raw value.
    c                     y)zF:class:`bool`: Returns ``True`` if the application is a managed emoji.r   r'   r5   s    r#   managed_emojizApplicationFlags.managed_emoji       r%   c                     y)zH:class:`bool`: Returns ``True`` if the application can create group DMs.r   r'   r5   s    r#   group_dm_createz ApplicationFlags.group_dm_create  rK  r%   c                     y)zx:class:`bool`: Returns ``True`` if the application uses the Auto Moderation API.

        .. versionadded:: 2.5
        r   r'   r5   s    r#   -application_auto_moderation_rule_create_badgez>ApplicationFlags.application_auto_moderation_rule_create_badge  s     r%   c                     y)zH:class:`bool`: Returns ``True`` if the application has connected to RPC.r  r'   r5   s    r#   rpc_has_connectedz"ApplicationFlags.rpc_has_connected       r%   c                     y)z:class:`bool`: Returns ``True`` if the application is verified and is allowed to
        receive presence information over the gateway.
        r   r'   r5   s    r#   gateway_presencez!ApplicationFlags.gateway_presence      
 r%   c                     y)z:class:`bool`: Returns ``True`` if the application is allowed to receive limited
        presence information over the gateway.
        r   r'   r5   s    r#   gateway_presence_limitedz)ApplicationFlags.gateway_presence_limited  rU  r%   c                     y)z:class:`bool`: Returns ``True`` if the application is verified and is allowed to
        receive guild members information over the gateway.
        r  r'   r5   s    r#   gateway_guild_membersz&ApplicationFlags.gateway_guild_members  rU  r%   c                     y)z:class:`bool`: Returns ``True`` if the application is allowed to receive limited
        guild members information over the gateway.
        r!  r'   r5   s    r#   gateway_guild_members_limitedz.ApplicationFlags.gateway_guild_members_limited  rU  r%   c                     y):class:`bool`: Returns ``True`` if the application is currently pending verification
        and has hit the guild limit.
        r#  r'   r5   s    r#    verification_pending_guild_limitz1ApplicationFlags.verification_pending_guild_limit  rU  r%   c                     y)zY:class:`bool`: Returns ``True`` if the application is embedded within the Discord client.i   r'   r5   s    r#   embeddedzApplicationFlags.embedded  rR  r%   c                     y)za:class:`bool`: Returns ``True`` if the application is allowed to read message contents in guilds.i   r'   r5   s    r#   gateway_message_contentz(ApplicationFlags.gateway_message_content  rR  r%   c                     y)r]  i   r'   r5   s    r#   gateway_message_content_limitedz0ApplicationFlags.gateway_message_content_limited  rU  r%   c                     y)z:class:`bool`: Returns ``True`` if the application has registered at least one global application
        command, and by extension has the badge.

        .. versionadded:: 2.1
        i   r'   r5   s    r#   app_commands_badgez#ApplicationFlags.app_commands_badge       r%   c                     y)z:class:`bool`: Returns ``True`` if the  app is considered active.
        Applications are considered active if they have had any command executions in the past 30 days.

        .. versionadded:: 2.3
        r*  r'   r5   s    r#   activezApplicationFlags.active  rg  r%   N)r;   r<   r=   r    r   rJ  rM  rO  rQ  rT  rW  rY  r[  r^  r`  rb  rd  rf  ri  r'   r%   r#   r   r   V  s    )V                            r%   r   c                  0    e Zd ZdZed        Zed        Zy)r   an  Wraps up the Discord Channel flags.

    .. container:: operations

        .. describe:: x == y

            Checks if two ChannelFlags are equal.
        .. describe:: x != y

            Checks if two ChannelFlags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    .. versionadded:: 2.0

    Attributes
    -----------
    value: :class:`int`
        The raw value. You should query flags via the properties
        rather than using this raw value.
    c                     y)z_:class:`bool`: Returns ``True`` if the thread is pinned to the top of its parent forum channel.rD   r'   r5   s    r#   pinnedzChannelFlags.pinned  rK  r%   c                     y)z:class:`bool`: Returns ``True`` if a tag is required to be specified when creating a thread in a
        :class:`ForumChannel`.

        .. versionadded:: 2.2
        r   r'   r5   s    r#   require_tagzChannelFlags.require_tag  r   r%   N)r;   r<   r=   r    r   rl  rn  r'   r%   r#   r   r     s0    )V    r%   r   c                  D    e Zd ZdZdZed        Zed        Zed        Zy)r   ac  Wraps up the Discord Attachment flags.

    .. container:: operations

        .. describe:: x == y

            Checks if two flags are equal.
        .. describe:: x != y

            Checks if two flags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    .. versionadded:: 2.5

    Attributes
    -----------
    value: :class:`int`
        The raw value. You should query flags via the properties
        rather than using this raw value.
    r'   c                     y)z<:class:`bool`: Returns ``True`` if the attachment is a clip.r
   r'   r5   s    r#   is_clipzAttachmentFlags.is_clipL  rK  r%   c                     y)zA:class:`bool`: Returns ``True`` if the attachment is a thumbnail.rD   r'   r5   s    r#   is_thumbnailzAttachmentFlags.is_thumbnailQ  rK  r%   c                     y)zC:class:`bool`: Returns ``True`` if the attachment has been remixed.r   r'   r5   s    r#   is_remixzAttachmentFlags.is_remixV  rK  r%   N)	r;   r<   r=   r    r   r   rq  rs  ru  r'   r%   r#   r   r     I    )V I     r%   r   c                  D    e Zd ZdZdZed        Zed        Zed        Zy)r   ab  Wraps up the Discord SKU flags.

    .. container:: operations

        .. describe:: x == y

            Checks if two SKUFlags are equal.
        .. describe:: x != y

            Checks if two SKUFlags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    .. versionadded:: 2.5

    Attributes
    -----------
    value: :class:`int`
        The raw value. You should query flags via the properties
        rather than using this raw value.
    r'   c                     y)zE:class:`bool`: Returns ``True`` if the SKU is available for purchase.r   r'   r5   s    r#   	availablezSKUFlags.available  rK  r%   c                     y)zC:class:`bool`: Returns ``True`` if the SKU is a guild subscription.r   r'   r5   s    r#   guild_subscriptionzSKUFlags.guild_subscription  rK  r%   c                     y)zB:class:`bool`: Returns ``True`` if the SKU is a user subscription.r   r'   r5   s    r#   user_subscriptionzSKUFlags.user_subscription  rK  r%   N)	r;   r<   r=   r    r   r   ry  r{  r}  r'   r%   r#   r   r   \  rv  r%   r   c                  T    e Zd ZdZdZed        Zed        Zed        Zed        Z	y)r   ak  Wraps up the Discord Member flags.

    .. container:: operations

        .. describe:: x == y

            Checks if two MemberFlags are equal.
        .. describe:: x != y

            Checks if two MemberFlags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    .. versionadded:: 2.6

    Attributes
    -----------
    value: :class:`int`
        The raw value. You should query flags via the properties
        rather than using this raw value.
    r'   c                     y)zJ:class:`bool`: Returns ``True`` if the member left and rejoined the guild.r
   r'   r5   s    r#   
did_rejoinzMemberFlags.did_rejoin  rK  r%   c                     y)zG:class:`bool`: Returns ``True`` if the member has completed onboarding.rD   r'   r5   s    r#   completed_onboardingz MemberFlags.completed_onboarding  rK  r%   c                     y)z:class:`bool`: Returns ``True`` if the member is exempt from verification requirements.

        .. note::

            This can be edited through :func:`~discord.Member.edit`.
        r   r'   r5   s    r#   bypasses_verificationz!MemberFlags.bypasses_verification  s     r%   c                     y)zE:class:`bool`: Returns ``True`` if the member has started onboarding.r   r'   r5   s    r#   started_onboardingzMemberFlags.started_onboarding  rK  r%   N)
r;   r<   r=   r    r   r   r  r  r  r  r'   r%   r#   r   r     s]    )V I       r%   r   c                  $    e Zd ZdZdZed        Zy)r   a  Wraps up the Discord Role flags.

    .. container:: operations

        .. describe:: x == y

            Checks if two RoleFlags are equal.
        .. describe:: x != y

            Checks if two RoleFlags are not equal.
        .. describe:: x + y

            Adds two flags together. Equivalent to ``x | y``.
        .. describe:: x - y

            Subtracts two flags from each other.
        .. describe:: x | y

            Returns the union of two flags. Equivalent to ``x + y``.
        .. describe:: x & y

            Returns the intersection of two flags.
        .. describe:: ~x

            Returns the inverse of a flag.
        .. 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.

    .. versionadded:: 2.6

    Attributes
    -----------
    value: :class:`int`
        The raw value. This value is a bit array field of a 53-bit integer
        representing the currently available flags. You should query
        flags via the properties rather than using this raw value.
    r'   c                     y)zs:class:`bool`: Returns ``True`` if the role is selectable in one of the guild's :class:`~discord.OnboardingPrompt`.r
   r'   r5   s    r#   	in_promptzRoleFlags.in_prompt  rK  r%   N)r;   r<   r=   r    r   r   r  r'   r%   r#   r   r     s!    *X I r%   r   N)r@   r:   )r    
__future__r   r  r   r   r   r   r   r	   enumsr   __all__r   r   r   r?   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r'   r%   r#   <module>r     s  2 # G G  T&T%2 2.	z 	 ). ([ [| $Y Y  Yx 9  D [
i [
 [
| y	%i y	% y	%x Wy W Wt Gy G GT 89 8 8v ;i ; ;| ;y ; ;| E) E EP 2	 2 2r%   