
    PjE                      d Z ddlmZ ddlZddlmZ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mZmZmZmZmZmZmZmZ ddlZddlZddlZddlmZ ddlm Z  d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. ddl.m/Z/ ddl0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZF ddlGmHZHmIZI ddlJmKZK ddlLmMZM ddlNmOZOmPZP ddlQmRZR ddlSmTZTmUZU dd lVmWZW dd!lXmYZY dd"lZm[Z[ dd#l\m]Z] erdd$l^m_Z_ dd%l,m`Z` dd&lmaZa dd'lbmcZc dd(ldmeZe dd)lfmgZg dd*lhmiZi dd+ljmkZk dd,llmmZmmnZn dd-lompZp dd.lqmrZrmsZs dd/ltmuZu dd0lvmwZx dd1lymzZ{ dd2l|m$Z}m~Z dd3lm'Zm+Z ddlmRZ ddlmZ dd4lm-ZmZ dd5lmfZ dd6lmZ  ed7      Zeeae_ef   Z G d8 d9      Z ej(                  e      Zd?d:Z G d; d<eeY         Z G d= d>eeY         Zy)@a:  
The MIT License (MIT)

Copyright (c) 2015-present Rapptz

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)dequeOrderedDict)DictOptionalTYPE_CHECKINGTypeUnionCallableAnyListTypeVar	CoroutineSequenceGenericTupleDequeLiteraloverload   )Guild)BaseActivity)Entitlement)User
ClientUser)Emoji)AllowedMentions)PartialEmojiMessage)*)_channel_factory)RawPresenceUpdateEvent)Member)Role)ChannelTypetry_enumStatus)utils)ApplicationFlagsIntentsMemberCacheFlags)Invite)_integration_factory)Interaction)	ViewStoreBaseView)ScheduledEvent)StageInstance)ThreadThreadMember)GuildSticker)AutoModRuleAutoModAction)AuditLogEntry)ClientT)SoundboardSound)Subscription)PrivateChannel)MessageableChannel)GuildChannel)
HTTPClient)VoiceProtocol)DiscordWebSocket)Item)DynamicItem)CommandTree
Translator)Poll)AutoModerationRuleAutoModerationActionExecution)	Snowflake)Activity)	DMChannel)r   PartialUser)r   r   )r    PartialMessage)gateway)"GuildApplicationCommandPermissionsTc                  P    e Zd Zdd	 	 	 	 	 	 	 	 	 	 	 d	dZd
dZddZddZddZy)ChunkRequestTcachec                   || _         || _        || _        || _        || _        t        j                  d      j                         | _        g | _	        g | _
        y )N   )guild_idshard_idresolverlooprU   osurandomhexnoncebufferwaiters)selfrX   rY   r[   rZ   rU   s         @/root/.hermes/venv/lib/python3.12/site-packages/discord/state.py__init__zChunkRequest.__init__s   sM     &%.6/3	 
**R.,,.
$&;=    c                   | j                   j                  |       | j                  ra| j                  | j                        }|y |D ]=  }|j                  |j                        }||j                  -|j                  |       ? y y N)	r`   extendrU   rZ   rX   
get_memberid	joined_at_add_member)rb   membersguildmemberexistings        rc   add_memberszChunkRequest.add_members   s|    7#::MM$--0E}! . ++FII6#x'9'9'A%%f-. re   c                  K   | j                   j                         }| j                  j                  |       	 | d {   | j                  j	                  |       S 7 # | j                  j	                  |       w xY wwrg   )r[   create_futurera   appendremoverb   futures     rc   waitzChunkRequest.wait   s^     ((*F#	(<LL'  LL's,   6B A  AA  B A   A==B c                p    | j                   j                         }| j                  j                  |       |S rg   )r[   rs   ra   rt   rv   s     rc   
get_futurezChunkRequest.get_future   s+    ((*F#re   c                ~    | j                   D ].  }|j                         r|j                  | j                         0 y rg   )ra   done
set_resultr`   rv   s     rc   r|   zChunkRequest.done   s0    ll 	/F;;=!!$++.	/re   N)rX   intrY   r~   r[   zasyncio.AbstractEventLooprZ   zCallable[[int], Any]rU   boolreturnNone)rm   List[Member]r   r   )r   r   )r   asyncio.Future[List[Member]]r   r   )__name__
__module____qualname__rd   rq   rx   rz   r|    re   rc   rS   rS   r   sZ     >> > (	>
 '> > 
>$
.(
/re   rS   c               p   K   	 |  d {    y 7 # t         $ r t        j                  d|       Y y w xY ww)NzException occurred during %s)	Exception_log	exception)	coroutineinfos     rc   logging_coroutiner      s/     = =5t<=s(   6  6 3636c                     e Zd ZU erded<   ded<   ded<   	 	 	 	 	 	 	 	 	 	 	 	 ddZedd       Zdd	Zd
dddZ	ddZ
ddZddZddZedd       Zedd       Zedd       ZddZddZddZddZd
dddZd
dddZddZddZddZddZddd Zdd!Zdd"Zdd#Zedd$       Zedd%       Z dd&Z!dd'dd(Z"dd)Z#dd*Z$edd+       Z%edd,       Z&edd-       Z'dd.Z(dd/Z)edd0       Z*dd1Z+dd2Z,dd3Z-dd4Z.dd5Z/dd6Z0dd7Z1dd8Z2	 d	 	 	 	 	 dd9Z3ddd:Z4dd;Z5	 ddd<	 	 	 	 	 	 	 	 	 	 	 dd=Z6	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd>Z7dd?Z8dd@Z9ddAZ:ddBZ;ddCZ<ddDZ=ddEZ>ddFZ?ddGZ@ddHZAddIZBddJZCddKZDddLZEddMZFddNZGddOZHddPZIddQZJddRZKddSZLddTZMddUZNddVZOddWZPddXZQddYZRddZZSdd[ZTdd\ZUdd]ZVdd^ZWdd_ZXdd`ZYddaZZddbZ[ddcZ\dddZ]e^dededfddg       Z_e^dededf	 	 	 	 	 	 	 ddh       Z_d
ddf	 	 	 	 	 	 	 ddiZ_ddjZ`dk ZaddlZbddmZcddnZdddoZeddpZfddqZgddrZhddsZiddtZjdduZkddvZlddwZmddxZnddyZoddzZpdd{Zqd d|Zrdd}Zsdd~ZtddZuddZvddZwddZxddZyddZzd	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d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ddZddZddZddZy(  ConnectionStatezCallable[..., DiscordWebSocket]_get_websocketzCallable[..., ClientT]_get_clientz+Dict[str, Callable[[Dict[str, Any]], None]]_parsersc                  t         j                  | _        || _        |j	                  dd      | _        | j
                  | j
                  dk  rd| _        || _        || _        || _        d | _	        d | _
        t        j                  |d      | _        t         j                  | _        |j	                  dd      | _        |j	                  dd      | _        | j                  dk  rt!        d	      |j	                  d
      }|t#        |t$              st'        d      || _        i | _        |j	                  dd       }|r+t#        |t,              st'        d      |j/                         }|j	                  dd       }|r |t0        j2                  u rd}nt5        |      }|j	                  dd       }	|	't#        |	t6              s+t'        dt9        |	            t7        j:                         }	|	j<                  st>        jA                  d       |j	                  d|	jB                        | _"        |	jB                  s| jD                  rt!        d      |j	                  dd       }
|
tG        jH                  |	      }
n8t#        |
tF              st'        dt9        |
            |
jK                  |	       |
| _&        || _'        || _(        |	| _)        d | _*        d | _+        |	jB                  r|
jX                  r| jZ                  | _.        |j	                  dt         j                        | _/        | j^                  t         j                  u r |	jB                   xr |	j`                  | _/        |  i x| _1        }te        jf                  |       D ]-  \  }}|ji                  d      s|||dd  jk                         <   / | jm                          y )Nmax_messagesi  r   application_idheartbeat_timeoutg      N@guild_ready_timeoutg       @z&guild_ready_timeout cannot be negativeallowed_mentionsz2allowed_mentions parameter must be AllowedMentionsactivityz1activity parameter must derive from BaseActivity.status	invisibleintentsz%intents parameter must be Intent not zHGuilds intent seems to be disabled. This may cause state related issues.chunk_guilds_at_startupz;Intents.members must be enabled to chunk guilds at startup.member_cache_flagsz:member_cache_flags parameter must be MemberCacheFlags not enable_raw_presencesparse_   )7r)   MISSINGr[   httpgetr   dispatchhandlershooksshard_count_ready_task_get_as_snowflaker   application_flagsr   r   
ValueError
isinstancer   	TypeErrorr   _chunk_requestsr   to_dictr(   offlinestrr+   typedefaultguildsr   warningrm   _chunk_guildsr,   from_intents_verify_intentsr   	_activity_status_intents_command_tree_translator_emptystore_user_no_intents
store_userraw_presence_flag	presencesparsersinspect
getmembers
startswithupperclear)rb   r   r   r   r   optionsr   r   r   r   cache_flagsr   attrfuncs                 rc   rd   zConnectionState.__init__   sC    05}}	 $	+2;;~t+L(T->->!-C $D,47?IN
*.37-2-D-DWN^-_38==(/4G(N*1++6KS*Q ##a'EFF";;'9:'
;K_0]PQQ;KDF;;z40h5 STT'')HXt,'$V++i.gw/"GWGX YZZoo'G~~LLcd#*;;/H'//#Z 4#5#5Z[[kk"6=*77@Kk+;<"\]abm]n\q rss''04?4<&,!(4815+"4"4"88DO'.{{3I5=='Y!!U]]2)0%8%NW=N=ND"!##w!,,T2 	1JD$x(,0QR()	1 	

re   c                .    | j                   j                  S rg   )r   emojis_and_stickersrb   s    rc   cache_guild_expressionsz'ConnectionState.cache_guild_expressions  s    }}000re   c                   K   | j                   D ]  }	 |j                  d       d {     | j                  r#| j                  j	                          d {    y y 7 6# t        $ r Y ]w xY w7 w)NT)force)voice_clients
disconnectr   r   unload)rb   voices     rc   closezConnectionState.close  s{     '' 	E&&T&222	 ""))+++  3 
 ,sC   A2A!AA!+A2A0A2A!!	A-*A2,A--A2Tviewsc               *   d | _         t        j                         | _        i | _        i | _        i | _        |rt        |       | _        i | _	        t               | _        i | _        | j                  t        | j                        | _        y d | _        y )Nmaxlen)userweakrefWeakValueDictionary_users_emojis	_stickers_guildsr0   _view_store_voice_clientsr   _private_channels_private_channels_by_userr   r   	_messages)rb   r   s     rc   r   zConnectionState.clear)  s    *.	>E>Y>Y>[)+24)+*3D/D8: DO=?A&(7<DDUDU7VDN7;DNre   c                   g }| j                   j                         D ]Z  \  }}|j                  |k(  s|j                  |k(  s&|j	                  |       |s:|j                          |j                  |       \ |D ]  }| j                   |=  y rg   )r   itemsrX   r_   rq   r|   rt   )rb   rX   r_   rm   completeremovedkeyrequests           rc   process_chunk_requestsz&ConnectionState.process_chunk_requests=  s     00668 	(LC8+0F##G,LLNNN3'	(  	*C$$S)	*re   c                    g }| j                   j                         D ]8  \  }}||j                  |k(  s|j                          |j	                  |       : |D ]  }| j                   |=  y rg   )r   r   rY   r|   rt   )rb   rY   r   r   r   s        rc   clear_chunk_requestsz$ConnectionState.clear_chunk_requestsI  sp     00668 	$LC7#3#3x#?s#	$
  	*C$$S)	*re   c                R    	 | j                   |   } ||i | y # t        $ r Y y w xY wrg   )r   KeyError)rb   r   argskwargsr   s        rc   call_handlerszConnectionState.call_handlersS  s8    	"==%D $!&!  		s    	&&c                n   K   	 | j                   |   } ||i | d {    y 7 # t        $ r Y y w xY wwrg   )r   r   )rb   r   r   r   coros        rc   
call_hookszConnectionState.call_hooks[  s@     	(::c?D ''''  		s$   5& 5$5	2525c                :    | j                   }|r|j                  S d S rg   )r   rj   )rb   us     rc   self_idzConnectionState.self_idc  s    IIqtt"d"re   c                d    t        j                         }| j                  j                  |_        |S rg   )r+   noner   value)rb   rets     rc   r   zConnectionState.intentsh  s#    llnMM''	
re   c                H    t        | j                  j                               S rg   )listr   valuesr   s    rc   r   zConnectionState.voice_clientsn  s    D''..011re   c                8    | j                   j                  |      S rg   )r   r   rb   rX   s     rc   _get_voice_clientz!ConnectionState._get_voice_clientr  s    ""&&x00re   c                "    || j                   |<   y rg   )r   )rb   rX   r   s      rc   _add_voice_clientz!ConnectionState._add_voice_clientv  s    (-H%re   c                <    | j                   j                  |d        y rg   )r   popr  s     rc   _remove_voice_clientz$ConnectionState._remove_voice_clienty  s    $/re   c                4    | j                   D ]	  }||_         y rg   )r   main_ws)rb   wsvcs      rc   _update_referencesz"ConnectionState._update_references|  s    $$ 	BBJ	re   rT   c                   t        |d         }	 | j                  |   S # t        $ r# t        | |      }|r|| j                  |<   |cY S w xY wNrj   statedata)r~   r   r   r   )rb   r  rU   user_idr   s        rc   r   zConnectionState.store_user  sT    d4j/	;;w'' 	d.D'+G$K		s    )A
Ac                   t        | |      S Nr  r   )rb   r  rU   s      rc   r   z%ConnectionState.store_user_no_intents      $T**re   c                    t        | |      S r  r  rb   r  s     rc   create_userzConnectionState.create_user  r  re   c                8    | j                   j                  |      S rg   )r   r   )rb   rj   s     rc   get_userzConnectionState.get_user  s    {{r""re   c                \    t        |d         }t        || |      x| j                  |<   }|S )Nrj   rn   r  r  )r~   r   r   )rb   rn   r  emoji_idemojis        rc   store_emojizConnectionState.store_emoji  s0    tDz?).U$T)RRXre   c                Z    t        |d         }t        | |      x| j                  |<   }|S r  )r~   r6   r   )rb   rn   r  
sticker_idstickers        rc   store_stickerzConnectionState.store_sticker  s.    d_
/;$T/RRz"Wre   Nc                <    | j                   j                  ||       y rg   )r   add_view)rb   view
message_ids      rc   
store_viewzConnectionState.store_view  s    !!$
3re   c                8    | j                   j                  |      S rg   )r   remove_message_tracking)rb   r/  s     rc   prevent_view_updates_forz(ConnectionState.prevent_view_updates_for  s    77
CCre   c                6     | j                   j                  |  y rg   )r   add_dynamic_itemsrb   r   s     rc   store_dynamic_itemsz#ConnectionState.store_dynamic_items  s    ***E2re   c                6     | j                   j                  |  y rg   )r   remove_dynamic_itemsr6  s     rc   r9  z$ConnectionState.remove_dynamic_items  s    ---u5re   c                .    | j                   j                  S rg   )r   persistent_viewsr   s    rc   r;  z ConnectionState.persistent_views  s    000re   c                \    t        j                  | j                  j                               S rg   )r)   SequenceProxyr   r  r   s    rc   r   zConnectionState.guilds       ""4<<#6#6#899re   c                8    | j                   j                  |      S rg   )r   r   r  s     rc   
_get_guildzConnectionState._get_guild      ||))re   )r  c               l    | j                   j                  |      xs t        j                  | ||      S )N)r  rX   r  )r   r   r   _create_unavailable)rb   rX   r  s      rc    _get_or_create_unavailable_guildz0ConnectionState._get_or_create_unavailable_guild  s-    ||)pU-F-FT\dko-ppre   c                6    || j                   |j                  <   y rg   )r   rj   rb   rn   s     rc   
_add_guildzConnectionState._add_guild  s    !&UXXre   c                .   | j                   j                  |j                  d        |j                  D ](  }| j                  j                  |j                  d        * |j
                  D ](  }| j                  j                  |j                  d        * ~y rg   )r   r  rj   emojisr   stickersr   )rb   rn   r&  r*  s       rc   _remove_guildzConnectionState._remove_guild  sw    4(\\ 	-ELLUXXt,	- ~~ 	1GNNwzz40	1 re   c                \    t        j                  | j                  j                               S rg   )r)   r=  r   r  r   s    rc   rI  zConnectionState.emojis  r>  re   c                \    t        j                  | j                  j                               S rg   )r)   r=  r   r  r   s    rc   rJ  zConnectionState.stickers  s     ""4>>#8#8#:;;re   c                b    g }| j                   D ]  }|j                  |j                          |S rg   )r   rh   soundboard_sounds)rb   
all_soundsrn   s      rc   rO  z!ConnectionState.soundboard_sounds  s6    
[[ 	7Ee556	7 re   c                8    | j                   j                  |      S rg   )r   r   )rb   r%  s     rc   	get_emojizConnectionState.get_emoji  rA  re   c                8    | j                   j                  |      S rg   )r   r   )rb   r)  s     rc   get_stickerzConnectionState.get_sticker  s    ~~!!*--re   c                \    t        j                  | j                  j                               S rg   )r)   r=  r   r  r   s    rc   private_channelsz ConnectionState.private_channels  s"    ""4#9#9#@#@#BCCre   c                z    	 | j                   |   }| j                   j                  |       |S # t        $ r Y y w xY wrg   )r   move_to_endr   )rb   
channel_idr  s      rc   _get_private_channelz$ConnectionState._get_private_channel  sF    	**:6E
 ""..z:L  		s   . 	::c                8    | j                   j                  |      S rg   )r   r   )rb   r  s     rc   _get_private_channel_by_userz,ConnectionState._get_private_channel_by_user  s    --11'::re   c                   |j                   }|| j                  |<   t        | j                        dkD  rk| j                  j                  d      \  }}t	        |t
              r<|j                  r0| j                  j                  |j                  j                   d        t	        |t
              r1|j                  r$|| j                  |j                  j                   <   y y y )N   F)last)	rj   r   lenpopitemr   rL   	recipientr   r  )rb   channelrY  _	to_removes        rc   _add_private_channelz$ConnectionState._add_private_channel  s    ZZ
-4z*t%%&,1199u9ELAy)Y/I4G4G..2293F3F3I3I4Pgy)g.?.?CJD**7+<+<+?+?@ /@)re   c                X    t        | j                  | |      }| j                  |       |S )N)mer  r  )rL   r   rf  )rb   r  rc  s      rc   add_dm_channelzConnectionState.add_dm_channel  s'    tyy4@!!'*re   c                    | j                   j                  |j                  d        t        |t              r6|j
                  }|'| j                  j                  |j                  d        y y y rg   )r   r  rj   r   rL   rb  r   )rb   rc  rb  s      rc   _remove_private_channelz'ConnectionState._remove_private_channel  s[    ""7::t4gy)))I$..229<<F % *re   c                x    | j                   r,t        j                  fdt        | j                               S d S )Nc                "    | j                   k(  S rg   )rj   )mmsg_ids    rc   <lambda>z.ConnectionState._get_message.<locals>.<lambda>  s    ADDFN re   )r   r)   findreversed)rb   ro  s    `rc   _get_messagezConnectionState._get_message  s,    QUQ_Q_uzz2HT^^4LMieiire   c                B    t        ||       }| j                  |       |S )Nr  r  )r   rG  rb   r  rn   s      rc   _add_guild_from_dataz$ConnectionState._add_guild_from_data  s    4t,re   c                    | j                   xr5 |j                   xr& | j                  j                  xr |j                    S rg   )r   chunkedr   r   largerF  s     rc   _guild_needs_chunkingz%ConnectionState._guild_needs_chunking  s;    !!m%--&7mAXAXAlafalal]l<mmre   c                   t        |d         }	 |xs t        |d         }| j                  |      }|xr |j                  |      }|xs t        | ||      |fS # t        $ r t        j                  | |      }d }Y 7w xY w)NrY  rX   )r  rX   rj   )r~   r@  _resolve_channelr   rL   _from_messagePartialMessageable)rb   r  rX   rY  rn   rc  s         rc   _get_guild_channelz"ConnectionState._get_guild_channel  s     l+,
	C83tJ'7#8HOOH-E
 B 6 6z BGZ,4(zZ\aaa  	--dJ?GE	s   #A !B ?B c                J    |j                   }|sy |j                  |||       |S rg   )poll_handle_vote)rb   message	answer_idadded
self_votedr  s         rc   _update_poll_countsz#ConnectionState._update_poll_counts'  s(    ||)UJ7re   c                R   t        |t              r| j                  |j                        }n(t        |t              r| j                  |      }|y |}ny |j
                  y |j
                  j                  |       |)|j
                  r|j
                  j                  |       y y y rg   )r   r    rs  rj   r~   r  _update_results_from_message)rb   from_tocacheds       rc   _update_poll_resultsz$ConnectionState._update_poll_results.  s    b'"&&ruu-FC &&r*F~B77?
,,U3&++KK44U; #.re   r_   c               n   K   | j                  |      }|j                  |||||       d {    y 7 w)Nquerylimitr   r_   r   request_chunks)rb   rX   r  r  r   r_   r  s          rc   chunkerzConnectionState.chunkerC  s8        *Ui_deees   +535c                  K   |j                   }| j                  |      }|t        d      t        |j                   |j                  | j
                  | j                  |      }	|	| j                  |	j                  <   	 |j                  ||||||	j                         d {    t        j                  |	j                         d       d {   S 7 17 # t        j                  $ r t        j                  d|||        w xY ww)Nz1Somehow do not have a websocket for this guild_idrT   )r  r  user_idsr   r_   g      >@timeoutzGTimed out waiting for chunks with query %r and limit %d for guild_id %d)rj   r   RuntimeErrorrS   rY   r[   r@  r   r_   r  asynciowait_forrx   TimeoutErrorr   r   )
rb   rn   r  r  r  rU   r   rX   r  r   s
             rc   query_memberszConnectionState.query_membersI  s      88  *:RSSuxxDOO[`a.5W]]+	##UXQZbibobo $    !))',,.$GGG H## 	LLbdikprz{	sB   A<D	?$C #C$,C CC D	C C -DD	c                  K   	 g }	 	 t        j                  | j                  j                         | j                         d {   }| j                  |      r/| j                  |d       d {   }|j                  ||f       n4|j                  du r| j                  d|       n| j                  d|       	 7 y7 O# t         j                  $ r Y nw xY w|D ]  \  }}| j                  |      }	 t        j                  ||       d {  7   nD# t         j                  $ r. t        j                  d|j                  |j                         Y nw xY w|j                  du r| j                  d|       | j                  d|        	 | `n# t         $ r Y nw xY w| j#                  d       | j                  d       n# t         j$                  $ r Y nw xY wd | _        y # d | _        w xY ww)Nr  Frx   guild_available
guild_join9Shard ID %s timed out waiting for chunks for guild_id %s.ready)r  r  _ready_stater   r   r{  chunk_guildrt   unavailabler   r  _chunk_timeoutr   r   rY   rj   AttributeErrorr   CancelledErrorr   )rb   statesrn   rw   r  s        rc   _delay_readyzConnectionState._delay_ready^  s    -	$F?")"2"243D3D3H3H3JTXTlTl"mmE 11%8'+'7'7E'7'J!Jufo6 ,,5 MM*;UC MM,>  n
 "K	 ++  "( 7v--e4x!**67CCC++ xLL!\^c^l^lnsnvnvwx $$-MM"3U;MM,67%!  w'MM'" %% 		  $DtDs   G2G <C B>C 	'G 0C 1AG >C  G CG CG 5DDDG >EG E8G F G 	FG FG "#G& GG& GG& G2&	G//G2c                   | j                   | j                   j                          t        j                         | _        | j                  d       | j                  d        t        | |d         x| _        }|| j                  |j                  <   | j                  >	 |d   }t        j                  |d      | _        t        j                  |d         | _        |d   D ]  }| j%                  |        | j'                  d	       t        j(                  | j+                               | _         y # t"        $ r Y `w xY w)
NFr   r   r  applicationrj   flagsr   connect)r   cancelr  Queuer  r   r   r   r   r   rj   r   r)   r   r*   _from_valuer   r   rw  r   create_taskr  )rb   r  r   r  
guild_datas        rc   parse_readyzConnectionState.parse_ready  s   '##%29--/


!!$'%DtF|DD	D#DGG&n"=1 ',&=&=k4&P#;K;W;WXcdkXl;m&x. 	2J%%j1	2 	i "..t/@/@/BC  s    D2 2	D>=D>c                &    | j                  d       y )Nresumedr   r  s     rc   parse_resumedzConnectionState.parse_resumed  s    i re   c                (   | j                  |      \  }}t        |||       }| j                  d|       | j                  | j                  j	                  |       |r5|j
                  t        t        t        t        fv r|j                  |_        y y y )Nrc  r  r  r  )r  r    r   r   rt   	__class__TextChannelVoiceChannelr4   StageChannelrj   last_message_id)rb   r  rc  rd  r  s        rc   parse_message_createz$ConnectionState.parse_message_create  s|    ,,T2
'DAi)>>%NN!!'*w(([,P\,]]&-jjG# ^7re   c                    t        |      }| j                  |j                        }||_        | j	                  d|       | j
                  1|.| j	                  d|       | j
                  j                  |       y y y )Nraw_message_deletemessage_delete)RawMessageDeleteEventrs  r/  cached_messager   r   ru   )rb   r  rawfounds       rc   parse_message_deletez$ConnectionState.parse_message_delete  so    #D)!!#..1"*C0>>%%*;MM*E2NN!!%( +<%re   c                F   t        |      }| j                  r3| j                  D cg c]  }|j                  |j                  v s| }}ng }||_        | j                  d|       |r5| j                  d|       |D ]  }| j                  j                  |        y y c c}w )Nraw_bulk_message_deletebulk_message_delete)RawBulkMessageDeleteEventr   rj   message_idscached_messagesr   ru   )rb   r  r  r  found_messagesmsgs         rc   parse_message_delete_bulkz)ConnectionState.parse_message_delete_bulk  s    '->>59^^e'wzzUXUdUdGdgeNeN,/5MM/@% +%%c*+  fs   BBc                n   | j                  |      \  }}t        |||       }t        ||      }| j                  |j                        }|dt        j
                  |      }||_        | j                  d|       |j                  |       |j                  |_	        | j                  d||       n| j                  d|       d|v rN	 t        |d   d         }| j                  j                  |      r | j                  j!                  ||d          y y y # t        t        f$ r |j                  }Y Zw xY w)Nr  )r  r  raw_message_editmessage_edit
componentsinteractionrj   )r  r    RawMessageUpdateEventrs  rj   copyr  r   _updateauthorr~   r   r   r/  r   is_message_trackedupdate_from_message)	rb   r  rc  rd  updated_messager  r  older_message	entity_ids	            rc   parse_message_updatez$ConnectionState.parse_message_update  s)   ,,T2
!'DI#G**?+=+=>% IIn5M!.CMM,c2""4( $3#9#9M MM.-IMM,c24+] 3D 9:	 229=  44Y\@RS >   j) +NN	+s   D D43D4c                R   t        j                  |d         }| |_        t        ||d      }|j	                  d      }|r9| j                  |j                        }|t        |||       |_        nd |_        nd |_        | j                  d|       | j                  |j                        }|y| j                  |      }|j                  |||j                        }|j                  xs& | j                  |j                   |j                        }|r| j                  d||       y y y )Nr&  REACTION_ADDro   r  rn   r  raw_reaction_addreaction_add)r   	from_dict_stateRawReactionActionEventr   r@  rX   r$   ro   r   rs  r/  _upgrade_partial_emoji_add_reactionr  _get_reaction_userrc  )	rb   r  r&  r  member_datarn   r  reactionr   s	            rc   parse_message_reaction_addz*ConnectionState.parse_message_reaction_add  s   &&tG}5$T5.Ahhx(OOCLL1E #EN
!
CJ(#. ##CNN3//6E,,T5#++FH::V!8!8#++!VDnh=  re   c                   t        |      }| j                  d|       | j                  |j                        }|H|j                  j                         }|j                  j                          | j                  d||       y y )Nraw_reaction_clearreaction_clear)RawReactionClearEventr   rs  r/  	reactionsr  r   )rb   r  r  r  old_reactionss        rc   !parse_message_reaction_remove_allz1ConnectionState.parse_message_reaction_remove_all  sq    #D)*C0##CNN3#--224M##%MM*G]C re   c                   t        j                  |d         }| |_        t        ||d      }| j	                  d|       | j                  |j                        }|l| j                  |      }	 |j                  |||j                        }| j                  |j                  |j                        }|r| j	                  d||       y y y # t        t        f$ r Y y w xY w)Nr&  REACTION_REMOVEraw_reaction_removereaction_remove)r   r  r  r  r   rs  r/  r  _remove_reactionr  r  rc  r  r   )rb   r  r&  r  r  r  r   s          rc   parse_message_reaction_removez-ConnectionState.parse_message_reaction_remove  s    &&tG}5$T52CD+S1##CNN3//6EE"33D%M ..wLMM"3XtD   #J/ s   .C	 	CCc                2   t        j                  |d         }| |_        t        ||      }| j	                  d|       | j                  |j                        }|(	 |j                  |      }|r| j	                  d|       y y y # t        t        f$ r Y y w xY w)Nr&  raw_reaction_clear_emojireaction_clear_emoji)
r   r  r  RawReactionClearEmojiEventr   rs  r/  _clear_emojir  r   )rb   r  r&  r  r  r  s         rc   #parse_message_reaction_remove_emojiz3ConnectionState.parse_message_reaction_remove_emoji  s    &&tG}5(u50#6##CNN3D"//6 MM"8(C   #J/ s   B BBc                   t        ||       }|d   dv r(| j                  r| j                  j                  |       n||d   dk(  r-|d   }|d   }|d   }| j                  j	                  |||       nG|d   dk(  r?|d   }|d   }|d	   }|j                  d
i       }| j                  j                  ||||       | j                  d|       y )Nru  r   )         r  	custom_idcomponent_type   r  resolvedr  )r/   r   _from_interactionr   dispatch_viewr   dispatch_modalr   )rb   r  r  
inner_datar	  r
  r  r  s           rc   parse_interaction_createz(ConnectionState.parse_interaction_create.  s    !t48<6!d&8&800=&\QfJ";/I'(89N**>9kR&\QfJ";/I#L1J!~~j"5H++I{JPXYm[1re   c                   t        ||       }| j                  r| j                  d|       |j                  !t        j                  d|j                         y |j                  j                  |j                        }|!t        j                  d|j                         y t        j                  |      }|j                  ||d         }|r| j                  d|d   |d	          | j                  d
||       y )Nru  raw_presence_updatez@PRESENCE_UPDATE referencing an unknown guild ID: %s. Discarding.z@PRESENCE_UPDATE referencing an unknown member ID: %s. Discardingr   )r  r   user_updater   r   presence_update)r#   r   r   rn   r   debugrX   ri   r  r$   _copy_presence_update)rb   r  r  ro   
old_memberr  s         rc   parse_presence_updatez%ConnectionState.parse_presence_updateA  s    $$d;!!MM/599JJY[^[g[gh%%ckk2>JJY[^[f[fg\\&)
--#DL-IMM-QQH'V<re   c                T    | j                   r| j                   j                  |       y y rg   )r   r  r  s     rc   parse_user_updatez!ConnectionState.parse_user_updateY  s     99IId# re   c                V    t        j                  | |      }| j                  d|       y )Nr  invite_creater-   from_gatewayr   rb   r  invites      rc   parse_invite_createz#ConnectionState.parse_invite_create]  "    $$4d;ov.re   c                V    t        j                  | |      }| j                  d|       y )Nr  invite_deleter  r!  s      rc   parse_invite_deletez#ConnectionState.parse_invite_deletea  r$  re   c                   | j                  t        j                  |d            }t        |d         }||j	                  |      }||j                  |       | j                  d|       |j                  t        j                  t        j                  fv rb|j                  D ]S  }|j                  |j                  k(  s|j                  j                  |j                         | j                  d|       U |j!                  |      }|D ]9  }| j                  d|       | j                  dt"        j%                  |             ; y y y )NrX   rj   guild_channel_deletescheduled_event_deletethread_deleteraw_thread_delete)r@  r)   r   r~   get_channel_remove_channelr   r   r&   r   stage_voicescheduled_eventsrY  rj   _scheduled_eventsr  _remove_threads_by_channelRawThreadDeleteEvent_from_thread)rb   r  rn   rY  rc  sthreadsthreads           rc   parse_channel_deletez$ConnectionState.parse_channel_deletee  s%    7 7j IJd_
''
3G"%%g.4g><<K$5$5{7N7N#OO"33 G<<7::5!3377= MM*BAFG
  :::F% bFMM/6:MM"57K7X7XY_7`ab # re   c                   t        t        |j                  d            }t        |d         }|t        j                  u rc| j                  |      }|:t        j                  |      }|j                  |       | j                  d||       y t        j                  d|       t        j                  |d      }| j                  |      }|e|j                  |      }|;t        j                  |      }|j                  ||       | j                  d||       y t        j                  d|       y t        j                  d|       y )Nr   rj   private_channel_updatezACHANNEL_UPDATE referencing an unknown channel ID: %s. Discarding.rX   guild_channel_updatez?CHANNEL_UPDATE referencing an unknown guild ID: %s. Discarding.)r'   r&   r   r~   grouprZ  r  _update_groupr   r   r  r)   r   r@  r-  r  )rb   r  channel_typerY  rc  old_channelrX   rn   s           rc   parse_channel_updatez$ConnectionState.parse_channel_updatez  s   TXXf-=>d_
;,,,//
;G""ii0%%d+6WM

^`jk**4<)''
3G""ii0t,4k7K

^`jkJJXZbcre   c                :   t        |d         \  }}|t        j                  d|d          y t        j                  |d      }| j                  |      }|/ ||| |      }|j                  |       | j                  d|       y t        j                  d|       y )Nr   zBCHANNEL_CREATE referencing an unknown channel type %s. Discarding.rX   r$  guild_channel_createz?CHANNEL_CREATE referencing an unknown guild ID: %s. Discarding.)r"   r   r  r)   r   r@  _add_channelr   )rb   r  factorych_typerX   rn   rc  s          rc   parse_channel_createz$ConnectionState.parse_channel_create  s    +DL9?JJ[]abh]ij**4<)EDAGw'MM0':JJXZbcre   c                   t        |d         }	 | j                  t        |d               }|xr |j                  |      }|t
        j                  d|       y t        j                  |j                  d            }|| j                  d||       y | j                  d||       y # t        $ r d }| j	                  |      }Y w xY w)NrY  rX   zFCHANNEL_PINS_UPDATE referencing an unknown channel ID: %s. Discarding.last_pin_timestampprivate_channel_pins_updateguild_channel_pins_update)r~   r@  r}  r   rZ  r   r  r)   
parse_timer   r   )rb   r  rY  rn   rc  last_pins         rc   parse_channel_pins_updatez)ConnectionState.parse_channel_pins_update  s    l+,
	COOCZ(8$9:E
 B 6 6z BG?JJ_akl##DHH-A$BC=MM7(KMM5wI  	<E//
;G	<s   B) )CCc                   t        |d         }| j                  |      }|t        j                  d|       y t	        ||j
                  |      }|j                  |j                        }|j                  |       |sn|j                  d      rJ|j                  j                  t        u r|j                  |j                  _        | j                  d|       y | j                  d|       y y )NrX   z=THREAD_CREATE referencing an unknown guild ID: %s. Discardingr$  newly_createdthread_createthread_join)r~   r@  r   r  r4   r  
get_threadrj   _add_threadr   parentr  ForumChannelr  r   )rb   r  rX   rn   r7  
has_threads         rc   parse_thread_createz#ConnectionState.parse_thread_create  s    tJ'(!%!:=JJVX`ae5<<dC%%fii0
&!xx(==**l:4:IIFMM1ov6mV4 re   c                2   t        |d         }| j                  |      }|t        j                  d|       y t	        |      }|j                  |j                        x|_        }| j                  d|       |Wt        j                  |      }|j                  |       |j                  r|j                  |       | j                  d||       y t        ||j                  |      }|j                  s|j                  |       | j                  d|       y )NrX   z=THREAD_UPDATE referencing an unknown guild ID: %s. Discardingraw_thread_updatethread_updater$  rQ  )r~   r@  r   r  RawThreadUpdateEventrR  	thread_idr7  r   r  r  archived_remove_threadr4   r  rS  )rb   r  rX   rn   r  r7  olds          rc   parse_thread_updatez#ConnectionState.parse_thread_update  s    tJ'()=JJVX`a"4(#..s}}==
V)3/))F#CNN4 $$V,MM/37%u||$GF??!!&)MM-0re   c                >   t        |d         }| j                  |      }|t        j                  d|       y t	        |      }|j                  |j                        x|_        }| j                  d|       |$|j                  |       | j                  d|       y y )NrX   z=THREAD_DELETE referencing an unknown guild ID: %s. Discardingr,  r+  )
r~   r@  r   r  r3  rR  r\  r7  r   r^  )rb   r  rX   rn   r  r7  s         rc   parse_thread_deletez#ConnectionState.parse_thread_delete  s    tJ'()=JJVX`a"4(#..s}}==
V)3/  (MM/62 re   c                (   t        |d         }| j                  |      }|t        j                  d|       y 	 |d   D ch c]  }t        |       }}|j	                  |      }|j                  dg       D ci c]  }|d   |j                  |       }}|j                  dg       D ]&  }		 ||	d      }
|
j                  t        |
|	             ( |j                         D ]3  }
|j                  |
j                  d       }|"| j!                  d|
       5 |j                         D ]  }
| j!                  d|
        y c c}w # t
        $ r. |j                  j                         }|j                          Y w xY wc c}w # t
        $ r Y w xY w)	NrX   z@THREAD_LIST_SYNC referencing an unknown guild ID: %s. Discardingchannel_idsr6  rj   rm   rQ  thread_remove)r~   r@  r   r  _filter_threadsr   _threadsr  _clear_threadsr   _store_threadrl   r5   r  r  rj   r   )rb   r  rX   rn   ird  previous_threadsdr6  ro   r7  r_  s               rc   parse_thread_list_syncz&ConnectionState.parse_thread_list_sync  s   tJ'(!%!:=JJY[cd	B+/+>?a3q6?K?  %44[A<@HHYPR<STq1T7E//22TThhy"- 	AFA . ""<#?@	A nn& 	5F"&&vyy$7C{mV4	5
 '--/ 	3FMM/62	33 @ 	#  %~~224  "		# U  s;   E EE :F .FE 3E=<E=	FFc                
   t        |d         }| j                  |      }|t        j                  d|       y t        |d         }|j	                  |      }|t        j                  d|       y t        ||      }||_        y )NrX   zDTHREAD_MEMBER_UPDATE referencing an unknown guild ID: %s. Discardingrj   zETHREAD_MEMBER_UPDATE referencing an unknown thread ID: %s. Discarding)r~   r@  r   r  rR  r5   rh  )rb   r  rX   rn   r\  r7  ro   s          rc   parse_thread_member_updatez*ConnectionState.parse_thread_member_update  s    tJ'(!%!:=JJ]_ghT
O	#(#3#3I#>>JJ^`ijfd+	re   c                   t        |d         }| j                  |      }|t        j                  d|       y t        |d         }|j	                  |      }t        |      }|t        j                  d|       y |j                  dg       D cg c]  }t        ||       }}|j                  dg       D 	cg c]  }	t        |	       }
}	| j                  }|D ]N  }|j                  |k7  r$|j                  |       | j                  d|       6||_        | j                  d|       P |
D ]R  }||k7  r9|j                  |      }| j                  d	|       |.| j                  d
|       A| j                  d|       T y c c}w c c}	w )NrX   zETHREAD_MEMBERS_UPDATE referencing an unknown guild ID: %s. Discardingrj   zFTHREAD_MEMBERS_UPDATE referencing an unknown thread ID: %s. Discardingadded_membersremoved_member_idsthread_member_joinrQ  raw_thread_member_removethread_member_removere  )r~   r@  r   r  rR  RawThreadMembersUpdater   r5   r   rj   rl   r   rh  _pop_member)rb   r  rX   rn   r\  r7  r  rl  rq  xrr  r   ro   	member_ids                 rc   parse_thread_members_updatez+ConnectionState.parse_thread_members_update'  sz   tJ'(!%!:=JJ^`hiT
O	#(#3#3I#>$T*>JJ_ajk:>((?TV:WXQfa0XX.2hh7KR.PQc!fQQ,,# 	5FyyG#""6*2F;"	mV4	5 , 	7IG#++I68#>%MM"8&Aov6	7 YQs   F9F	c                   | j                  t        |d               }|t        j                  d|d          y t        |d   d         }|j	                  |      }|t        j                  d|       y t        |||       }| j                  j                  r|j                  |       |j                  |xj                  dz  c_	        | j                  d|       y )	NrX   zAGUILD_MEMBER_ADD referencing an unknown guild ID: %s. Discarding.r   rj   zIGUILD_MEMBER_ADD referencing an already cached member ID: %s. Discarding.rn   r  r  r   member_join)r@  r~   r   r  ri   r$   r   joinedrl   _member_countr   )rb   r  rn   ry  ro   s        rc   parse_guild_member_addz&ConnectionState.parse_guild_member_addI  s    D$4 56=JJZ\`ak\lmVT*+	!!),JJbdmne$d;""))f%*1$mV,re   c                   | j                  |d         }t        ||      }| j                  |j                        }|i|j                  |xj                  dz  c_        |j                  |j                        }|D||_        |j                  |       | j                  d|       nt        j                  d|d          | j                  d|       y )Nr   r   member_removezDGUILD_MEMBER_REMOVE referencing an unknown guild ID: %s. Discarding.rX   raw_member_remove)r   RawMemberRemoveEventr@  rX   r  ri   rj   r   _remove_memberr   r   r  )rb   r  r   r  rn   ro   s         rc   parse_guild_member_removez)ConnectionState.parse_guild_member_remove^  s    tF|,"4.-"".##q(#%%dgg.F!!$$V,ov6JJ]_cdn_op)3/re   c                |   | j                  t        |d               }|d   }t        |d         }|t        j                  d|d          y |j	                  |      }|ft        j                  |      }|j                  |       |j                  |      }|r| j                  d|d   |d          | j                  d||       y | j                  j                  rKt        ||| 	      }|j                  |      }|r| j                  d|d   |d          |j                  |       t        j                  d
|       y )NrX   r   rj   zDGUILD_MEMBER_UPDATE referencing an unknown guild ID: %s. Discarding.r  r   r   member_updater  zEGUILD_MEMBER_UPDATE referencing an unknown member ID: %s. Discarding.)r@  r~   r   r  ri   r$   r  r  _update_inner_userr   r   r~  rl   )rb   r  rn   r   r  ro   r  r  s           rc   parse_guild_member_updatez)ConnectionState.parse_guild_member_updateq  s!   D$4 56F|d4j/=JJ]_cdn_op!!'*f-JNN4  33D9Km[^[^LMM/:v>&&--TdC %77=MM-QQP!!&)JJ^`ghre   c                j     j                  t        |d               t        j                  d|d          y j                  }|D ](  } j
                  j                  |j                  d        * t        t         fd|d               _         j                  d|j                         y )NrX   zDGUILD_EMOJIS_UPDATE referencing an unknown guild ID: %s. Discarding.c                (    j                  |       S rg   )r'  rl  rn   rb   s    rc   rp  z;ConnectionState.parse_guild_emojis_update.<locals>.<lambda>  s    4+;+;E1+E re   rI  guild_emojis_update)r@  r~   r   r  rI  r   r  rj   tuplemapr   )rb   r  before_emojisr&  rn   s   `   @rc   parse_guild_emojis_updatez)ConnectionState.parse_guild_emojis_update  s    D$4 56=JJ]_cdn_op" 	-ELLUXXt,	- S!EtH~VW+UM5<<Pre   c                j     j                  t        |d               t        j                  d|d          y j                  }|D ](  } j
                  j                  |j                  d        * t        t         fd|d               _         j                  d|j                         y )NrX   zFGUILD_STICKERS_UPDATE referencing an unknown guild ID: %s. Discarding.c                (    j                  |       S rg   )r+  r  s    rc   rp  z=ConnectionState.parse_guild_stickers_update.<locals>.<lambda>  s    T-?-?q-I re   rJ  guild_stickers_update)r@  r~   r   r  rJ  r   r  rj   r  r  r   )rb   r  before_stickersr&  rn   s   `   @rc   parse_guild_stickers_updatez+ConnectionState.parse_guild_stickers_update  s    D$4 56=JJ_aefpaqr..$ 	/ENNuxx.	/ s#I4PZK[\]-uou~~Vre   c           	         | j                  t        |d               }|t        j                  d|d          y t	        | j
                  i i i i ||      }| j                  d|       y )NrX   zMGUILD_AUDIT_LOG_ENTRY_CREATE referencing an unknown guild ID: %s. Discarding.)usersintegrationsapp_commandsautomod_ruleswebhooksr  rn   audit_log_entry_create)r@  r~   r   r  r9   r   r   )rb   r  rn   entrys       rc   "parse_guild_audit_log_entry_createz2ConnectionState.parse_guild_audit_log_entry_create  sl    D$4 56=JJfhlmwhxy++
 	.6re   c                    | j                  t        |d               }|t        j                  d|d          y t	        |||       }| j                  d|       y )NrX   zLAUTO_MODERATION_RULE_CREATE referencing an unknown guild ID: %s. Discarding.r  automod_rule_creater@  r~   r   r  r7   r   rb   r  rn   rules       rc   !parse_auto_moderation_rule_createz1ConnectionState.parse_auto_moderation_rule_create  U    D$4 56=JJegklvgwxE>+T2re   c                    | j                  t        |d               }|t        j                  d|d          y t	        |||       }| j                  d|       y )NrX   zLAUTO_MODERATION_RULE_UPDATE referencing an unknown guild ID: %s. Discarding.r  automod_rule_updater  r  s       rc   !parse_auto_moderation_rule_updatez1ConnectionState.parse_auto_moderation_rule_update  r  re   c                    | j                  t        |d               }|t        j                  d|d          y t	        |||       }| j                  d|       y )NrX   zLAUTO_MODERATION_RULE_DELETE referencing an unknown guild ID: %s. Discarding.r  automod_rule_deleter  r  s       rc   !parse_auto_moderation_rule_deletez1ConnectionState.parse_auto_moderation_rule_delete  r  re   c                    | j                  t        |d               }|t        j                  d|d          y t	        ||       }| j                  d|       y )NrX   zQAUTO_MODERATION_ACTION_EXECUTION referencing an unknown guild ID: %s. Discarding.ru  automod_action)r@  r~   r   r  r8   r   )rb   r  rn   	executions       rc   &parse_auto_moderation_action_executionz6ConnectionState.parse_auto_moderation_action_execution  sS    D$4 56=JJjlpq{l|}!t48	&	2re   c                    |j                  d      du r9| j                  t        |d               }|d|_        |j	                  |       |S | j                  |      S )Nr  Frj   )r   r@  r~   r  
_from_datarw  rv  s      rc   _get_create_guildz!ConnectionState._get_create_guild  s]    88M"e+ OOCT
O4E $)!  &((..re   c                2    |j                   | j                  vS rg   )rj   r   rF  s     rc   is_guild_evictedz ConnectionState.is_guild_evicted  s    xxt||++re   .)rx   rU   c                  K   y wrg   r   rb   rn   rx   rU   s       rc   r  zConnectionState.chunk_guild  s	     z}   c                  K   y wrg   r   r  s       rc   r  zConnectionState.chunk_guild  s      (+r  c                 K   |xs | j                   j                  }| j                  j                  |j                        }|t        |j                  |j                  | j                  | j                  |      x| j                  |j                  <   }| j                  |j                  |j                         d {    |r|j                          d {   S |j                         S 7 .7 w)NrT   r  )r   r~  r   r   rj   rS   rY   r[   r@  r  r_   rx   rz   )rb   rn   rx   rU   r   s        rc   r  zConnectionState.chunk_guild  s      70077&&**5884?7C%..$))T__E8 D  *W ,,uxxw}},=== ''!!##	 > (s$   B=C2?C. C2C0C20C2c                <    t        d|j                  xs ddz        S )Ng      @r   i'  )maxmember_countrF  s     rc   r  zConnectionState._chunk_timeout	  s    3++0qE9::re   c                T  K   | j                  |      }	 t        j                  | j                  |      |       d {    |du r| j                  d|       y | j                  d|       y 7 .# t        j                  $ r# t
        j                  d|j                         Y aw xY ww)Nr  z5Somehow timed out waiting for chunks for guild ID %s.Fr  r  )	r  r  r  r  r  r   r   rj   r   )rb   rn   r  r  s       rc   _chunk_and_dispatchz#ConnectionState._chunk_and_dispatch  s     %%e,	\""4#3#3E#:GLLL %MM+U3MM,. M## 	\LLPRWRZRZ[	\s8   B()A/ A-A/ *B(-A/ /3B%"B($B%%B(c                Z    	 | j                   j                  |       y# t        $ r Y yw xY wNTF)r  
put_nowaitr  rF  s     rc   _add_ready_statez ConnectionState._add_ready_state  s4    	((/   		s    	**c                6   |j                  d      }|du ry | j                  |      }| j                  |      ry | j                  |      r&t	        j
                  | j                  ||             y |du r| j                  d|       y | j                  d|       y )Nr  TFr  r  )r   r  r  r{  r  r  r  r   )rb   r  r  rn   s       rc   parse_guild_createz"ConnectionState.parse_guild_create"  s    hh}-$&&t,  ' %%e, 8 8 LM %MM+U3MM,.re   c                    | j                  t        |d               }|:t        j                  |      }|j                  |       | j	                  d||       y t
        j                  d|d          y )Nrj   guild_updatez=GUILD_UPDATE referencing an unknown guild ID: %s. Discarding.)r@  r~   r  r  r   r   r  )rb   r  rn   	old_guilds       rc   parse_guild_updatez"ConnectionState.parse_guild_update8  s`    DJ0		%(IT"MM.)U;JJVX\]aXbcre   c                   | j                  t        |d               t        j                  d|d          y |j	                  dd      rd_        | j                  d       y | j                  /t        fd| j                  D        | j                        | _        | j                         | j                  d	       y )
Nrj   z=GUILD_DELETE referencing an unknown guild ID: %s. Discarding.r  FTguild_unavailablec              3  B   K   | ]  }|j                   k7  s|  y wrg   )rn   ).0r  rn   s     rc   	<genexpr>z5ConnectionState.parse_guild_delete.<locals>.<genexpr>Q  s     E#))u2DEs   r   guild_remove)r@  r~   r   r  r   r  r   r   r   r   rK  rv  s     @rc   parse_guild_deletez"ConnectionState.parse_guild_deleteA  s    DJ0=JJVX\]aXbc88M5) !%EMM-u5 >>%7<EEdN_N_8DN 	5!ne,re   c                    | j                  t        |d               }|D	 t        |d   |       }|j                  |j                        xs |}| j                  d||       y y # t        $ r Y y w xY w)NrX   r   ru  
member_ban)r@  r~   r   ri   rj   r   r   )rb   r  rn   r   ro   s        rc   parse_guild_ban_addz#ConnectionState.parse_guild_ban_addW  s{     D$4 56;fT: ))$''2:dlE6:   s   A% %	A10A1c                    | j                  t        |d               }|-d|v r(| j                  |d         }| j                  d||       y y y )NrX   r   member_unban)r@  r~   r   r   )rb   r  rn   r   s       rc   parse_guild_ban_removez&ConnectionState.parse_guild_ban_removeg  sP    D$4 564??4<0DMM.%6 "0re   c                    | j                  t        |d               }|t        j                  d|d          y |d   }t	        |||       }|j                  |       | j                  d|       y )NrX   zBGUILD_ROLE_CREATE referencing an unknown guild ID: %s. Discarding.roler|  guild_role_create)r@  r~   r   r  r%   	_add_roler   )rb   r  rn   	role_datar  s        rc   parse_guild_role_createz'ConnectionState.parse_guild_role_createm  sj    D$4 56=JJ[]abl]mnL	%it<)40re   c                    | j                  t        |d               }|3t        |d         }	 |j                  |      }| j                  d|       y t
        j                  d|d          y # t        $ r Y y w xY w)NrX   role_idguild_role_deletezBGUILD_ROLE_DELETE referencing an unknown guild ID: %s. Discarding.)r@  r~   _remove_roler   r   r   r  )rb   r  rn   r  r  s        rc   parse_guild_role_deletez'ConnectionState.parse_guild_role_deletex  s~    D$4 56$y/*G9))'2 148JJ[]abl]mn  s   A- -	A98A9c                6   | j                  t        |d               }|a|d   }t        |d         }|j                  |      }|:t        j                  |      }|j	                  |       | j                  d||       y y t        j                  d|d          y )NrX   r  rj   guild_role_updatezBGUILD_ROLE_UPDATE referencing an unknown guild ID: %s. Discarding.)r@  r~   get_roler  r  r   r   r  )rb   r  rn   r  r  r  old_roles          rc   parse_guild_role_updatez'ConnectionState.parse_guild_role_update  s    D$4 56VI)D/*G>>'*D99T?Y'18TB  
 JJ[]abl]mnre   c                |   t        |d         }| j                  |      }|j                  dg       }|y |j                  dg       D cg c]  }t        |||        }}t        j                  dt        |      |       |rg|D ci c]  }t        |j                        | }}|D ]?  }|d   }	|	d   }
|j                  |
      }|!t        ||       }|j                  ||	       A |j                  d	d
      dz   |j                  d      k(  }| j                  ||j                  d      ||       y c c}w c c}w )NrX   r   rm   r|  z0Processed a chunk for %s members in guild ID %s.r   rj   ru  chunk_indexr   r   chunk_countr_   )r~   r@  r   r$   r   r  r`  r   rj   r#   r  r   )rb   r  rX   rn   r   ro   rm   member_dictpresencer   ry  raw_presencer   s                rc   parse_guild_members_chunkz)ConnectionState.parse_guild_members_chunk  s;   tJ'()HH["-	=NRhhW`bdNefF6F$?ff

Es7|U]^Y`3avC		NF4J3aK3a% @' J	$3%#9xt#TL++L$?@ 88M1-1TXXm5LL##Hdhhw.?(S g 4bs   	D4D9c                    | j                  t        |d               }|| j                  d|       y t        j	                  d|d          y )NrX   guild_integrations_updatezJGUILD_INTEGRATIONS_UPDATE referencing an unknown guild ID: %s. Discarding.)r@  r~   r   r   r  rv  s      rc   parse_guild_integrations_updatez/ConnectionState.parse_guild_integrations_update  sE    D$4 56MM5u=JJceijteuvre   c                    t        |d         }| j                  |      }|.t        |d         \  }} |||      }| j                  d|       y t        j                  d|       y )NrX   r   r  rn   integration_createzCINTEGRATION_CREATE referencing an unknown guild ID: %s. Discarding.r~   r@  r.   r   r   r  rb   r  rX   rn   clsrd  integrations          rc   parse_integration_createz(ConnectionState.parse_integration_create  b    tJ'())$v,7FC4u5KMM.<JJ\^fgre   c                    t        |d         }| j                  |      }|.t        |d         \  }} |||      }| j                  d|       y t        j                  d|       y )NrX   r   r  integration_updatezCINTEGRATION_UPDATE referencing an unknown guild ID: %s. Discarding.r  r  s          rc   parse_integration_updatez(ConnectionState.parse_integration_update  r  re   c                    t        |d         }| j                  |      }|t        |      }| j                  d|       y t        j                  d|       y )NrX   raw_integration_deletezCINTEGRATION_DELETE referencing an unknown guild ID: %s. Discarding.)r~   r@  RawIntegrationDeleteEventr   r   r  )rb   r  rX   rn   r  s        rc   parse_integration_deletez(ConnectionState.parse_integration_delete  sN    tJ'()+D1CMM2C8JJ\^fgre   c                    | j                  t        |d               }|t        j                  d|d          y t	        j
                  |d      }|j                  |      }|| j                  d|       y t        j                  d|d          y )NrX   z?WEBHOOKS_UPDATE referencing an unknown guild ID: %s. DiscardingrY  webhooks_updatezBWEBHOOKS_UPDATE referencing an unknown channel ID: %s. Discarding.)r@  r~   r   r  r)   r   r-  r   )rb   r  rn   rY  rc  s        rc   parse_webhooks_updatez%ConnectionState.parse_webhooks_update  s    D$4 56=JJXZ^_iZjk,,T<@
##J/MM+W5JJ[]abn]opre   c                    | j                  t        |d               }|:t        || |      }||j                  |j                  <   | j                  d|       y t        j                  d|d          y )NrX   r$  stage_instance_createzCSTAGE_INSTANCE_CREATE referencing unknown guild ID: %s. Discarding.)r@  r~   r3   _stage_instancesrj   r   r   r  rb   r  rn   stage_instances       rc   parse_stage_instance_createz+ConnectionState.parse_stage_instance_create  si    D$4 56*dNN8FE"">#4#45MM1>BJJ\^bcm^nore   c                n   | j                  t        |d               }|}|j                  j                  t        |d               }|:t	        j                  |      }|j                  |       | j                  d||       y t        j                  d|d          y t        j                  d|d          y )NrX   rj   stage_instance_updatezLSTAGE_INSTANCE_UPDATE referencing unknown stage instance ID: %s. Discarding.zCSTAGE_INSTANCE_UPDATE referencing unknown guild ID: %s. Discarding.)	r@  r~   r  r   r  r  r   r   r  )rb   r  rn   r	  old_stage_instances        rc   parse_stage_instance_updatez+ConnectionState.parse_stage_instance_update  s    D$4 56"3377DJHN)%)YY~%>"&&t,57I>Z

ikoptkuvJJ\^bcm^nore   c                   | j                  t        |d               }|;	 |j                  j                  t        |d               }| j	                  d|       y t        j                  d|d          y # t
        $ r Y y w xY w)NrX   rj   stage_instance_deletezCSTAGE_INSTANCE_DELETE referencing unknown guild ID: %s. Discarding.)r@  r~   r  r  r   r   r   r  r  s       rc   parse_stage_instance_deletez+ConnectionState.parse_stage_instance_delete  s    D$4 56G!&!7!7!;!;CT
O!L 5~FJJ\^bcm^no  s   'A5 5	B Bc                    | j                  t        |d               }|9t        | |      }||j                  |j                  <   | j                  d|       y t        j                  d|d          y )NrX   r  scheduled_event_createzDSCHEDULED_EVENT_CREATE referencing unknown guild ID: %s. Discarding.)r@  r~   r2   r1  rj   r   r   r  rb   r  rn   scheduled_events       rc   "parse_guild_scheduled_event_createz2ConnectionState.parse_guild_scheduled_event_create  sg    D$4 56,4dCO:IE##O$6$67MM2ODJJ]_cdn_opre   c                n   | j                  t        |d               }|}|j                  j                  t        |d               }|:t	        j                  |      }|j                  |       | j                  d||       y t        j                  d|d          y t        j                  d|d          y )NrX   rj   scheduled_event_updatezNSCHEDULED_EVENT_UPDATE referencing unknown scheduled event ID: %s. Discarding.zDSCHEDULED_EVENT_UPDATE referencing unknown guild ID: %s. Discarding.)	r@  r~   r1  r   r  r  r   r   r  )rb   r  rn   r  old_scheduled_events        rc   "parse_guild_scheduled_event_updatez2ConnectionState.parse_guild_scheduled_event_update  s    D$4 56#5599#d4j/JO*&*ii&@#''-68K_]

kmqrvmwxJJ]_cdn_opre   c                    | j                  t        |d               }|F|j                  j                  t        |d         t	        | |            }| j                  d|       y t        j                  d|d          y )NrX   rj   r  r*  zDSCHEDULED_EVENT_DELETE referencing unknown guild ID: %s. Discarding.)r@  r~   r1  r  r2   r   r   r  r  s       rc   "parse_guild_scheduled_event_deletez2ConnectionState.parse_guild_scheduled_event_delete  sn    D$4 56#5599#d4j/>`dkoKpqOMM2ODJJ]_cdn_opre   c                   | j                  t        |d               }||j                  j                  t        |d               }|^| j	                  t        |d               }|%|j                  |       | j                  d||       y t        j                  d|d          y t        j                  d|d          y t        j                  d|d          y )NrX   guild_scheduled_event_idr  scheduled_event_user_addzESCHEDULED_EVENT_USER_ADD referencing unknown user ID: %s. Discarding.zPSCHEDULED_EVENT_USER_ADD referencing unknown scheduled event ID: %s. Discarding.zFSCHEDULED_EVENT_USER_ADD referencing unknown guild ID: %s. Discarding.)	r@  r~   r1  r   r"  	_add_userr   r   r  rb   r  rn   r  r   s        rc   $parse_guild_scheduled_event_user_addz4ConnectionState.parse_guild_scheduled_event_user_add  s    D$4 56#5599#dC]>^:_`O*}}Si%9:##--d3MM"<otTJJfhlmvhwx

f34
 JJ_aefpaqrre   c                   | j                  t        |d               }||j                  j                  t        |d               }|h| j	                  t        |d               }|/|j                  |j                         | j                  d||       y t        j                  d|d          y t        j                  d|d          y t        j                  d|d          y )NrX   r  r  scheduled_event_user_removezHSCHEDULED_EVENT_USER_REMOVE referencing unknown user ID: %s. Discarding.zSSCHEDULED_EVENT_USER_REMOVE referencing unknown scheduled event ID: %s. Discarding.zISCHEDULED_EVENT_USER_REMOVE referencing unknown guild ID: %s. Discarding.)
r@  r~   r1  r   r"  	_pop_userrj   r   r   r  r!  s        rc   'parse_guild_scheduled_event_user_removez7ConnectionState.parse_guild_scheduled_event_user_remove/  s    D$4 56#5599#dC]>^:_`O*}}Si%9:##--dgg6MM"?RVWJJikopykz{

i34
 JJbdhisdture   c                    t        |d         }| j                  |      }|2t        || |      }|j                  |       | j	                  d|       y t
        j                  d|       y )NrX   r$  soundboard_sound_createzKGUILD_SOUNDBOARD_SOUND_CREATE referencing unknown guild ID: %s. Discarding.)r~   r@  r;   _add_soundboard_soundr   r   r  )rb   r  rX   rn   sounds        rc   #parse_guild_soundboard_sound_createz3ConnectionState.parse_guild_soundboard_sound_createB  s`    tJ'()#%t$GE''.MM3U;JJdfnore   c                v    t        j                   |      }|j                  |       | j                  d||       y )Nsoundboard_sound_update)r  r  r   )rb   r*  r  	old_sounds       rc   !_update_and_dispatch_sound_updatez1ConnectionState._update_and_dispatch_sound_updateL  s-    IIe$	d/EBre   c                   t        |d         }| j                  |      }|Kt        |d         }|j                  |      }|| j                  ||       y t        j                  d|       y t        j                  d|       y )NrX   sound_idzKGUILD_SOUNDBOARD_SOUND_UPDATE referencing unknown sound ID: %s. Discarding.zKGUILD_SOUNDBOARD_SOUND_UPDATE referencing unknown guild ID: %s. Discarding.)r~   r@  get_soundboard_soundr/  r   r   r  rb   r  rX   rn   r1  r*  s         rc   #parse_guild_soundboard_sound_updatez3ConnectionState.parse_guild_soundboard_sound_updateQ  sz    tJ'()4
+,H..x8E 66udCjltuJJdfnore   c                *   t        |d         }| j                  |      }|\t        |d         }|j                  |      }|$|j                  |       | j	                  d|       y t
        j                  d|       y t
        j                  d|       y )NrX   r1  soundboard_sound_deletezKGUILD_SOUNDBOARD_SOUND_DELETE referencing unknown sound ID: %s. Discarding.zKGUILD_SOUNDBOARD_SOUND_DELETE referencing unknown guild ID: %s. Discarding.)r~   r@  r2  _remove_soundboard_soundr   r   r   r  r3  s         rc   #parse_guild_soundboard_sound_deletez3ConnectionState.parse_guild_soundboard_sound_delete^  s    tJ'()4
+,H..x8E ..u57?jltuJJdfnore   c                   t        |d         }| j                  |      }|t        j                  d|       y |d   D ]L  }t        |d         }|j	                  |      }|| j                  ||       7t        j                  d|       N y )NrX   zLGUILD_SOUNDBOARD_SOUNDS_UPDATE referencing unknown guild ID: %s. Discarding.rO  r1  zLGUILD_SOUNDBOARD_SOUNDS_UPDATE referencing unknown sound ID: %s. Discarding.)r~   r@  r   r  r2  r/  r   )rb   r  rX   rn   	raw_soundr1  r*  s          rc   $parse_guild_soundboard_sounds_updatez4ConnectionState.parse_guild_soundboard_sounds_updatel  s    tJ'()=JJegop12 	wI9Z01H..x8E 66uiHkmuv	wre   c                B    t        ||       }| j                  d|       y )Nru  "raw_app_command_permissions_update)#RawAppCommandPermissionsUpdateEventr   )rb   r  r  s      rc   ,parse_application_command_permissions_updatez<ConnectionState.parse_application_command_permissions_update{  s    1t4H:C@re   c                   | j                  t        j                  |d            }t        j                  |d      }| j                  }| j                  j
                  }|t        |d         |k(  rN| j                  |j
                        }|1|j                  |      }t        j                  t        |d             |j                  ||      \  }}	}
|c|j                  rB|-|j                  r!|j
                  |k7  r|j                  |       n||j!                  |       | j#                  d||	|
       y t$        j'                  d|d          y y )NrX   rY  r  z)Voice Protocol voice state update handlerr   voice_state_updatezDVOICE_STATE_UPDATE referencing an unknown member ID: %s. Discarding.)r@  r)   r   r   r   rj   r~   r	  on_voice_state_updater  r  r   _update_voice_stater   _voice_onlyr  rl   r   r   r  )rb   r  rn   rY  r  r   r   r   ro   beforeafters              rc   parse_voice_state_updatez(ConnectionState.parse_voice_state_update  s/    7 7j IJ,,T<@
'')),,4	?#w...uxx8$ 66t<D''(9$Ep(qr$)$=$=dJ$O!FFE!;;!)e.?.?FIIQXDX,,V4#/))&12FFEJ

acghqcrs% re   c                    | j                  t        |d               }|!t        | ||      }| j                  d|       y t        j                  d|d          y )NrX   )r  r  rn   voice_channel_effectzJVOICE_CHANNEL_EFFECT_SEND referencing an unknown guild ID: %s. Discarding.)r@  r~   VoiceChannelEffectr   r   r  )rb   r  rn   effects       rc   parse_voice_channel_effect_sendz/ConnectionState.parse_voice_channel_effect_send  sS    D$4 56'dUKFMM0&9JJceijteuvre   c                    t        |d         }| j                  |      }|2|j                  |      }t        j                  t        |d             y y )NrX   z*Voice Protocol voice server update handlerrA  )r~   r	  on_voice_server_updater  r  r   )rb   r  key_idr  r   s        rc   parse_voice_server_updatez)ConnectionState.parse_voice_server_update  sR    T*%&##F+>,,T2D 1$=i jk re   c                n   t        |      }| j                  |j                        |_        | j	                  |      \  }}|t        |t              rJ|j                  |j                  |j                  vrz|j                  j                  |j                         nT|R|j                  |j                        |_        |j                  &|j                  d      }|rt        || |      |_        |j                  (| j                  d||j                  |j                         | j                  d|       y )Nro   )r  r  rn   typing
raw_typing)RawTypingEventr"  r  r   r  r   rL   
recipientsrt   ri   r   r$   r   	timestamp)rb   r  r  rc  rn   r  s         rc   parse_typing_startz"ConnectionState.parse_typing_start  s    T"==-006'9-88'CHHG<N<N,N&&--chh7" ++CKK888#"&((8"4K"#){$e#Txx#h3==IlC(re   c                B    t        ||       }| j                  d|       y )Nru  entitlement_creater   r   rb   r  entitlements      rc   parse_entitlement_createz(ConnectionState.parse_entitlement_create      !t48*K8re   c                B    t        ||       }| j                  d|       y )Nru  entitlement_updater[  r\  s      rc   parse_entitlement_updatez(ConnectionState.parse_entitlement_update  r_  re   c                B    t        ||       }| j                  d|       y )Nru  entitlement_deleter[  r\  s      rc   parse_entitlement_deletez(ConnectionState.parse_entitlement_delete  r_  re   c                   t        |      }| j                  d|       | j                  |j                        }| j	                  |j
                        }|r|j                  |j                        }n| j                  |j                        }|rh|re| j                  ||j                  d|j                  | j                  k(        }|r-| j                  d||j                  |j                               y y y y )Nraw_poll_vote_addTpoll_vote_addRawPollVoteActionEventr   rs  r/  r@  rX   ri   r  r"  r  r  r   
get_answerrb   r  r  r  rn   r   r  s          rc   parse_message_poll_vote_addz+ConnectionState.parse_message_poll_vote_add  s    $T*)3/##CNN3-##CKK0D==-Dt++GS]]D#++Y]YeYeJefDotT__S]]5ST  7re   c                   t        |      }| j                  d|       | j                  |j                        }| j	                  |j
                        }|r|j                  |j                        }n| j                  |j                        }|rh|re| j                  ||j                  d|j                  | j                  k(        }|r-| j                  d||j                  |j                               y y y y )Nraw_poll_vote_removeFpoll_vote_removeri  rl  s          rc   parse_message_poll_vote_removez.ConnectionState.parse_message_poll_vote_remove  s    $T*,c2##CNN3-##CKK0D==-Dt++GS]]E3;;Z^ZfZfKfgD0$8VW  7re   c                B    t        ||       }| j                  d|       y )Nru  subscription_creater<   r   rb   r  subscriptions      rc   parse_subscription_createz)ConnectionState.parse_subscription_create      #T:+\:re   c                B    t        ||       }| j                  d|       y )Nru  subscription_updatert  ru  s      rc   parse_subscription_updatez)ConnectionState.parse_subscription_update  rx  re   c                B    t        ||       }| j                  d|       y )Nru  subscription_deletert  ru  s      rc   parse_subscription_deletez)ConnectionState.parse_subscription_delete  rx  re   c                    t        |t        t        t        f      r|j                  j                  |      S | j                  |      S rg   )r   r  r4   r  rn   ri   r"  )rb   rc  r  s      rc   r  z"ConnectionState._get_reaction_user  s7    gV\BC==++G44}}W%%re   c                    t        j                  |d      }|s|d   S 	 | j                  |   S # t        $ r/ t	        j
                  | |j                  dd      ||d         cY S w xY w)Nrj   nameanimatedF)r  rj   r  )r)   r   r   r   r   
with_stater   )rb   r  r%  s      rc   get_emoji_from_partial_payloadz.ConnectionState.get_emoji_from_partial_payload   sr    **46<	<<)) 	***e4&\	 	s   . 5A&%A&c                x    |j                   }|s|j                  S 	 | j                  |   S # t        $ r |cY S w xY wrg   )rj   r  r   r   )rb   r&  r%  s      rc   r  z&ConnectionState._upgrade_partial_emoji  s@    88::	<<)) 	L	s   + 99c                    |y | j                  |      }||S | j                  D ]  }|j                  |      }||c S  y rg   )rZ  r   r}  )rb   rj   pmrn   rc  s        rc   r-  zConnectionState.get_channel  sR    :&&r*>I[[ 	E,,R0G"	re   c                   t        | ||      S )N)r  rc  r  r   )rb   rc  r  s      rc   create_messagezConnectionState.create_message'  s    T7>>re   c                Z    |y | j                   D ]  }|j                  |      }||c S  y rg   )r   _resolve_soundboard_sound)rb   rj   rn   r*  s       rc   r2  z$ConnectionState.get_soundboard_sound*  s8    :[[ 	E33B7E 	re   )r   zCallable[..., Any]r   zDict[str, Callable[..., Any]]r   z2Dict[str, Callable[..., Coroutine[Any, Any, Any]]]r   r@   r   r   r   r   )r   r   r   )r   r   r   r   )
rX   r~   r_   Optional[str]rm   r   r   r   r   r   )rY   z
int | Noner   r   )r   r   r   r   r   r   r   r   )r   Optional[int])r   r+   )r   zList[VoiceProtocol])rX   r  r   zOptional[VoiceProtocol])rX   r~   r   rA   r   r   )rX   r~   r   r   )r  rB   r   r   )r  &Union[UserPayload, PartialUserPayload]rU   r   r   r   )r  r  r   r   )rj   r~   r   zOptional[User])rn   r   r  EmojiPayloadr   r   )rn   r   r  GuildStickerPayloadr   r6   rg   )r.  r1   r/  r  r   r   )r/  r~   r   zOptional[BaseView])r   zType[DynamicItem[Item[Any]]]r   r   )r   zSequence[BaseView])r   zSequence[Guild])rX   r  r   zOptional[Guild])rX   r~   r  zOptional[Dict[str, Any]]r   r   )rn   r   r   r   )r   zSequence[Emoji])r   zSequence[GuildSticker])r   zList[SoundboardSound])r%  r  r   zOptional[Emoji])r)  r  r   zOptional[GuildSticker])r   zSequence[PrivateChannel])rY  r  r   zOptional[PrivateChannel])r  r  r   zOptional[DMChannel])rc  r=   r   r   )r  DMChannelPayloadr   rL   )ro  r  r   zOptional[Message])r  GuildPayloadr   r   rn   r   r   r   )r  PartialMessagePayloadrX   r  r   z.Tuple[Union[Channel, Thread], Optional[Guild]])F)
r  r    r  r~   r  r   r  r   r   zOptional[Poll])r  r    r  zUnion[Message, int]r   r    r   F)rX   r~   r  r   r  r~   r   r   r_   r  r   r   )rn   r   r  r  r  r~   r  zOptional[List[int]]rU   r   r   r   r   r   r  zgw.ReadyEventr   r   r  zgw.ResumedEventr   r   )r  zgw.MessageCreateEventr   r   )r  zgw.MessageDeleteEventr   r   )r  zgw.MessageDeleteBulkEventr   r   )r  zgw.MessageUpdateEventr   r   )r  zgw.MessageReactionAddEventr   r   )r  z gw.MessageReactionRemoveAllEventr   r   )r  zgw.MessageReactionRemoveEventr   r   )r  z"gw.MessageReactionRemoveEmojiEventr   r   )r  zgw.InteractionCreateEventr   r   )r  zgw.PresenceUpdateEventr   r   )r  zgw.UserUpdateEventr   r   )r  zgw.InviteCreateEventr   r   )r  zgw.InviteDeleteEventr   r   )r  zgw.ChannelDeleteEventr   r   )r  zgw.ChannelUpdateEventr   r   )r  zgw.ChannelCreateEventr   r   )r  zgw.ChannelPinsUpdateEventr   r   )r  zgw.ThreadCreateEventr   r   )r  zgw.ThreadUpdateEventr   r   )r  zgw.ThreadDeleteEventr   r   )r  zgw.ThreadListSyncEventr   r   )r  zgw.ThreadMemberUpdater   r   )r  zgw.ThreadMembersUpdater   r   )r  zgw.GuildMemberAddEventr   r   )r  zgw.GuildMemberRemoveEventr   r   )r  zgw.GuildMemberUpdateEventr   r   )r  zgw.GuildEmojisUpdateEventr   r   )r  zgw.GuildStickersUpdateEventr   r   )r  zgw.GuildAuditLogEntryCreater   r   )r  rH   r   r   )r  rI   r   r   )r  gw.GuildCreateEventr   r   )rn   r   rx   zLiteral[True]rU   Optional[bool]r   r   )rn   r   rx   zLiteral[False]rU   r  r   r   )rn   r   rx   r   rU   r  r   z1Union[List[Member], asyncio.Future[List[Member]]])rn   r   r   float)r  r  r   r   )r  zgw.GuildUpdateEventr   r   )r  zgw.GuildDeleteEventr   r   )r  zgw.GuildBanAddEventr   r   )r  zgw.GuildBanRemoveEventr   r   )r  zgw.GuildRoleCreateEventr   r   )r  zgw.GuildRoleDeleteEventr   r   )r  zgw.GuildRoleUpdateEventr   r   )r  zgw.GuildMembersChunkEventr   r   )r  zgw.GuildIntegrationsUpdateEventr   r   )r  zgw.IntegrationCreateEventr   r   )r  zgw.IntegrationUpdateEventr   r   )r  zgw.IntegrationDeleteEventr   r   )r  zgw.WebhooksUpdateEventr   r   )r  zgw.StageInstanceCreateEventr   r   )r  zgw.StageInstanceUpdateEventr   r   )r  zgw.StageInstanceDeleteEventr   r   )r  z!gw.GuildScheduledEventCreateEventr   r   )r  z!gw.GuildScheduledEventUpdateEventr   r   )r  z!gw.GuildScheduledEventDeleteEventr   r   )r  zgw.GuildScheduledEventUserAddr   r   )r  z gw.GuildScheduledEventUserRemover   r   )r  z"gw.GuildSoundBoardSoundCreateEventr   r   )r*  r;   r  "gw.GuildSoundBoardSoundUpdateEvent)r  r  r   r   )r  z"gw.GuildSoundBoardSoundDeleteEventr   r   )r  z#gw.GuildSoundBoardSoundsUpdateEventr   r   )r  )GuildApplicationCommandPermissionsPayload)r  zgw.VoiceStateUpdateEventr   r   )r  zgw.VoiceChannelEffectSendEvent)r  zgw.VoiceServerUpdateEventr   r   )r  zgw.TypingStartEventr   r   )r  zgw.EntitlementCreateEventr   r   )r  zgw.EntitlementUpdateEventr   r   )r  zgw.EntitlementDeleteEventr   r   )r  zgw.PollVoteActionEventr   r   )r  zgw.SubscriptionCreateEventr   r   )r  zgw.SubscriptionUpdateEventr   r   )r  zgw.SubscriptionDeleteEventr   r   )rc  r>   r  r~   r   zOptional[Union[User, Member]])r  PartialEmojiPayloadr   Union[Emoji, PartialEmoji, str])r&  r   r   r  )rj   r  r   z Optional[Union[Channel, Thread]])rc  r>   r  MessagePayloadr   r    )rj   r  r   zOptional[SoundboardSound])r   r   r   r   __annotations__rd   propertyr   r   r   r   r   r   r   r   r   r   r	  r  r  r  r   r   r   r"  r'  r+  r0  r3  r7  r9  r;  r   r@  rD  rG  rK  rI  rJ  rO  rR  rT  rV  rZ  r\  rf  ri  rk  rs  rw  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r'  r8  r@  rF  rM  rW  r`  rb  rm  ro  rz  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&  r+  r/  r4  r8  r;  r?  rH  rM  rQ  rX  r^  rb  re  rm  rq  rw  r{  r~  r  r  r  r-  r  r2  r   re   rc   r   r      s   77++==_ %_ 0	_
 B_ _ _ 
_H 1 1	, &* <(
**"( # #  
 2 21.0 Y] 	 dh ++#
4D36 1 1 : :* cg q'	 : : < <  *. D D	;
KGj
n
 FJb)b5Bb	7b<, QVfquff$'f58fIMfanf	f#09<H[dhuy	*.$`D2!	1)+T8>4DE$D 2&=0$//b*d6"J*5&1,3"3H  7D-*0&i:QW7$3333/, GJdg} }69SV++%3+BP+	%+ +
 -1$$$%)$9G$	:$;//,d-,; 7	1ooT2whhhqpp
pqqqs&v&pC
ppwAt4wl),999U$X$;;;&
"?re   r   c                       e Zd Zd fdZddZ	 	 	 dddd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZddZddZdd	Z	dd
Z
 xZS )AutoShardedConnectionStatec                N    t        |   |i | g | _        i | _        i | _        y rg   )superrd   	shard_ids_ready_tasks_ready_states)rb   r   r   r  s      rc   rd   z#AutoShardedConnectionState.__init__5  s,    $)&)24;=>@re   c                T   | j                   D ]  }|j                  s| j                  |j                  j                        }|8||j                  usG|j                  j                  }|j                  |      xs t        | ||j                        }|j                  ||        y )N)r  rj   rX   )r   rn   r@  rj   rc  r}  r  _rebind_cached_references)rb   r  	new_guildrY  rc  s        rc   _update_message_referencesz5AutoShardedConnectionState._update_message_references=  s    >> 
	BC99		5I$#)))C [[^^
#44Z@ DV:	E --iA
	Bre   N)rY   r_   c               r   K   | j                  ||      }|j                  |||||       d {    y 7 w)N)rY   r  r  )rb   rX   r  r  r   rY   r_   r  s           rc   r  z"AutoShardedConnectionState.chunkerK  s=        H =Ui_deees   -757c                t    	 | j                   |j                     j                  |       y# t        $ r Y yw xY wr  )r  rY   r  r   rF  s     rc   r  z+AutoShardedConnectionState._add_ready_stateX  s=    	u~~.99%@   		s   (+ 	77c                   K   t        j                  | j                  j                           d {    d | _        i | _        | j                  d       | j                  d       y 7 5w)Nr  )r  gatherr  r  r   r   r   r   s    rc   r  z'AutoShardedConnectionState._delay_readya  sZ     nnd//668999   	7#g 	:s   .A(A&6A(c                  K   	 g }	 	 t        j                  | j                  |   j                         | j                         d {   }| j                  |      r/| j                  |d       d {   }|j                  ||f       n4|j                  du r| j                  d|       n| j                  d|       	 7 y7 O# t         j                  $ r Y nw xY w|D ]  \  }}| j                  |      }	 t        j                  ||       d {  7   nD# t         j                  $ r. t        j                  d|j                  |j                         Y nw xY w|j                  du r| j                  d|       | j                  d|        	 | j                  |= n# t         $ r Y nw xY w| j                  d|       y # t         j"                  $ r Y y w xY ww)Nr  Fr  r  r  r  shard_ready)r  r  r  r   r   r{  r  rt   r  r   r  r  r   r   rY   rj   r   r  )rb   rY   r  rn   rw   r  s         rc   _delay_shard_readyz-AutoShardedConnectionState._delay_shard_readyl  s    *	3F?")"2"243E3Eh3O3S3S3U_c_w_w"xxE 11%8'+'7'7E'7'J!Jufo6 ,,5 MM*;UC MM,>  y
 "K	 ++  "( 7v--e4x!**67CCC++ xLL!\^c^l^lnsnvnvwx $$-MM"3U;MM,67&&x0  MM-2	 %% 		s   GG ?C CC 'G 3C4AG C G CG CG 8DDDG >EG E8G F!  G !	F-*G ,F--G 0GGGGGc                
   | j                   | j                   j                          |d   d   }|| j                  v r.| j                  |   j                          | j                  |       || j                  vr!t        j                         | j                  |<   |  t        | |d         x| _        }|| j                  |j                  <   | j                  >	 |d   }t        j                  |d      | _        t        j                  |d         | _        |d   D ]  }| j%                  |        | j&                  r| j)                          | j+                  d	       | j+                  d
|       t        j,                  | j/                  |            | j                  |<   t1        | j                        t1        | j2                        k(  r)t        j,                  | j5                               | _         y y # t"        $ r Y w xY w)Nshardr   r   r  r  rj   r  r   r  shard_connect)r   r  r  r   r  r  r  r   r   r   rj   r   r)   r   r*   r  r   r   rw  r   r  r   r  r  r`  r  r  )rb   r  rY   r   r  r  s         rc   r  z&AutoShardedConnectionState.parse_ready  s   '##%=#t(((h'..0%%h/4---+2==?Dx(%DtF|DD	D#DGG&n"=1 6;5L5L[Z^5_#;K;W;WXcdkXl;m&x. 	2J%%j1	2 >>++-i ox0&-&9&9$:Q:QRZ:[&\(# t  !S%88&2243D3D3FGD 9%  s   G6 6	HHc                P    | j                  d       | j                  d|d          y )Nr  shard_resumed__shard_id__r  r  s     rc   r  z(AutoShardedConnectionState.parse_resumed  s!    i otN';<re   )r   r   r   r   r   r   r   r  )rX   r~   r  r   r  r~   r   r   rY   r  r_   r  r   r   r  )rY   r~   r   r   r  r  )r   r   r   rd   r  r  r  r  r  r  r  __classcell__)r  s   @rc   r  r  4  s    AB" f #'#ff f 	f
 f  f f 
f	+3Z(HT=re   r  )r   zCoroutine[Any, Any, T]r   r   r   zOptional[T])__doc__
__future__r   r  collectionsr   r   r  loggingrS  r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r\   rn   r   r   r   skur   r   r   r   r&  r   mentionsr   partial_emojir   r  r    rc  r"   
raw_modelsr   r#   ro   r$   r  r%   enumsr&   r'   r(   r  r)   r  r*   r+   r,   r"  r-   r  r.   interactionsr/   ui.viewr0   r1   r  r2   r	  r3   r6  r4   r5   r*  r6   automodr7   r8   
audit_logsr9   _typesr:   
soundboardr;   rv  r<   abcr=   r>   r?   r   r@   voice_clientrA   rO   rB   ui.itemrC   
ui.dynamicrD   r  rE   rF   r  rG   types.automodrH   rI   types.snowflakerJ   types.activityrK   ActivityPayloadtypes.channelrL   r  
types.userUserPayloadrM   PartialUserPayloadtypes.emojir  r  types.stickerr  types.guildr  types.messager  rN   r  typesgwtypes.commandrP   r  rQ   r  ChannelrS   	getLoggerr   r   r   r   r  r   re   rc   <module>r     sI  0 #  *      $   	  "  "  % '   %  -   0 0  > >  . % ( + ) ) ! / %  ' & #+# +)'5P*;<RWB2a$nAL.2DDEG// //d w"=Cgg& CL4Q=!9 Q=re   