
    cjh                    0   d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZ dZerPddlmZ ddlmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z* ddl+mZ, ddl-m#Z. ddl/mZ0 ddl1m'Z2 ddl3m4Z5 ddl6m7Z7  ed      Z8 ed      Z9e
e8gee9e	e9   f   f   Z: ed      Z; G d dee8         Z<d Z= G d de<ee8            Z> G d de<e8         Z? G d  d!e<e8         Z@ G d" d#e<ed$            ZA G d% d&e<ed$            ZB G d' d(e<d)         ZC G d* d+e<d,         ZD G d- d.e<d/         ZE G d0 d1e<d2         ZF G d3 d4e<d5         ZG G d6 d7e<d8         ZH G d9 d:e<ed$            ZI G d; d<e<d=         ZJy)>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.
    )annotationsN)TYPE_CHECKINGAnyAsyncIterator	AwaitableCallableListTypeVarUnion   )AuditLogEntry)NoMoreItems)Entitlement)Object)maybe_coroutinesnowflake_timetime_snowflake)ReactionIteratorHistoryIteratorAuditLogIteratorGuildIteratorMemberIterator!ScheduledEventSubscribersIteratorEntitlementIterator)	Snowflake)BanEntryGuildMember)Message)ScheduledEventThread)AuditLogr   )PartialUserUserTOTidc                  P    e Zd ZdZddZddZddZddZddZddZ	ddZ
dd	Zy
)_AsyncIterator c                   K   t         wNNotImplementedErrorselfs    D/var/www/html/venv/lib/python3.12/site-packages/discord/iterators.pynextz_AsyncIterator.nextR   s     !!   	c                2    dfd}| j                  |      S )Nc                    j                         D ]2  \  }}|j                  d      }| }|D ]  }t        ||      } ||k7  s2 y y)N__FT)itemssplitgetattr)elemattrvalnestedobj	attributeattrss         r6   	predicatez%_AsyncIterator.get.<locals>.predicateV   s[    "[[] !	cD)!' 2I!#y1C2 #: !     )r?   r)   )find)r5   rE   rF   s    ` r6   getz_AsyncIterator.getU   s    		 yy##rG   c                   K   	 	 | j                          d {   }t        ||       d {   }|r|S 27 # t        $ r Y y w xY w7 wr1   )r7   r   r   )r5   rF   r?   rets       r6   rH   z_AsyncIterator.findc   sT     !YY[( (	488C (  9s;   A	8 68 A	A	A	8 	AA	AA	c                :    |dk  rt        d      t        | |      S )Nr   z2async iterator chunk sizes must be greater than 0.)
ValueError_ChunkedAsyncIterator)r5   max_sizes     r6   chunkz_AsyncIterator.chunkn   s"    q=QRR$T844rG   c                    t        | |      S r1   )_MappedAsyncIterator)r5   funcs     r6   mapz_AsyncIterator.maps   s    #D$//rG   c                    t        | |      S r1   )_FilteredAsyncIterator)r5   rF   s     r6   filterz_AsyncIterator.filterv   s    %dI66rG   c                D   K   | 2 cg c3 d {   }|7 6 c}S c c}w wr1   r/   )r5   elements     r6   flattenz_AsyncIterator.flatteny   s!     -122'2222s$    
 c                n   K   	 | j                          d {   S 7 # t        $ r t               w xY wwr1   )r7   r   StopAsyncIterationr4   s    r6   	__anext__z_AsyncIterator.__anext__|   s4     	'$$$ 	'$&&	's    5  5 25Nreturnr)   )rE   r   r_   zAwaitable[T | None])rF   _Func[T, bool]r_   zT | None)rO   intr_   z_ChunkedAsyncIterator[T])rS   z_Func[T, OT]r_   z_MappedAsyncIterator[OT])rF   r`   r_   z_FilteredAsyncIterator[T]r_   zlist[T])__name__
__module____qualname__	__slots__r7   rI   rH   rP   rT   rW   rZ   r]   r/   rG   r6   r.   r.   O   s/    I"$	5
073'rG   r.   c                    | S r1   r/   )xs    r6   	_identityri      s    HrG   c                      e Zd Zd ZddZy)rN   c                     || _         || _        y r1   )iteratorrO   )r5   rl   rO   s      r6   __init__z_ChunkedAsyncIterator.__init__   s      rG   c                   K   g }d}|| j                   k  rI	 | j                  j                          d {   }|j                  |       |dz  }|| j                   k  rI|S 7 ,# t        $ r |r|cY S  w xY ww)Nr   r   )rO   rl   r7   appendr   )r5   rK   nitems       r6   r7   z_ChunkedAsyncIterator.next   s     $--!]]//11 

4 Q $-- 
 2 Js=   A7A# A!A# %A7A7!A# #A40A72A44A7Nrb   rc   rd   re   rm   r7   r/   rG   r6   rN   rN      s    !rG   rN   c                      e Zd Zd ZddZy)rR   c                     || _         || _        y r1   )rl   rS   )r5   rl   rS   s      r6   rm   z_MappedAsyncIterator.__init__   s     	rG   c                   K   | j                   j                          d {   }t        | j                  |       d {   S 7 "7 wr1   )rl   r7   r   rS   )r5   rq   s     r6   r7   z_MappedAsyncIterator.next   s8     ]]''))$TYY555 *5s   AAAAAANr^   rr   r/   rG   r6   rR   rR      s    6rG   rR   c                      e Zd Zd ZddZy)rV   c                0    || _         |t        }|| _        y r1   )rl   ri   rF   )r5   rl   rF   s      r6   rm   z_FilteredAsyncIterator.__init__   s     !I"rG   c                   K   | j                   j                  }| j                  }	  |        d {   }t        ||       d {   }|r|S (7 7 wr1   )rl   r7   rF   r   )r5   getterpredrq   rK   s        r6   r7   z_FilteredAsyncIterator.next   sM     ##~~>D'd33C !3s!   .AAAA
AANr^   rr   r/   rG   r6   rV   rV      s    #rG   rV   c                  "    e Zd ZddZddZd Zy)r   Nc                0   || _         || _        || _        || _        |j                  }|j
                  j                  | _        || _        || _	        |j                  | _
        |j                  j                  | _        t        j                         | _        y r1   )messagelimitaftertype_statehttpget_reaction_usersry   stateemojiguildchannelr,   
channel_idasyncioQueueusers)r5   r}   r   r~   r   r   r   s          r6   rm   zReactionIterator.__init__   so    

	jj33

]]
!//,,]]_
rG   c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   r   empty
fill_users
get_nowaitr   
QueueEmptyr   r4   s    r6   r7   zReactionIterator.next   a     :://###	 ::((** $ !! 	 -	 &   .A3AA3A A3A00A3c                  K   ddl m} | j                  dkD  rt        | j                  d      }| j                  r| j                  j
                  nd }| j                  | j                  | j                  j
                  | j                  ||| j                         d {   }|r5| xj                  |z  c_        t        t        |d   d               | _        t        |      D ]  }| j                  t        | j                  t              r6| j                   j#                   || j$                  |	             d {    _t        |d         }| j                  j'                  |      }|$| j                   j#                  |       d {    | j                   j#                   || j$                  |	             d {     y y 7 .7 7 C7 w)
Nr   r'   r   d   )r   r   r,   r+   r   data)userr(   r~   minr   r,   ry   r   r}   r   r   r   ra   reversedr   
isinstancer   putr   
get_member)r5   r(   retriever   r   rY   	member_idmembers           r6   r   zReactionIterator.fill_users   sj    ::>4::s+H%)ZZDJJMMTE37;;

YY 4? 4 .D 

h&
#s48D>':;
#D> 	S::%DJJ)G**..DJJW)MNNN #GDM 2I!ZZ229=F)"jjnnV444"jjnnT

-QRRR	S# . O
 5RsJ   BGG BG?G AGG5GG	GGGG)r   NNr_   zUser | Memberrc   rd   re   rm   r7   r   r/   rG   r6   r   r      s    % SrG   r   )r(   r   c                  "    e Zd ZddZddZd Zy)VoteIteratorNc                "   || _         || _        || _        |j                  }|j                  j
                  | _        || _        || _        |j                  | _	        |j                  j                  | _        t        j                         | _        y r1   )r}   r~   r   r   r   get_answer_votersry   r   answerr   r   r,   r   r   r   r   )r5   r}   r   r~   r   r   s         r6   rm   zVoteIterator.__init__   sh    

jj22
]]
!//,,]]_
rG   c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   r   r4   s    r6   r7   zVoteIterator.next   r   r   c                  K   ddl m} | j                  dkD  rt        | j                  d      }| j                  r| j                  j
                  nd }| j                  | j                  | j                  j
                  | j                  j
                  ||       d {   }|j                  dg       }|r5| xj                  |z  c_        t        t        |d   d         	      | _        t        |      D ]  }| j                  t        | j                  t              r6| j                   j#                   || j$                  |
             d {    _t        |d         }| j                  j'                  |      }|$| j                   j#                  |       d {    | j                   j#                   || j$                  |
             d {     y y 7 @7 7 C7 w)Nr   r'   r   r   r   r   r   r,   r+   r   )r   r(   r~   r   r   r,   ry   r   r}   r   rI   r   ra   r   r   r   r   r   r   r   )	r5   r(   r   r   reqr   rY   r   r   s	            r6   r   zVoteIterator.fill_users	  sw    ::>4::s+H%)ZZDJJMMTE $  C .1WWWb-AD

h&
#s48D>':;
#D> 	S::%DJJ)G**..DJJW)MNNN #GDM 2I!ZZ229=F)"jjnnV444"jjnnT

-QRRR	S#  O
 5RsJ   BG'GB1G'G!AG'G# 5G'G%	G'!G'#G'%G')r   Nr   r   r/   rG   r6   r   r      s    
% SrG   r   c                  n    e Zd ZdZ	 	 	 	 ddZddZddZd ZddZ	 	 	 	 ddZ		 	 	 	 dd	Z
	 	 	 	 dd
Zy)r   a  Iterator for receiving a channel's message history.

    The messages endpoint has two behaviours we care about here:
    If ``before`` is specified, the messages endpoint returns the `limit`
    newest messages before ``before``, sorted with newest first. For filling over
    100 messages, update the ``before`` parameter to the oldest message received.
    Messages will be returned in order by time.
    If ``after`` is specified, it returns the ``limit`` oldest messages after
    ``after``, sorted with newest first. For filling over 100 messages, update the
    ``after`` parameter to the newest message received. If messages are not
    reversed, they will be out of order (99-0, 199-100, so on)

    A note that if both ``before`` and ``after`` are specified, ``before`` is ignored by the
    messages endpoint.

    Parameters
    ----------
    messageable: :class:`abc.Messageable`
        Messageable class to retrieve message history from.
    limit: :class:`int`
        Maximum number of messages to retrieve
    before: Optional[Union[:class:`abc.Snowflake`, :class:`datetime.datetime`]]
        Message before which all messages must be.
    after: Optional[Union[:class:`abc.Snowflake`, :class:`datetime.datetime`]]
        Message after which all messages must be.
    around: Optional[Union[:class:`abc.Snowflake`, :class:`datetime.datetime`]]
        Message around which all messages must be. Limit max 101. Note that if
        limit is an even number, this will return at most limit+1 messages.
    oldest_first: Optional[:class:`bool`]
        If set to ``True``, return messages in oldest->newest order. Defaults to
        ``True`` if `after` is specified, otherwise ``False``.
    Nc                    t        |t        j                        rt        t        |d            }t        |t        j                        rt        t        |d            }t        |t        j                        rt        t        |            }||d un| _        | _        | _        | _        |xs t         _	        | _
        d  _         j
                  j                   _         j                  j                  j                   _        t!        j"                          _         j                  r j                  t'        d       j                  dkD  rt'        d       j                  dk(  rd _         j(                   _         j                  r j                  r fd	 _        y  j                  r fd
 _        y  j                  r fd _        y y  j                  r) j,                   _         j                  r fd _        y y  j.                   _         j                  r j                  t        k7  r fd _        y y y )NFhighr+   Tz/history does not support around with limit=Nonee   z6history max limit 101 when specifying around parameterr   c                    j                   j                  t        | d         cxk  xr j                  j                  k  S c S Nr,   )r   r,   ra   beforemr5   s    r6   <lambda>z*HistoryIterator.__init__.<locals>.<lambda>u  s.    QtW)V)V )V rG   c                N    t        | d         j                  j                  k  S r   ra   r   r,   r   s    r6   r   z*HistoryIterator.__init__.<locals>.<lambda>w      QtW)F rG   c                N    j                   j                  t        | d         k  S r   )r   r,   ra   r   s    r6   r   z*HistoryIterator.__init__.<locals>.<lambda>y  s    QtW)E rG   c                N    t        | d         j                  j                  k  S r   r   r   s    r6   r   z*HistoryIterator.__init__.<locals>.<lambda>}  r   rG   c                N    t        | d         j                  j                  kD  S r   ra   r   r,   r   s    r6   r   z*HistoryIterator.__init__.<locals>.<lambda>  s    QtW

)E rG   )r   datetimer   r   reversemessageabler~   r   OLDEST_OBJECTr   around_filterr   r   r   	logs_fromr   r   messagesrM   "_retrieve_messages_around_strategy_retrieve_messages!_retrieve_messages_after_strategy"_retrieve_messages_before_strategy)r5   r   r~   r   r   r   oldest_firsts   `      r6   rm   zHistoryIterator.__init__L  s    fh//0~f5ABFeX../nU>?Efh//0~f56F,8,@uD(l&
+m
%%,,
22;;zz! !RSSzzC L  s" 
&*&M&MD#{{tzzVFE \\&*&L&LD#{{F  '+&M&MD#zzdjjM9E :zrG   c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   )r   r   fill_messagesr   r   r   r   r4   s    r6   r7   zHistoryIterator.next  sc     == $$&&&	 ==++-- ' !! 	 -	 r   c                J    | j                   }||dkD  rd}n|}|| _        |dkD  S Nr   r   r~   r   r5   lrs      r6   _get_retrievezHistoryIterator._get_retrieve  0    JJ9CAA1urG   c                (  K   t        | d      s)| j                  j                          d {   }|| _        | j	                         r| j                  | j                         d {   }t        |      dk  rd| _        | j                  rt        |      }| j                  rt        | j                  |      }| j                  }|D ]@  }| j                  j                  | j                  j!                  ||             d {    B y y 7 7 7 w)Nr   r   r   )r   r   )hasattrr   _get_channelr   r   r   r   lenr~   r   r   r   rW   r   r   r   create_message)r5   r   r   rY   s       r6   r   zHistoryIterator.fill_messages  s     tY' ,,99;;G"DL00??D4y3
||~||dllD1llG mm''JJ--gG-L     < @s4   *DD9D&D'BDD	DDDc                   K   t         w)z-Retrieve messages and update next parameters.r2   r5   r   s     r6   r   z"HistoryIterator._retrieve_messages       !!r8   c                R  K   | j                   r| j                   j                  nd}| j                  | j                  j                  ||       d{   }t	        |      rA| j
                  | xj
                  |z  c_        t        t        |d   d               | _         |S 7 Rw)z)Retrieve messages using before parameter.Nr   r   r,   r+   )r   r,   r   r   r   r~   r   ra   r5   r   r   r   s       r6   r   z2HistoryIterator._retrieve_messages_before_strategy  s      $(;;D+/>>LLOOXf ,: ,
 &
 t9zz%

h&
 CR$78DK&
   AB'B%AB'c                R  K   | j                   r| j                   j                  nd}| j                  | j                  j                  ||       d{   }t	        |      rA| j
                  | xj
                  |z  c_        t        t        |d   d               | _         |S 7 Rw)z(Retrieve messages using after parameter.Nr   r   r,   r+   )r   r,   r   r   r   r~   r   ra   r5   r   r   r   s       r6   r   z1HistoryIterator._retrieve_messages_after_strategy  s      "&

+/>>LLOOXU ,: ,
 &
 t9zz%

h&
3tAwt}#56DJ&
r   c                   K   | j                   r]| j                   r| j                   j                  nd}| j                  | j                  j                  ||       d{   }d| _         |S g S 7 w)z)Retrieve messages using around parameter.N)r   )r   r,   r   r   )r5   r   r   r   s       r6   r   z2HistoryIterator._retrieve_messages_around_strategy  sc      ;;'+{{T[[^^F/3~~& 0> 0 *D DKK	*s   AA0A.A0)NNNN)r_   r    )r_   bool)r   ra   r_   zlist[MessagePayload])rc   rd   re   __doc__rm   r7   r   r   r   r   r   r   r/   rG   r6   r   r   *  sp    J 5Fn ,"			rG   r   r    c                  8    e Zd Z	 	 	 	 	 ddZd ZddZd Zd Zy)	r   Nc                   t        |t        j                        rt        t        |d            }t        |t        j                        rt        t        |d            }|| _        |j
                  j                  | _        |j
                  j                  j                  | _	        || _
        || _        || _        || _        || _        i | _        |j
                  | _        t!        j"                         | _        y NFr   r+   T)r   r   r   r   r   r   loopr   get_audit_logsrequestr~   r   user_idaction_typer   _usersr   r   entries)r5   r   r~   r   r   r   r   s          r6   rm   zAuditLogIterator.__init__  s     fh//0~f5ABFeX../nU>?E
LL%%	||((77
&
ll}}rG   c                  K   | j                         sy | j                  r| j                  j                  nd }| j                  r| j                  j                  nd }| j	                  | j
                  j                  || j                  | j                  ||       d {   }|j                  dg       }t        |      r|r| j                  | xj                  |z  c_
        | j                  s| j                  s t        t        |d   d               | _        | j                  r,| j                  s t        t        |d   d               | _        |j                  dg       |fS 7 ȭw)N)r~   r   r   r   r   audit_log_entriesr   r,   r+   r   )r   r   r,   r   r   r   r   r   rI   r   r~   r   ra   )r5   r   r   r   r   r   s         r6   _retrieve_entriesz"AuditLogIterator._retrieve_entries  s    !!##';;D!%

&*llJJMMLL(( '3 '
 !
 ((.3t9zz%

h&
{{$**$GBK,=(>?zz$++#s72;t+<'=>
xx$g--%!
s   BE)E'C	E)c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   )r   r   _fillr   r   r   r   r4   s    r6   r7   zAuditLogIterator.next  s`     <<**,	 <<**,,  !! 	 -	 r   c                J    | j                   }||dkD  rd}n|}|| _        |dkD  S r   r   r   s      r6   r   zAuditLogIterator._get_retrieve  r   rG   c                  K   ddl m} | j                         r| j                  | j                         d {   \  }}t        |      dk  rd| _        |D ]/  } ||| j                        }|| j                  |j                  <   1 |D ]E  }| j                  j                  t        || j                  | j                               d {    G y y 7 7 
w)Nr   r'   r   r   r   r   )r   r   r   )r   r(   r   r   r   r   r~   r   r   r,   r   r   r   r   )r5   r(   r   r   r   urY   s          r6   r   zAuditLogIterator._fill  s      $ 6 6t}} EEKE44y3
 &d$++6$%ADD!&   ll&&!wdkkT    Es"   5CCBCC	CC)NNNNN)r_   r   )rc   rd   re   rm   r   r7   r   r   r/   rG   r6   r   r     s,     '4.2 rG   r   r   c                  F    e Zd ZdZddZddZd Zd Zd ZddZ	d	 Z
d
 Zy)r   a  Iterator for receiving the client's guilds.

    The guilds endpoint has the same two behaviours as described
    in :class:`HistoryIterator`:
    If ``before`` is specified, the guilds endpoint returns the ``limit``
    newest guilds before ``before``, sorted with newest first. For filling over
    100 guilds, update the ``before`` parameter to the oldest guild received.
    Guilds will be returned in order by time.
    If `after` is specified, it returns the ``limit`` oldest guilds after ``after``,
    sorted with newest first. For filling over 100 guilds, update the ``after``
    parameter to the newest guild received, If guilds are not reversed, they
    will be out of order (99-0, 199-100, so on)

    Not that if both ``before`` and ``after`` are specified, ``before`` is ignored by the
    guilds endpoint.

    Parameters
    ----------
    bot: :class:`discord.Client`
        The client to retrieve the guilds from.
    limit: :class:`int`
        Maximum number of guilds to retrieve.
    before: Optional[Union[:class:`abc.Snowflake`, :class:`datetime.datetime`]]
        Object before which all guilds must be.
    after: Optional[Union[:class:`abc.Snowflake`, :class:`datetime.datetime`]]
        Object after which all guilds must be.
    Nc                    t        |t        j                        rt        t        |d            }t        |t        j                        rt        t        |d            }| _        | _        | _        | _        d  _         j                  j                   _
         j                  j                  j                   _        t        j                          _         j                  r( j                  r j                    _         fd _        y  j                  r j$                   _        y  j                    _        y )NFr   r+   Tc                N    t        | d         j                  j                  kD  S r   r   r   s    r6   r   z(GuildIterator.__init__.<locals>.<lambda>a      S4\DJJMM%A rG   )r   r   r   r   botr~   r   r   r   _connectionr   r   
get_guildsr   r   guilds _retrieve_guilds_before_strategy_retrieve_guilds_retrieve_guilds_after_strategy)r5   r   r~   r   r   s   `    r6   rm   zGuildIterator.__init__N  s    fh//0~f5ABFeX../nU>?E

XX))
((--22mmo;;4::$($I$ID!ADLZZ$($H$HD!$($I$ID!rG   c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   )r  r   fill_guildsr   r   r   r   r4   s    r6   r7   zGuildIterator.nextg  sc     ;;""$$$	 ;;))++ % !! 	 -	 r   c                J    | j                   }||dkD  rd}n|}|| _        |dkD  S r   r   r   s      r6   r   zGuildIterator._get_retrievep  r   rG   c                6    ddl m}  || j                  |      S )Nr   r%   r   )r   r   r   )r5   r   r   s      r6   create_guildzGuildIterator.create_guildy  s     4::D11rG   c                t  K   | j                         r| j                  | j                         d {   }| j                  t	        |      dk  rd| _        | j
                  rt        | j
                  |      }|D ]4  }| j                  j                  | j                  |             d {    6 y y 7 7 
wr   )
r   r  r   r~   r   r   rW   r  r   r	  r5   r   rY   s      r6   r  zGuildIterator.fill_guilds~  s     ..t}}==Dzz!SY_
||dllD1 Bkkood&7&7&@AAAB  = Bs"   /B8B4A9B8+B6,	B86B8c                   K   t         w)z+Retrieve guilds and update next parameters.r2   r   s     r6   r  zGuildIterator._retrieve_guilds  r   r8   c                (  K   | j                   r| j                   j                  nd}| j                  ||       d{   }t        |      rA| j                  | xj                  |z  c_        t        t        |d   d               | _         |S 7 Rw)z'Retrieve guilds using before parameter.Nr   r   r,   r+   )r   r,   r   r   r~   r   ra   r   s       r6   r  z.GuildIterator._retrieve_guilds_before_strategy  ss     #';;D)-&)Q#Qt9zz%

h&
 CR$78DK $R   ;BBABc                (  K   | j                   r| j                   j                  nd}| j                  ||       d{   }t        |      rA| j                  | xj                  |z  c_        t        t        |d   d               | _         |S 7 Rw)z&Retrieve guilds using after parameter.Nr   r   r,   r+   )r   r,   r   r   r~   r   ra   r   s       r6   r  z-GuildIterator._retrieve_guilds_after_strategy  ss     !%

)-)O#Ot9zz%

h&
3tAwt}#56DJ $Pr  )NN)r_   r   )r_   zlist[Guild])rc   rd   re   r   rm   r7   r   r	  r  r  r  r  r/   rG   r6   r   r   1  s1    8J2 2

B"rG   r   r   c                  .    e Zd ZddZddZd Zd Zd Zy)	r   Nc                R   t        |t        j                        rt        t        |d            }|| _        || _        |xs t        | _        | j                  j                  | _	        | j                  j                  j                  | _        t        j                         | _        y )NTr   r+   )r   r   r   r   r   r~   r   r   r   r   r   get_membersr   r   members)r5   r   r~   r   s       r6   rm   zMemberIterator.__init__  sq    eX../nU>?E

+m
ZZ&&
::??66}}rG   c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   )r  r   fill_membersr   r   r   r   r4   s    r6   r7   zMemberIterator.next  sc     <<##%%%	 <<**,, & !! 	 -	 r   c                J    | j                   }||dkD  rd}n|}|| _        |dkD  S N  r   r   r   s      r6   r   zMemberIterator._get_retrieve  0    JJ9DAA1urG   c                  K   | j                         sy | j                  r| j                  j                  nd }| j                  | j                  j                  | j
                  |       d {   }|sy t        |      dk  rd| _        t        t        |d   d   d               | _        t        |      D ]4  }| j                  j                  | j                  |             d {    6 y 7 7 	wNr  r   r   r   r,   r+   )r   r   r,   r  r   r   r   r~   r   ra   r   r  r   create_member)r5   r   r   rY   s       r6   r  zMemberIterator.fill_members  s     !!#!%

%%djjmmT]]EJJt9tDJs48F#3D#9:;
~ 	@G,,""4#5#5g#>???	@ K @s%   A*C3,C/-A:C3'C1(C31C3c                L    ddl m}  ||| j                  | j                        S )Nr   r   r   r   r   )r   r   r   r   )r5   r   r   s      r6   r  zMemberIterator.create_member  s    "4tzzDDrG   )r  N)r_   r   )rc   rd   re   rm   r7   r   r  r  r/   rG   r6   r   r     s    
' @"ErG   r   r   c                  .    e Zd ZddZddZd Zd Zd Zy)	BanIteratorNc                    || _         || _        || _        || _        | j                   j                  | _        | j
                  j                  j                  | _        t        j                         | _
        y r1   )r   r~   r   r   r   r   r   get_bansr   r   bans)r5   r   r~   r   r   s        r6   rm   zBanIterator.__init__  sQ    


ZZ&&


00MMO	rG   c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   )r#  r   	fill_bansr   r   r   r   r4   s    r6   r7   zBanIterator.next  s_     99??.."""	 99'')) # !! 	 -	 r   c                J    | j                   }||dkD  rd}n|}|| _        |dkD  S r  r   r   s      r6   r   zBanIterator._get_retrieve  r  rG   c                  K   | j                         sy | j                  r| j                  j                  nd }| j                  r| j                  j                  nd }| j	                  | j
                  j                  | j                  ||       d {   }|sy | j                  r| xj                  | j                  z  c_        t        |      dk  rd| _        t        t        |d   d   d               | _        t        |      D ]4  }| j                  j                  | j                  |             d {    6 y 7 7 	wr  )r   r   r,   r   r"  r   r   r~   r   r   ra   r   r#  r   
create_ban)r5   r   r   r   rY   s        r6   r%  zBanIterator.fill_bans  s     !!##';;D!%

]]4::==$--OO::JJ$--'Jt9tDJs48F#3D#9:;
~ 	:G))-- 8999	: P :s%   BED?B%E7E8EEc                ^    ddl m} ddlm}  ||d    || j                  |d               S )Nr   )r   r'   reasonr   r   )r*  r   )r   r   r   r(   r   )r5   r   r   r(   s       r6   r(  zBanIterator.create_ban
  s-    #>4::DL(Q
 	
rG   )NNN)r_   r   )rc   rd   re   rm   r7   r   r%  r(  r/   rG   r6   r   r     s    $ :(
rG   r   r   c                  j    e Zd Z	 d	 	 	 	 	 	 	 	 	 	 	 d	dZd
dZedd       Zedd       ZddZddZ	y)ArchivedThreadIteratorNc                   || _         || _        || _        || _        || _        |j
                  j                  | _        |r|st        d      |  |d | _        nt        |t        j                        r4|rt        t        |d            | _        n[|j                         | _        nE|rt        |j                        | _        n(t        |j                        j                         | _        | j                   | _        |r-| j                  j$                  | _        | j(                  | _        n9|r| j                  j*                  | _        n| j                  j,                  | _        t/        j0                         | _        d| _        y )Nz2Cannot iterate over joined public archived threadsFr   T)r   r   r~   joinedprivater   r   rM   r   r   r   strr   	isoformatr,   r   get_archive_timestampupdate_before#get_joined_private_archived_threadsendpointget_thread_idget_private_archived_threadsget_public_archived_threadsr   r   queuehas_more)r5   r   r   r~   r.  r/  r   s          r6   rm   zArchivedThreadIterator.__init__  s"    %

LL%%	'QRR>DK 1 12!.e"DE$..0!&))n,VYY7AAC=A=W=W IIIIDM!%!3!3D IIBBDM IIAADM,3MMO
"rG   c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   )r9  r   
fill_queuer   r   r   r   r4   s    r6   r7   zArchivedThreadIterator.nextB  r   r   c                    | d   d   S )Nthread_metadataarchive_timestampr/   r   s    r6   r2  z,ArchivedThreadIterator.get_archive_timestampK  s    %&':;;rG   c                    | d   S r   r/   r@  s    r6   r6  z$ArchivedThreadIterator.get_thread_idO  s    DzrG   c                v  K   | j                   s
t               | j                  dnt        | j                  d      }| j	                  | j
                  | j                  |       d {   }|j                  dg       }t        |      D ],  }| j                  j                  | j                  |             . |j                  dd      | _         | j                  4| xj                  t        |      z  c_        | j                  dk  rd| _         | j                   r| j                  |d         | _        y y 7 έw)N2   )r   r~   threadsr:  Fr   r   )r:  r   r~   maxr5  r   r   rI   r   r9  
put_nowaitcreate_threadr   r3  )r5   r~   r   rD  ds        r6   r<  z!ArchivedThreadIterator.fill_queueS  s     }}-jj(c$**b.A]]4??4;;e]TT (,xx	2'>'" 	9AJJ!!$"4"4Q"78	9 U3::!JJ#g,&JzzQ %==,,WR[9DK  Us   A&D9(D7)CD9c                `    ddl m}  || j                  | j                  j                  |      S )Nr   r"   )r   r   r   )rD  r#   r   r   )r5   r   r#   s      r6   rG  z$ArchivedThreadIterator.create_threadh  s"    #DJJdjj.?.?dKKrG   r1   )r   ra   r   r   r~   
int | Noner.  r   r/  r   r   z$Snowflake | datetime.datetime | None)r_   r#   )r   ThreadPayloadr_   r0  )r_   None)r   rK  r_   r#   )
rc   rd   re   rm   r7   staticmethodr2  r6  r<  rG  r/   rG   r6   r,  r,    s     8<,#,# ,# 	,#
 ,# ,# 5,#\  < <  :*LrG   r,  r#   c                  N    e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 d	dZd
dZd Zd Zd Zd Zy)r   Nc                   t        |t        j                        rt        t        |d            }t        |t        j                        rt        t        |d            }|| _        || _        || _        || _        || _        t        j                         | _        | j                  j                  j                  j                  | _        y r   )r   r   r   r   eventr~   with_memberr   r   r   r   subscribersr   r   get_scheduled_event_usersget_subscribers)r5   rP  r~   rQ  r   r   s         r6   rm   z*ScheduledEventSubscribersIterator.__init__o  s     fh//0~f5ABFeX../nU>?E

&
"==?#zz0055OOrG   c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   )rR  r   	fill_subsr   r   r   r   r4   s    r6   r7   z&ScheduledEventSubscribersIterator.next  se     !!#.."""	 ##..00 # !! 	 -	 r   c                J    | j                   }||dkD  rd}n|}|| _        |dkD  S r   r   r   s      r6   r   z/ScheduledEventSubscribersIterator._get_retrieve  r   rG   c                    ddl m} |j                  d      }|j                  d      }||d<    ||| j                  j                  | j                  j
                        S )Nr   r   r   r   r  )r   r   poprP  r   r   )r5   r   r   r   r   s        r6   member_from_payloadz5ScheduledEventSubscribersIterator.member_from_payload  sM    "xx(#v6)9)9ARARSSrG   c                l    ddl m} |j                  d      } || j                  j                  |      S )Nr   r'   r   r   )r   r(   rY  rP  r   )r5   r   r(   r   s       r6   user_from_payloadz3ScheduledEventSubscribersIterator.user_from_payload  s*    xx$**++$77rG   c                j  K   | j                         sy | j                  r| j                  j                  nd }| j                  r| j                  j                  nd }| j	                  | j
                  j                  j                  | j
                  j                  | j                  | j                  ||       d {   }t        |      }|| j                  k  rd| _
        nP|dkD  rK| j                  r| xj                  | j                  z  c_
        t        t        |d   d               | _        t        |      D ]k  }d|v r3| j                  j                  | j!                  |             d {    :| j                  j                  | j#                  |             d {    m y 7 7 <7 w)N)guild_idevent_idr~   rQ  r   r   r   r   r   r+   r   )r   r   r,   r   rT  rP  r   r   rQ  r   r~   r   ra   r   rR  r   rZ  r\  )r5   r   r   r   data_lengthrY   s         r6   rV  z+ScheduledEventSubscribersIterator.fill_subs  s\    !!##';;D!%

))ZZ%%((ZZ]]--(( * 
 
 $i&DJ1_zz

dmm+
3tBx	':#;<DJ~ 	LG7"&&**4+C+CG+LMMM&&**4+A+A'+JKKK		L#
& NKs7   B:F3<F-=B5F32F/32F3%F1&F3/F31F3)FNN)
rP  r!   r~   rJ  rQ  r   r   datetime.datetime | int | Noner   ra  r   )	rc   rd   re   rm   r7   r   rZ  r\  rV  r/   rG   r6   r   r   n  sc    
 "1504PP P 	P
 /P .P, T8LrG   r   c                  z    e Zd Z	 	 	 	 	 	 	 d		 	 	 	 	 	 	 	 	 	 	 	 	 d
dZddZd Zd ZddZ	 	 	 	 ddZ	 	 	 	 ddZ	y)r   Nc	                v    | _         | _        t        |t        j                        rt	        t        |d            }t        |t        j                        rt	        t        |d            }| _        | _        | _        | _	        | _
        d  _         j                  r( j                  r j                   _         fd _        n/ j                  r j                   _        n j                   _        | _        |j                   j"                   _        t'        j(                          _        y )NFr   r+   Tc                N    t        | d         j                  j                  kD  S r   r   )er5   s    r6   r   z.EntitlementIterator.__init__.<locals>.<lambda>  r   rG   )r   sku_idsr   r   r   r   r   r   r~   r^  exclude_endedr   &_retrieve_entitlements_before_strategy_retrieve_entitlements%_retrieve_entitlements_after_strategyr   r   list_entitlementsget_entitlementsr   r   entitlements)	r5   r   r   rf  r   r   r~   r^  rg  s	   `        r6   rm   zEntitlementIterator.__init__  s     fh//0~f5ABFeX../nU>?E

 *;;4::*.*U*UD'ADLZZ*.*T*TD'*.*U*UD'
 %

 < <#MMOrG   c                   K   | j                   j                         r| j                          d {    	 | j                   j                         S 7 # t        j
                  $ r t               w xY wwr1   )rm  r   fill_entitlementsr   r   r   r   r4   s    r6   r7   zEntitlementIterator.next  sg     ""$((***	 $$//11 + !! 	 -	 r   c                J    | j                   }||dkD  rd}n|}|| _        |dkD  S r   r   r   s      r6   r   z!EntitlementIterator._get_retrieve  r   rG   c                z  K   | j                         sy | j                  | j                         d {   }| j                  rt	        t        | j                  |            }t        |      dk  rd| _        |D ]:  }| j                  j                  t        || j                               d {    < y 7 7 	w)Nr   r   r   )r   ri  r   r   listrW   r   r~   rm  r   r   r   r  s      r6   ro  z%EntitlementIterator.fill_entitlements   s     !!#00??<<t||T23Dt9s?DJ 	UG##''

(STTT	U @ Us"   0B;B7A<B;/B90B;9B;c                   K   t         w)z1Retrieve entitlements and update next parameters.r2   r   s     r6   ri  z*EntitlementIterator._retrieve_entitlements  r   r8   c           	       K   | j                   r| j                   j                  nd}| j                  | j                  j                  ||| j
                  | j                  | j                  | j                         d{   }|rA| j                  | xj                  |z  c_	        t        t        |d   d               | _         |S 7 Iw)z-Retrieve entitlements using before parameter.N)r   r~   r   r^  rf  rg  r   r,   r+   )r   r,   rl  r   application_idr   r^  rf  rg  r~   r   ra   r   s       r6   rh  z:EntitlementIterator._retrieve_entitlements_before_strategy  s      $(;;D**JJ%%LL]]LL,, + 
 
 zz%

h&
 CR$78DK
   A<C
>C?A
C
c           	       K   | j                   r| j                   j                  nd}| j                  | j                  j                  ||| j
                  | j                  | j                  | j                         d{   }|rA| j                  | xj                  |z  c_	        t        t        |d   d               | _         |S 7 Iw)z,Retrieve entitlements using after parameter.N)r   r~   r   r^  rf  rg  r   r,   r+   )r   r,   rl  r   ru  r   r^  rf  rg  r~   r   ra   r   s       r6   rj  z9EntitlementIterator._retrieve_entitlements_after_strategy'  s      "&

**JJ%%LL]]LL,, + 
 
 zz%

h&
3tBx~#67DJ
rv  )NNNNNNN)r   rJ  rf  zlist[int] | Noner   !datetime.datetime | Object | Noner   rx  r~   rJ  r^  rJ  rg  zbool | None)r_   r   )r_   zlist[Entitlement])r   ra   r_   zlist[EntitlementPayload])
rc   rd   re   rm   r7   r   ro  ri  rh  rj  r/   rG   r6   r   r     s     #$(4837 #%)%, %, "	%,
 2%, 1%, %, %, #%,N U"	!(	!rG   r   r   )Kr   
__future__r   r   r   typingr   r   r   r   r   r	   r
   r   
audit_logsr   errorsr   monetizationr   objectr   utilsr   r   r   __all__abcr   r   r   r   r   r   r}   r    scheduled_eventsr!   rD  r#   types.audit_logr$   AuditLogPayloadtypes.guildGuildPayloadtypes.messageMessagePayloadtypes.monetizationEntitlementPayloadtypes.threadsrK  
types.userr&   PartialUserPayloadr   r(   r)   r*   _Funcr   r.   ri   rN   rR   rV   r   r   r   r   r   r   r   r,  r   r   r/   rG   r6   <module>r     s  2 #  	 	 	 &  %  B B & 0<28E6=CLT]!eB	"-../!1']1% 1'hN473 *6>!, 6^A. (5S~e,<&=> 5Sp4S>%(8"9: 4SnlnY/ l^U~o6 UpoN7+ od3E^H- 3El7
., 7
tXL^H5 XLvULu=M7N(O ULps.7 srG   