+
    6<jLH                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt	^ RI
t	^ RIt^ RIHt ^ RIHt ^ RIHtHt RtRt. R/Ot^
tRt ]P.                  ! ]! RR	R
7      4      tR tR tR tR tR tR t R t!R t"R t#R t$R t%R t& ! R R]PN                  PP                  RR7      t) ! R R]PN                  PT                  4      t+ ! R R]PN                  PT                  4      t,R t-R  t.R! t/R" t0R# t1R$ t2]Pf                  ! R%R&7      R' R( l4       t4 ! R) R*]PN                  PT                  4      t5]Pf                  ! R+R&7      R, R- l4       t6R. t7R#   ] d    / t Li ; i)0    N)app_commands)commands)update_match_Ez/opt/korean-bot/korean.dbg47e@u	   [㐀-鿿]z/opt/korean-bot/hunmun.jsonutf-8)encodingc                     \         P                  ! R RT ;'       g    R4      p \         P                  ! RRV 4      P                  4       # )u   \s*[≒↔=].*$ z\s*<[^>]*>\s*$)resubstrip)ds   &korean_bot.py	strip_synr      s8    
!2qwwB/A66#R+1133    c                     V '       g   R # RP                  R \        P                  ! \        V 4       4       4      ;'       g    R # )N    · c              3   L   "   T F  p\         P                  W4      x  K  	  R # 5iN)HUNMUNget).0chs   & r   	<genexpr>gloss_for.<locals>.<genexpr>   s     K4Jbvzz"))4Js   "$)joinr   findallCJK)hanjas   &r   	gloss_forr       s0    ;;KBJJsE4JKKSStSr   c                  d    \         P                  ! \        4      p \         P                  V n        V # r   )sqlite3connectDBRowrow_factory)cons    r   _dbr(   !   s     
//"
CkkCOJr   c           
      F   V P                  R V34      P                  4       pV'       d   \        V4      # \        P                  P	                  \        P
                  4      P                  4       pV P                  RVRRRV34       V P                  4        RVRRRRRRR	^ /# )
z#SELECT * FROM users WHERE user_id=?zQINSERT INTO users(user_id,rating,rd,vol,n_answers,created_at) VALUES(?,?,?,?,0,?)g     @g     u@Q?user_idratingrdvol	n_answers)executefetchonedictdatetimenowUTC	isoformatcommit)r'   uidrr4   s   &&  r   	_get_userr:   '   s    9C6BKKMAAw





-
7
7
9CKKcfeT3/1JJLsHfdE5$UVWWr   c           
      6  aaa \        4       p\        W4      pVP                  R V 34       Uu0 uF  q3^ ,          kK  	  ppVP                  R4       Uu. uF  p\        V4      NK  	  ppVP	                  4        V Uu. uF  qwR,          V 8w  g   K  VNK  	  ppV Uu. uF  qwR,          V9  g   K  VNK  	  p	pV	'       d   T	MTp
VR,          R,
          \
        ,          oV	'       d*   \        P                  ! 4       R8  d   \        V
R R7      oMEV3R	 lp\        WR7      p\        P                  ! VR
\        ^\        V4      ^
,          4       4      o\        ^,
          pV Uu. uF<  qR,          SR,          8w  g   K  VR,          '       g   K*  VR,          V 8w  g   K:  VNK>  	  ppSR,          pV Uu. uF  pV'       g   K  VR,          V8X  g   K  VNK!  	  ppVP                  V3R lR7       \        V4      V8  d-   \        P                  ! VR
\        V^,          ^4       V4      pMZ\        V4      pV Uu0 uF  qR,          kK  	  upo\        V3R lV 4       V3R lR7      pVVR
V\        V4      ,
           ,          pSR,          .V Uu. uF  pVR,          NK  	  up,           p\        P                  ! V4       VP!                  SR,          4      pSVSR,          V9  VV3# u upi u upi u upi u upi u upi u upi u upi u upi )zCSELECT word_no FROM encounters WHERE user_id=? AND first_exposure=1z)SELECT * FROM words WHERE status='active'submitter_idword_nor,     g?c                     V R ,          # )r-    )xs   &r   <lambda>pick_sync.<locals>.<lambda>>   s    AdGr   )keyc                    < \        \        SV R ,          R,
          \        ,          V R,          \        ,          4      R,
          4      # )r,   r>   r-   g(\?)absr   SCALE)rA   mu_us   &r   gappick_sync.<locals>.gap@   s3    r$8t!3u <agoNQUUVVr   N
definitionposc                 D   < \        V R ,          SR ,          ,
          4      # r,   rF   rA   ws   &r   rB   rC   J   s    C(ak 9:r   c              3   F   <"   T F  qR ,          S9  g   K  Vx  K  	  R# 5i)r=   Nr@   )r   rA   same_idss   & r   r   pick_sync.<locals>.<genexpr>Q   s     I&QiL,Hqq&s   !
!c                 D   < \        V R ,          SR ,          ,
          4      # rN   rO   rP   s   &r   rB   rC   R   s    C(ak(A$Br   )r(   r:   r0   r2   closerG   randommaxsortedchoicelenN_OPTSsortsamplelistshuffleindex)r8   r'   userrowseenr9   wordsrQ   mine_excludedunseenpoolrI   rankedneedrA   othersrL   samedistractorsrestr   optscorrect_idxrH   rS   s   &      `               @@r   	pick_syncrq   2   s   
%CSD!kkMPSvW X WsFF WD X!kk*UVWVT!WVEWIIK %B1>):c)AQQMB&CAI,d*BaaFC6DNT!U*D&--/D(+,	W&MM&!;#aV):";<=A:D ,AI,!I,">a1\??aN#s* aF ,
E(C9v!A5SAAvD9II:I;
4yDmmD);#dQh*;$<dC 4j*./$QiLL$/I&IBDt4TC$4455lOEA,EED
NN4**Q|_-KdQy\-kAAEXWBC, : 0  FsY   K3K8>K=K=L2L(LLL$L9
LLLLLc           
         \        4       p\        P                  P                  \        P                  4      P	                  4       pR pV'       d   V'       d   RMRp	\        RVR,          RVR,          RVR,          /RVR,          RVR,          RVR,          /V	4      w  w  rpw  rpVP                  RWW34       VP                  RWWR,          34       VR,          V
3pMVP                  R	V 34       TP                  R
YVR,          V'       d   ^M^ V'       d   ^M^ V34       VP                  4        VP                  4        V# )Ng      ?g        r,   r-   r.   zJUPDATE users SET rating=?,rd=?,vol=?,n_answers=n_answers+1 WHERE user_id=?zBUPDATE words SET rating=?,rd=?,vol=?,n_enc=n_enc+1 WHERE word_no=?r=   z6UPDATE users SET n_answers=n_answers+1 WHERE user_id=?z^INSERT INTO encounters(user_id,guild_id,word_no,correct,first_exposure,ts) VALUES(?,?,?,?,?,?))	r(   r3   r4   r5   r6   r   r0   r7   rV   )r8   gidwordrb   correctis_firstr'   r4   deltascoreururduvwrwrdwvs   &&&&&&          r   record_syncr   Z   s%   
%C





-
7
7
9CEC'3tH~tT$ZULtH~tT$ZULe(U$"} 	`b&	(Xby/2	4h$LsfUKKp4	?AahTUWZ[]JJLIIKLr   c                     \        4       p\        W4      pVP                  R V 34      P                  4       ^ ,          pVP	                  4        W#3# )z=SELECT COUNT(*) FROM encounters WHERE user_id=? AND correct=1)r(   r:   r0   r1   rV   )r8   r'   ucorrs   &   r   rating_syncr   q   sG    
%C#A;;VY\X^_hhjklmDIIK7Nr   c                     \        4       pVP                  R V 34      P                  4       pVP                  4        V Uu. uF  p\	        V4      NK  	  up# u upi )zSELECT user_id,rating,n_answers FROM users WHERE user_id IN (SELECT DISTINCT user_id FROM encounters WHERE guild_id=?) ORDER BY rating DESC LIMIT 10)r(   r0   fetchallrV   r2   )rs   r'   rowsr9   s   &   r   leaderboard_syncr   y   sW    
%C;;	cehdjlltltlv 	 IIK!"TDGT"""s    Ac                 <    V R 8  d   R# V R8  d   R# V R8  d   R# R# )ix  u   입문i  u   중급i  u   고급u   달인r@   )r9   s   &r   level_labelr      s+    DHc!d(hcAPTHcZbcr   c           	          R V R,           R2RP                  R \        V4       4       4      ,           p\        P                  ! RVRR7      pVP	                  RVR	,          R
 R\        VR	,          4       R2R7       V# )# surfacez


c              3   J   "   T F  w  r\         V,           R V 2x  K  	  R# 5i)z  N)EMOJI)r   ios   &  r   r   !question_embed.<locals>.<genexpr>   s#     1aQ`U1XJb2DQ`s   !#u   📖 이 단어의 뜻은?eX titledescriptioncoloru   내 실력 r,   .0fr   u&    · 버튼 또는 ⌨️ 번호 입력text)r   	enumeratediscordEmbed
set_footerr   )rt   rb   ro   bodyes   &&&  r   question_embedr      s{    Y %		1aQZ[_Q`1a(aaD8dRZ[ALLDN3#7tKX<W;XX~L  AHr   c                 B   \         P                  ! V'       d   R MRV'       d   RMRR7      pRV R,           2pV R,          '       d   VRV R,           R	2,          pVR
V R,           2,           Vn        V P                  R4      pV'       d   VP	                  RVRR7       V'       g   VP	                  RV RV R2RR7       V'       dA   Vw  rW8  d   RMRp
VP	                  RVR RV	R RV
 \        W,
          4      R 2RR7       V# VP	                  RRRR7       V# )u   ✅ 정답!u
   ❌ 오답iW iEB r   r   r   r   r   z  ()r   rK   hanja_glossu   한자 풀이Fnamevalueinlineu   선택 / 정답u   번 선택 · 정답은 **u   번**u   🟢▲u   🔴▼   실력 점수r   u    → **z**  u/   이미 학습한 단어 · 점수 변동 없음)r   r   r   r   	add_fieldrF   )rt   ru   rw   
chosen_idxrp   r   headglossoldnewarrows   &&&&&      r   result_embedr      s$   WM,(/HX	?AY !DG}}#d7m_A&&R\ 2344AMHH]#E	eD	*ZL@Z[fZggl2mv{| Z	Y	3s)73s)4PUwWZ[^[dWefiVj0ktyz H 	
0ajopHr   c                    "   \         P                  ! \        V 4      G R j  xL
 w  rr4p\        WV4      \	        WW4V4      3#  L!5ir   )asyncio	to_threadrq   r   MCView)r8   rt   rb   rv   ro   rp   s   &     r   build_questionr      sD     4;4E4EiQT4U.U+D$d+VDP[-\\\ /Vs   AA"Ac                   8   a a ] tR t^t oV 3R ltR tRtVtV ;t# )NumberModalc                   < \         SV `  4        Wn        \        P                  P                  R \        VP                  4      ^,
           R2R^R7      V n        V P                  V P                  4       R# )u   정답 번호 (0-r   u   예: 3)labelplaceholder
max_lengthN)
super__init__mcr   ui	TextInputr[   ro   numadd_item)selfr   	__class__s   &&r   r   NumberModal.__init__   s\    ::''0A#bgg,QRBRASST.Uckxy'zdhhr   c                \  "   V P                   P                  '       d%   VP                  P                  4       G R j  xL
  R #  \	        V P
                  P                  P                  4       4      p^ Tu;8:  d%   \        V P                   P                  4      8  gR   M VP                  P                  R\        V P                   P                  4      ^,
           R2RR7      G R j  xL
  R # V P                   P                  W4      G R j  xL
  R #  L  \         d    Rp Li ; i L@ L5i)Nz0-u"    사이 번호를 입력하세요.T	ephemeral)r   answeredresponsedeferintr   r   r   
ValueErrorr[   ro   send_messageanswer)r   interactionidxs   && r   	on_submitNumberModal.on_submit   s     77&&,,...	dhhnn**,-C S,3tww||,,&&33bTWW\\9JQ9N8OOq4r  C3  D  D  Dggnn[... /  	C	 D.sR   :D,DD,-D 1A6D,'D(($D,D*D,D%"D,$D%%D,*D,)r   r   )	__name__
__module____qualname____firstlineno__r   r   __static_attributes____classdictcell____classcell__r   __classdict__s   @@r   r   r      s      / /r   r   u   번호 입력)r   c                   D   a a ] tR t^t oV 3R ltR tR tR tRtVt	V ;t
# )r   c                L  < \         S	V `  R R7       WVuV n        V n        V n        WERuV n        V n        V n        \        \        V4      4       Ft  p\        P                  P                  \        V4      \        P                  P                  V^,          R7      pV P!                  V4      Vn        V P%                  V4       Kv  	  \        P                  P                  R\        P                  P&                  ^R7      pV P(                  Vn        V P%                  V4       R# )  timeoutF)r   stylerc   u   ⌨️ 번호 입력N)r   r   rt   rb   rv   ro   rp   r   ranger[   r   r   ButtonstrButtonStyleprimary_num_cbcallbackr   	secondary_kb_cb)
r   rt   rb   rv   ro   rp   r   bkbr   s
   &&&&&&   r   r   MCView.__init__   s    %.2(+	49dm592	4#T]s4y!A

!!Ag6I6I6Q6QWX\]W]!^AaAJMM! " ZZ%;7CVCVC`C`fghkkbr   c                   a a VV 3R  lpV# )c                 H   <"   SP                  V S4      G R j  xL
  R #  L5ir   )r   )r   r   r   s   &r   cbMCView._num_cb.<locals>.cb   s     ++k3///s   " "r@   )r   r   r   s   ff r   r   MCView._num_cb   s    	0	r   c                   "   V P                   '       d%   VP                  P                  4       G R j  xL
  R # VP                  P                  \	        V 4      4      G R j  xL
  R #  L4 L5ir   )r   r   r   
send_modalr   )r   r   s   &&r   r   MCView._kb_cb   sP     ===&&,,...""--k$.?@@@ /@s!   0A+A'-A+ A)!A+)A+c           	     <  "   V P                   '       d%   VP                  P                  4       G R j  xL
  R # RV n         \        VP                  P
                  4      \        VP                  4      rCW P                  8H  p\        P                  ! \        W4V P                  V P                  WPP                  4      G R j  xL
 p\        V4      pVP                  P                  \        V P                  WVW P                  4      VR7      G R j  xL
  R #  L LW L
5i)NTembedview)r   r   r   r   rb   idguild_idrp   r   r   r   rt   rv   
ResultViewedit_messager   )r   r   r   r8   rs   ru   rw   rvs   &&&     r   r   MCView.answer   s     ===&&,,...{''**+S1E1E-FS***''Styy$))U\^k^kll_""//tyy'#?O?OPWY 0 [ 	[ 	[ /
 m	[s5   0DDBD DADDDDD)r   rp   rv   ro   rb   rt   )r   r   r   r   r   r   r   r   r   r   r   r   s   @@r   r   r      s!     

A
[ 
[r   r   c                      a a ] tR t^t oV 3R lt]P                  P                  R]P                  P                  R7      R 4       t
RtVtV ;t# )r   c                4   < \         SV `  R R7       Wn        R# )r   r   N)r   r   r8   )r   r8   r   s   &&r   r   ResultView.__init__   s    %r   u   다음 문제 ▶)r   r   c                   "   \        V P                  4      G R j  xL
 w  r4VP                  P                  W4R7      G R j  xL
  R #  L, L5i)Nr   )r   r8   r   r  )r   r   buttonr   r   s   &&&  r   goResultView.go   s=     *48844""//e/GGG 5Gs!   AA%AA
A
A)r8   )r   r   r   r   r   r   r   r  r   successr	  r   r   r   r   s   @@r   r   r      sH      ZZ08K8K8S8STH UH Hr   r   c                    "   \        \        V P                  P                  4      4      G R j  xL
 w  rV P                  P                  WRR7      G R j  xL
  R #  L- L5i)NTr   r   r   )r   r   rb   r   r   r   )r   r   r   s   &  r   quizr     sM     &s;+;+;+>+>'?@@KE



+
+%d
+
SSS ASs!   ,A A&A AA A c           
        "   \         P                  ! \        \        V P                  P
                  4      4      G R j  xL
 w  rVR,          '       d   W!R,          ,          ^d,          M^ p\        P                  ! RV P                  P                   R2RR7      pVP                  RRVR,          R	 R
\        VR,          4       2RR7       VP                  RR^VR,          ,          R	 2RR7       VP                  RVR,           RVR	 R2RR7       V P                  P                  VRR7      G R j  xL
  R #  L L5i)Nr/   u   📊 u    님의 어휘 실력r   r   r   z**r,   r   u   ** · Tr   u   신뢰 구간   ±r-   u
   푼 문제u   문제 · 정답률 %Fr   r   )r   r   r   r   rb   r   r   r   display_namer   r   r   r   )r   r   r   accr   s   &    r   r,   r,      s    %%k3{7G7G7J7J3KLLGA+,[>>4K. 3&qCeK$4$4$A$A#BBWX`hiAKK_b8S0ATUV^T_H`Ga,bkoKpKK_bQtWS0A,B4KPKK\AkN+;;OPSTWyXY)ZchKi



+
+!t
+
DDD M Es"   <ED=C7E6D?7E?Ec                 t  "   \         P                  ! \        \        V P                  4      4      G R j  xL
 pV'       g(   V P
                  P                  RRR7      G R j  xL
  R # . ROR.^,          ,           p\        V4       UUu. uF/  w  r4W#,           RVR,           RVR,          R	 R
VR,           R2NK1  	  ppp\        P                  ! RRP                  V4      RR7      pV P
                  P                  V\        P                  P                  4       R7      G R j  xL
  R #  L Lu uppi  L5i)Nu>   아직 기록이 없습니다. `/quiz`로 시작해 보세요!Tr   u   ▫️z <@r+   u   > — **r,   r   z** (r/   u   문제)u   🏆 어휘 실력 순위r   i\ r   )r   allowed_mentions)u   🥇u   🥈u   🥉)r   r   r   r   r   r   r   r   r   r   r   AllowedMentionsnone)r   r   medalsr   r9   linesr   s   &      r   leaderboardr     s    ""#3S9M9M5NOOD""//0p  }A/  B  	B  	B%
Q6F"4*( 	{#a	l^8AhK3DD;HXX_`( 
 *7TYYuEU]efA



+
+!gF]F]FbFbFd
+
eee P 	B* fsF   2D8D,D8 D8!D."'D8	5D0>A'D8%D6&D8.D80D8c                    "   \         P                  ! R RRR7      pV P                  P                  VRR7      G Rj  xL
  R#  L5i)u   한국어 어휘 마스터u  단어의 뜻을 **10개 중에서 고르는** 어휘 훈련 봇입니다.
당신과 단어 모두에 Glicko-2 점수가 매겨지며, 봇은 당신 실력에 맞는 단어를 골라 줍니다.

**데이터**: 국립국어원 표준국어대사전 (뜻풀이 CC BY-SA 2.0 KR)r   r   Tr  N)r   r   r   r   )r   r   s   & r   aboutr  
  sB     *h 	A 


+
+!t
+
DDDs   :AAAc                (   R\         P                  P                  RV /4      ,           p \         P                  P	                  VRR/R7      p\         P                  P                  V^R7      P                  4       P                  RR4      pR	P                  R
 T  4       4      p\        P                  ! RT,           R,           T\        P                  4       Uu. uFC  qUP                  4       TP                  ^4      TP                  ^4      TP                  ^4      3NKE  	  pp\        P                  ! RT\        P                  4       Uu. uF#  qUP                  4       TP                  ^4      3NK%  	  pp. \        4       r\!        T4       EF  w  p
w  rrY9   d   K  T	P#                  T4       T
^,           \%        T4      8  d   Yj^,           ,          ^ ,          M
\%        T4      p\        P&                  ! RT4      p\        P&                  ! R\        P(                  ! RRY;T^,            4      4      p. pT F  w  ppTTu;8  d
   T8  g   K  M K  \        P(                  ! RR\*        P,                  ! \        P(                  ! RRT4      4      P/                  4       4      pT'       g   Ku  TP1                  T4       K  	  T'       g   EKA  \%        T4      ^8  d"   RP                  R \!        T4       4       4      MT^ ,          pTP1                  RTRTRT'       d   TP                  ^4      MRRT'       d   TP                  ^4      MRRTR,          /4       \%        T4      ^
8  g   EK   T# 	  T#   \         d    . u # i ; iu upi u upi )u^   Query stdict (keyless) and return every 표제어 (homograph) matching `word` with its senses.z3https://stdict.korean.go.kr/search/searchResult.do?searchKeywordz
User-Agentz(Mozilla/5.0 (compatible; korean-bot/1.0))headersr   r   replacez[-\s]?c              3   N   "   T F  p\         P                  ! V4      x  K  	  R # 5ir   )r   escape)r   cs   & r   r   lookup_sync.<locals>.<genexpr>  s     51"))A,,s   #%z&searchView\.do\?word_no=(\d+)[^>]*>\s*z%(?:<sup>(\d+)</sup>)?\s*</a>(.{0,40})z"class="dataLine"[^>]*>(.*?)</font>u   \(([㐀-鿿]+)\)u   「([^」]+)」z<[^>]+>r
   z\s+ z / c              3   B   "   T F  w  rV^,            RV 2x  K  	  R# 5i)   z. Nr@   )r   jr   s   &  r   r   r%  0  s      DODAQqSEA3-Os   r=   supr   rL   rK   :NiX  N)urllibparse	urlencoderequestRequesturlopenreaddecode	Exceptionr   r   finditerSstartgroupsetr   addr[   searchr   htmlunescaper   append)rt   urlreqhflexmanchorsdlsentriesrd   r   rL   wnor*  tailnxthmpmdefsdptctr   s   &                      r   lookup_syncrO    s   
?&,,BXBXZikoYpBq
qCnn$$S<Ak2l$mNN""3"388:AA'9U >>555DHJ1D8;ccefhjhlhlIn o In1	1771:qwwqz1771:> InG o,.KK8]_`bdbfbf,g
h,gqGGIqwwqz",gC
hT$-g$6  Cc;#$q53w<#7g!enQSVYY*D1YY)266*b!c	BR+STEBR~#~~VVFCrvvj"a7P)Q)W)W)YZ2KKO	 
 HKD	TUuzzDIdODD[_`a[b	3sGBRXXa[TVbrxx{b,T
T 	Uw<2N) %7( N7  	o
hs   A"M7 A	N
)N7NNc                    \        4       pVP                  R V 34      P                  4       pV'       d,   VP                  4        VR,          R8X  d   RMRpRV RV R2# TP                  RYVR	,          ;'       g    R
RVR,          ;'       g    R
\	        VR	,          4      \        VR,          4      \        P                  ! V.RR7      R
R
RRVR34       VP                  4        VP                  4        RV R2# )z(SELECT status FROM words WHERE word_no=?statusactiveu   이미 학습 풀에 있는u   이미 심사 대기 중인u   ⚠️ 'u
   '은(는) u    단어입니다.zINSERT INTO words(word_no,surface,hanja,tier,pos,hanja_gloss,definition,synonyms,seed_rating,rating,rd,vol,n_enc,submitter_id,status) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,0,?,?)r   Nu   제출rL   rK   F)ensure_asciig     b@r*   pendingu   ✅ 'u   ' 제출 완료! LLM 난이도 심사 후 학습 풀에 추가됩니다.
(제출자에게는 이 단어가 출제되지 않습니다.))	r(   r0   r1   rV   r    r   jsondumpsr7   )rF  rt   entryr8   r'   rc   wheres   &&&&   r   add_submission_syncrY  8  s    
%C
++@3&
I
R
R
TC
		14X(1J-Pm$z%0ABBKK	f	E'N**dHeEl6J6JdIV[\cVdLe	5&	'TF)O	tUD#y	23 JJLIIKD6 L L Mr   u   찾을 단어)rt   c                $    V ^8  d   QhR\         /#    rt   r   )formats   "r   __annotate__r_  L  s     = =c =r   c                 <  "   VP                  4       pV P                  P                  R R7      G Rj  xL
  \        P                  ! \
        V4      G Rj  xL
 pV'       g,   V P                  P                  RV R2R R7      G Rj  xL
  R# \        V4      ^8  d   RV R\        V4       R2MRV 2p\        P                  ! VRR	7      pV F  pYR
,          ;'       g    R,           pVR,          '       d   VRVR,           R2,          pVR,          '       d   VRVR,           R2,          pTP                  YeR,          ;'       g    RRR7       K  	  VP                  RR7       V P                  P                  VR R7      G Rj  xL
  R#  EL_ EL? EL L5i)Tr   N   표준국어대사전에서 '!   '을(를) 찾지 못했습니다.u   📚 u     ·  표제어 u   개r   r   r*  r
   r    (r   rL       「   」rK      —Fr   u-   출처: 국립국어원 표준국어대사전r   r  )r   r   r   r   r   rO  followupsendr[   r   r   r   r   )r   rt   rE  r   r   enr   s   &&     r   dict_cmdrj  K  sx    ::<D



$
$t
$
444%%k488G""''*GvMn(o{'  A  	A  	A?B7|a?OeD6)#g,s;W\]a\bUcEE2A%yB'g;;bGQ''De99d2e9+S))D	%5%>%>uM  LLELF



#
#!t
#
<<< 58 	A =sd   0FF"FFF"$FFAF!F9"F.F?F
FFFFFc                   8   a a ] tR tRt oV 3R ltR tRtVtV ;t# )
SubmitViewi`  c           	       < \         SV `  R R7       WuV n        V n        V Uu/ uF  qDR,          VbK  	  upV n        . pVR,           F  pYR,          ;'       g    R,           pVR,          '       d   VRVR,           R2,          pVR	,          '       d   VR
VR	,           R2,          pTP                  \        P                  ! VR,          VR,          VR,          ;'       g    RR,          R7      4       K  	  \        P                  P                  RVR7      V n
        V P                  V P                  n        V P                  V P                  4       R# u upi )i,  r   r=   :N   Nr*  r
   r   rc  r   rL   rd  re  :Nd   NrK   )r   r   r   u+   등록할 뜻(표제어)을 선택하세요)r   optionsN)r   r   rt   r8   rE  r=  r   SelectOptionr   Selectsel
_on_selectr   r   )r   rt   rE  r8   r   ro   r   r   s   &&&&   r   r   SubmitView.__init__a  s$   %"	48189A)a9AeHNN+Ezz2aj\++xx4%z--KK,,5;a	l:;L/:O:ORQU9VX Y  ::$$1^hl$m OOdhh :s   Ec                d  "   V P                   P                  ^ ,          p\        P                  ! \        W P
                  V P                  V,          V P                  4      G Rj  xL
 pV P                   F
  pRVn	        K  	  VP                  P                  VRV R7      G Rj  xL
  R#  LF L5i)r   NT)contentr   r   )rs  valuesr   r   rY  rt   rE  r8   childrendisabledr   r  )r   r   rF  msgr   s   &&   r   rt  SubmitView._on_selectr  s     hhooa %%&93		4<<X[K\^b^f^fgg--BBK  ""//4d/SSS h 	Ts$   A#B0%B,&?B0%B.&B0.B0)rE  rs  r8   rt   )	r   r   r   r   r   rt  r   r   r   r   s   @@r   rl  rl  `  s      "T Tr   rl  u   제출할 단어c                $    V ^8  d   QhR\         /# r[  r]  )r^  s   "r   r_  r_  {  s     w w wr   c           
      >  "   VP                  4       pV P                  P                  R R7      G Rj  xL
  \        P                  ! \
        V4      G Rj  xL
 pV'       g,   V P                  P                  RV R2R R7      G Rj  xL
  R# \        P                  ! RV 2RRR7      pVR	,           F  pYR
,          ;'       g    R,           pVR,          '       d   VRVR,           R2,          pVR,          '       d   VRVR,           R2,          pTP                  YTR,          ;'       g    RR,          RR7       K  	  V P                  P                  V\        W\        V P                  P                  4      4      R R7      G Rj  xL
  R#  EL` EL@ EL L5i)Tr   Nra  rb  u   📝 단어 제출: uN   이 단어가 맞습니까? 등록할 **뜻(표제어)** 을 골라 주세요.r   r   :N   Nr*  r
   r   rc  r   rL   rd  re  rK   rf  :Ni,  NFr   r  )r   r   r   r   r   rO  rg  rh  r   r   r   rl  r   rb   r   )r   rt   rE  r   ri  r   s   &&    r   
submit_cmdr  z  st    ::<D



$
$t
$
444%%k488G""''*GvMn(o{'  A  	A  	A24&9"r  {C	DAbkk%yB'g;;bGQ''De99d2e9+S))D	&6&?&?%%FuU  


#
#!*TCP[P`P`PcPcLd2equ
#
vvv 58 	A wsd   0FF"FFF"$FF=FF"F .F/AFFFFFFc                  "   V P                   P                  RRR7      ! \        4       V P                   P                  RRR7      ! \        4       V P                   P                  RRR7      ! \        4       V P                   P                  RR	R7      ! \
        4       V P                   P                  R
RR7      ! \        4       V P                   P                  RRR7      ! \        4       R# 5i)zLoaded by handler.py via bot.load_extension('korean_bot'). Registers the quiz commands on
the shared tree; bot creation, token, sync and presence all live in handler.py now.r  uD   단어의 뜻을 10개 중에서 고르는 퀴즈를 시작합니다)r   r   r,   u+   내 어휘 실력 점수를 확인합니다r  u"   이 서버의 어휘 실력 순위r  u   봇 소개 및 데이터 출처r2   uL   표준국어대사전에서 단어를 찾습니다 (모든 표제어 반환)submituX   새 단어를 제출합니다 (사전 확인 → 난이도 심사 → 학습 풀 추가)N)treecommandr  r,   r  r  rj  r  )bots   &r   setupr    s      HH&.tuvz{HH(0]^_efHH-5YZ[fgHH'/PQRWXHH&.|}  G  HHH(  1K  L  MW  Xs   C-C/)
u   0️⃣u   1️⃣u   2️⃣u   3️⃣u   4️⃣u   5️⃣u   6️⃣u   7️⃣u   8️⃣u   9️⃣)8osr   r;  rU  rW   r   r"   r3   urllib.requestr+  urllib.parser   r   discord.extr   glicko2r   r   r$   rG   r   r\   r   loadopenr   r3  r   r    r(   r:   rq   r   r   r   r   r   r   r   r   Modalr   Viewr   r   r  r,   r  r  rO  rY  describerj  rl  r  r  r@   r   r   <module>r     sv   \ [ [ [ [      $ v	YYt9GLMF4
TX%BP.#d
*]/'**""/ /*"[WZZ__ "[JH HT
E	fE!HM& O,= -=(T T4 ./w 0w&Xy  Fs   E 	E%$E%