From 4064673bbcf84b3689393f979494dbcd65f133e2 Mon Sep 17 00:00:00 2001 From: FallenDeity <61227305+FallenDeity@users.noreply.github.com> Date: Fri, 16 Aug 2024 04:27:29 +0530 Subject: [PATCH] feat: update cogs guide, and few touch ups in other guides --- docs/assets/cogs/hybrid-group.png | Bin 0 -> 68367 bytes docs/assets/cogs/prefix-group.png | Bin 0 -> 63971 bytes docs/assets/cogs/slash-group.png | Bin 0 -> 44004 bytes docs/cogs.md | 480 +++++++++++++++---- docs/embeds.md | 65 ++- docs/markdown-and-ansi.md | 38 ++ docs/tasks.md | 94 +++- docs/views.md | 1 - examples/hot-reload/cogs/sub_cogs/sub_cog.py | 9 + examples/hot-reload/cogs/super_cog.py | 19 + examples/hot-reload/main.py | 55 +++ 11 files changed, 622 insertions(+), 139 deletions(-) create mode 100644 docs/assets/cogs/hybrid-group.png create mode 100644 docs/assets/cogs/prefix-group.png create mode 100644 docs/assets/cogs/slash-group.png create mode 100644 examples/hot-reload/cogs/sub_cogs/sub_cog.py create mode 100644 examples/hot-reload/cogs/super_cog.py create mode 100644 examples/hot-reload/main.py diff --git a/docs/assets/cogs/hybrid-group.png b/docs/assets/cogs/hybrid-group.png new file mode 100644 index 0000000000000000000000000000000000000000..033cf5dab16fac1e124171de32f65f6897d59830 GIT binary patch literal 68367 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

}($Df9E~g#oeghOX;JXK2 zN;cKh!{r0~3tjs~^ zX~a#>79}PbIav7E(o8t)mCK!v#}#b#%Z(wiGynOP0u%1s?ptzQo`4*ud{XvW0pR(t z6$_UzQA8bbgwb3QM_qW1xICR$ws`ue!o(V5t(=jVO zoHHVd2POa9RSV-^>B6q%?&)X4)wYlyTazy#$`chpO-Jh}R94VZ{J3j0k0zpZoW?9{ z*7scqB-!)Bd#6?)hqr{bJLBzoI70edDcnQDzLM@NgJEq#hQ;t0fi+~HAs{?|y3!50H`RQ(dBW*bwB&w3O6O1)5K z@o{Qo$F)VM@UIAnEG(JZ);+Q-D+xW%@gtuXL?d!J^L=Qx?XE#k?kY@Jf$auM8@mv0 z=o|k~@L$a|a_zf9U=UTDX`*(PJdwZi$@Kq`%xe2n5_Gg-OZE%`u|xZ9NV|h(zuQ44 z)_pciW<%Xo3-PJMPcU>9Of6Ex)9lbVNAq|cI*0ZnM?}HBecPjL{Y)mx#QEi)`t$fq zW#fAO8N`<~z8o^OFQ3bd`~uxpMNLIHSC|+*lL7dR4HNQL>EdPJ*dctwD+r@{7pkS?(1xS+SHhn zA5_2EZ)k3#Y!~`hl@rZE)qY(?h1QHPvnk`hI#!V1Jf&X$H@3nSzYAINRA!gn|27W$ zzlCV;LQ)Tz+2nnx^J|e)hhqPnqPN(g>fLa=EG-#BMzLEwfiuKh6Swx4+LP`1p$3AEn?l zI)m?S!0EkzSC8x0o4=DZwzB(@A<+n1Vk_OM(7)+)W;_@Q@FbIFeD@Cz_`kDbI9?xp zH%@*4>M550=BB1&^>ihrUng3UojCeg~{%dBvECZna_d!NMfk+Vw zNPeenTm>34sV~CX_Dpwj{-Nr@am2LNzOVL3Ye#NbEK zS3cGea^|Irfn>G4UzT_2C(k!KnIL>(e{eU5iI5py*mepK< zzdrMc7_065s)C6;%4}K+Fy3G&;V9j|NFN>Dvry}rTVxo+YwPIbWP5Wv%v7PDW5=l+`R0faeYLcDMlXy? zsaMJmmC`O<+#g8uBdjoY8&Ba+nWaGrePUVIZ0vTYi=H|Se&Ij-XTp2awgu~0Yr_ld z;DFhi8gK4|IXdhJf3dsgoEcid+o3sEN_$70L1v;Go*?}|7K(z~4NSNvr^&(PP^RT_+*1!L}oEt+?gKK0ni@_n~6ufGFI z`Vp|_BWcbgK<2Lg+rp8MDlcZt!$~B}-KMJ6u_FGrWo_w?Sxe6%>{ZnuyY$jF9A_DL zCl7K6J+dXF#Bp`RV&>CR#b?(!OTQAe#kj#`QBbmCnk+Vm>0{0a)67#cAKw@PZFlKu zwAc~<{P_e#tv&HfjNcBDdIutFoQ}r<4LD%)-KBYcb62(-uBF0(fv!D{ew5r&kA7r< zr+H-eN~yxCfL#}4ngD@ z;N%|en^sI78y8l<0@7fHFz)LT&H|`id;j|SuNp^j0Ug3}1a`e7;Au^XzGe%-{sY(7 z@78b6(0eFPyV6WAeRA@d+p0_8j~cSA8OZM?O~KAn;ISS@*B)YI@^6H(a~VlErcTd4 zoZLS5zWd_B$dEHqH2@q=XfeTdMy4~$Rv45xxKk3K?gdqixJmx2-Gon^FQuoCf3ix}S#|OrjJl+R@ zv%^K&{rx}&Cg#-+Tk`faWj|w7B1#F5H8&^{#Eck&3{V(nk z7sy9ZHae;uC?`H3Ji`m|b0qedr<&sXfKR?a>6=Tcs)wh>yWy}U1Cqgc{}H2E5{}3s za_Y^pNhP7GW148IRhn4wNjH+t7FZi@f# zP<8G>g|^A{l>51Ntd0u-)Mrinhbealp*`Hl7VYxIE>j+hCYIMhXL{>B(g^oq&BCbKN@Uvlel20Mn{|dnVclh-m31#lXk7K4(`^J{1B&&Bo-w{|aW5;Nty7brYmNKrNO}|JJ zEZkj67t@dXy_AyE(_^Ob+v5%EFiZE@m|A|R@*@NpGch?WE*?jEhcYd;eYec4quh2} ziD>Oos0OolxW9W|_~Az?YxH>VQ30LI__B!sd^HQD-6BUFiF0TkzfEjJH%Z6zUWB{7 zWYr*pjTA0GJPmI<1+m1Gi;5DmJOjgeqOeUg3Dl7~z9Wc#_T~ewBt7}?i7HEx-QM<& z&4Iv$M{cWI3<*j z$|pC_0>{3*ZBAH}<|hR@`QzwW2Zo{2`XUgoq+$lT(W8{!;2-!|GQaoX47?acw*g(4 zNeEhF`u8kG8kLICM7<1bJ(SdwL|35{p=e2$D!ADq{))pQuX^kPe1+|i8+hEPA%9}# zP?I)xIW->SJ<=VYps;fzeb#VK_w^8jnr4#0DzysH@b6Q2yFCBvrj^kp^O`|P9j@ka z7hgbojs7}KFR#iOSyviFi7;8DmsY-MmqVLedPf4=aH3f%B6&btUC*aZh zHv$3z6zs33{zrO>9hbWl`MCmal{PJvr(@9fwy~dP#Ue0%|L!`6=ptF+g+?6Z07?Kc zwi53one(9l1_W=jmv<}mcy?l*%SM#d#i=wRj~|YaEZE+N`s@rT?=8D1#q4r{BmPv8 zu9;xN^vZhN7FJ#2xHDGtPmhVg`T>?=giZ519_fwyRp){&q9^|~$Z~`2E3W8klgNqj zo}9O{mOw^?p19HIn;-np$*$M(dckA|6dwRQ# zp)iUM+)Rq5>;~8R#|0TzKNAFfn!z z1~l)o5t-G-GJTtyjMOi{^D z+^@1g#vOY|PLbp%0vg#?zZ>;m20HIx5Ix{=t|H484AbDt^k+Ux46nW7u%6YnXkzx! zxe2TU?zX3pE;1~7W@c1t@V-50r!Au7O9Q$39e00-U!M@m$?iQDbNlKI{4&}cJ6mjS z;eoq6^=DL_KwRVTSM_w?5y!L{k;?g*LRiFkxZk!H@ZjhQzPoxX35qv| zS^MnG%s}tD-SpK(wVMuLY7+tAI`2a^&y0TXmiklkg`dR30(#v&?WS3RbwM>(*I}1L z-GL|o(H#@c$TnT-U;E6m!v~rd0jjaUdQO>w67**E7PM)gTGs|Ct-`=fSNBt#JiA{0 z9r7x(5ODq8o6aT^4^~UI?G1_bozo%BM=1C725mTAg!Uxe?b~F$h@)-wA5xjdcFCq3+2XDR(>H68bkO<^JsB zrG}OcybgAcANu3&lbI7{bDj8z9 z?o;t>$503T@Ya55MgzH-g|K1Da)|!?v!2jvL^`&)f!elPr|W}_Ymg*S{ghpky?N@A z7rm#q(}9m&LWFlqEc0Ol)?(w1>fAK|8)dkTXmu=Xa#*bCGW67So>+5#!_>UF?t2jo z*VO9yT;pca5Xt=1d^&oRO7H#xM4)iw*;ibem~?bg;TlX9sYfM|=6Q(!kX7Z044R!P zN)zju;uuHthMwevR5VAZEvmYdz7a?I$^6sYFq{=Uh?M zM3#{_zT6gi>RkF8+96ailesJBf14KRKWbW(l$T(@2 zEMl{Q2EeCS&@4j~VZ)`A0oe|-s%7j!gUql(VUvhl1=q|*+-}orVF`}`pKedbLrz)G zKHIvPIxg};OW~EY)emc5yFpDXm)a$_XVj}A6NU-h#I!kqeH;#VJ=~)P&BTyEu;fJc z97*=(xlkfEap^9%LRO4(ka!MU{D-XE%TWe_VjoO4DY?^B3I-fW%xOkTnRarO77&5k z-L6LKM8g7}pz|`rS*lC8h&RQDR!@`@ji~N#)hnb~Sn6M?GmKJXJYOqbeEGIwY&z+wrZ)dv=rjjv}<4wk4umeDaCp&by=ax41VY4$*XLIQlr z5a*Wh1S+|x!LPcfEpTdDxz7MeRZTUWBqud%AFGY6qpZ0(oo=Z~#9N+7ctn(J^LwUZ z!--SKE>FuO_hO#?%jWu@6S)f7d0QCQJViSs{M`HRdY2Hk3Z?3VbUMZ+EhXku)z8`u zUr#X8asX|xMv`m+wE!idZ%;pHB2;ZnY$R-E%@EyZ2C$%@7w!Bb2V z!(hZA$j0-D$+u_7l#ns~hjJbL{cX_KEHSuWCkTe?RWqtp&aXl*J8j888y-YhBMMWg zwdJcr-h+>e?HhtN{pqnQ{KLwNADN%c>%^3dJW^0|ZZwSBEUa?L%jt;9(SOfdi(O63 z_!-t;`w;%!QAeg4H7BPhZ;{nHZ|avsRjFeTq&KPtcR|VJtc#3?hp-PZKlidQCCZD{ zH)ZYZ)Cc75rkrd|*Wc()E>NYYv{8vz-RQ@h6>P@6`UOoi(@QmF;mq4O=NKF5^2Z;g z;soU*@8NB19J}jWSIdB#T*U^>D9yg-?NJ}q74&s9O-&P0QzDdlr%kqts}1;=dC-N4rkQ(D`Ai&?ZAI zm!k{R*-S~UH?M|)N`IqMXI;eAn>*z>ej~6}%EaG?+{i7JosYaf#C8^<1XJrbivaaE z>&DMiet${ftbPyT?>kuXH?T%5b**2=ugk7U|7rREv!KH9wB>lSVqeaaC+|06f{#yb z(dS`0v~k5Jot*Jkm2dk#Y#&VWr%;nbw14~CBO3p_ul%a;_fKU+Ms7jWKE1kxarBRx z^lUpCzt&atKuV62n@ZBIGkqk3szMHVRQkz6TI8Yfz6-}LB80^Y9m-mWHigDP)VmKT z;8QWk@6e9O7M8z2oLs)Dx9JNcHbNirWJwl)URn!<%%x5H7vW;#kJ(U zNDD-1h%WBTZW|jznfmEgr{`f1U>bN+wu}~c5Vl!g!kcz^pgy-7yJAN-$2}4OncNZY zv@r8ro5)X4(X3`RurL zXyBExOz&=ZYEqC;fel(!&i7^nrCyU8a&t|8!xQ%6LtCIBSYL(E{#saH>3n z=vf=du7PUGc4KcrgoMk-pd354Cq{&}4#^wOi78mNw2=t%al`4%Im!5y=3JYcj zXNK9nlNsoTa{_TVoFiJ_vyd-R%&l^X3k>?@VS;Z|?&8&7c50D|CE8$<3s5(bARnjY zcNA1MFx2~cJ`55T@9~g763+SANj|teY8BKp{C=IbD#b^WA^oEvt7kPo5@+3Y0`FU) zmB{Zp)PIZ?@{jKHE9ifkUD2K+>M~P^pb3UlBiJwc;d9PTJ(Ct({3W!cGGp&b{2~(I zLnp_{{$6CTt1Er!x+3VW_z<2_FUy| zj*aefH*HjZFyMI#31#e54+aByX=23arLyc(;0+7)JC_ELmyW@k((FsGXu?KcG~>J4 zx#*TeY%V6_)xLEDVm^z-LQ-Vc-*oGE!^D00-W(lA zTw!{WZsIdt0Pab$M3Z?GKDI2Yl z@3%|uy7J0wLe_g~@9g)9HN5k0$bj-W0wiQh-jCltOkIJs22dNuO9>C~1d}gOFGedQ zF21e9TWe|gb0#|3Fee6D5ojKm*(qi8?Mnh_Dw!fpfki~PrearF9!Tj6^{Wqc#-F-s zT$!X(BUCKTwujKNH`z%EBbt$dbCqp)N?{ko0@~eKswPEbS>exM>X4-?^62spoiqaq zP&BKtJ+wN7FaimC{Oa^cWglzY0JK_>(?Pd7l?gsAI`uTN0BiN>Fx+FfkHIgH5g*$_nFT!+Ch*KD!eU znk41K`rIyBVPvLQWSPZ$h?f;{+5iEO0e1SwgA#FX{0tc85MICZ4odTHe8N+2W^80%wNx16l;!}abowZJUc z!e6;FEjhyW^>)`-v<-u`WEB$uX0|#i^%r(3+jF&!F+%wHAAmsSs^FjN$hZ_@Y02LB zQ8aHt?%TE9@HSkYj&YIMHik9bD37wWogKKNNrIQ@M^0;s<>pVukl#}lCNcX#NIJ=Z zgg-WhU<9i}z@EZrt}$0n9&W;-bslYYYKiDnNhEkAUG7KM^&?r#*rjMvp~Sh4&GI5I&Zgiy)PrvB{BrDs zORD9A2NNX|fu_(fA+HA=?W#Wa%`^#qmseC>w+F~qc(Tk5BDzdc<@b{@qh&M+cwTL2 z@H%3{-~~LkuQ>R@SB@Ok_lDhGuDsoy5>wOs%vOXWcL$x2bK&65=GHsz7Ez8tN|yqc z*-`i!y8Jx~-r6iCf}N23$p*QU8s{y)yc~5kNTxc>O0=iD5M{k8c|Q;o)#%iSJfmyZ zCr!81u+M)iCc0Hkkgr_^x}_Q+3l_d@eY|yp*^`C<1zxmW0^?*RhioeOEl)8q*>0%M z7u|_eyIkA5#+6NPaTgcoA6KbY4`oHTjbgmOKR&Q`z!TlFFuL<=x=-~j;-U=YKf6x$ zBcm743AM5hd8ajH{4rie1;GgvyD%~Q+?FOz{Bx3T2}tm91-v8??#S;a*OJKZw;+4k zw;A%a&pOMY6yaC3f1_7W$cjX>StZ#F6w|40dmY3(^SP#d{Gt5O`oM%o0sc0qBr%Z9 zFk?CDUTwQMmPeDa_Z54Uq7{a0w26w|2Zn>e__0qmZTEqVYR|^l4rZvDd9=a^t8q76 zb=n7;aMuk+f?s2%UCsN4_8sxgs)v8R;NpoxqggVbY=S|2Tm~`P-Q><6rMoIb(s{{@X zfSf<7M+YbD^P2+hCFa>Pf*z|Hn6$%!-DnO1{Ul>}?xfV;DQtEOy0$+q*1KNkhU|`@ zS5(wAx=d@{iCIf=0YiiETJI;~-;YSrVH(5CetwjV%P?Xe!9Px*4EdNsm*0*c1O&+F znvNbEq=2pIj8LJk$;|RcjR4nItnRUI8iQ^geAF+@sN&n)85|EjUGu37fWaE+g>h*1 z1$9}ui~kS61xKIq`xdtG6$bVZASt!aRaGb<6bd9#JIz2?&7n zZ3%)qKh<9^vPJy)B)7kbaC8GwwIh`9Itk7?9~*wwruLSJj{5pgfyhEKb*|^%gg{j{ zjbIH;7T$5LNBi~nM&&CDhvT5?I+#0Mu1x2+=W7ba6-vncF(zS-{v%jrwYwai4Gm0Q z%p;t}sX!#1cA~2l6S0!tVmK<|K#D()%T^BZUnsFBOl3MP0eiDX_P+P_!lBTE^)gBIff># zME*Dm{h(t>A7>Q{WeP+b?VM#rV9ME7SRQ0kC4K#1@)ovuOn%U8!GX0bXFc?NN|Gh9 zmDI+XtCQ2Yq{^=WP3o5A;HtY|`rn8^Pa^UF*${yW=jJFGYzy*jY>8UI&yR9UGk#|{ zw#y#3ZH)2qQqX)jUw1;dj!}{cg#Y}{)y^Y|`phpkAOxUPfx~UAX8Y4Y9ypz-Y0qs? z%d2#q0I&t?S;;rnIGLgd5d?^j< z+O#t+wcwN}cZ|?>iWtk2@iquU=fe2Him`4f6MF~dQV!!duZgcy+O=724>#A(1djPv z1E^_iTg>1tcyB3`-o2fH)~pdW-i{^Okapk2@28Uq1_h!Y_((ZOJ=iT$>Fm01M7Fx~ zh7aA=EtdfcK5CSwg&l>zq?UF>b(9@vumO)EOV&EJSFHn=Eqm{Dulp5&eM*eD6k}0*44xp!K1lFcSB!P{Eh` zei47O{EM+8{-Do)q5{BS4xMXlE!{s+fgX*4j@e5DDo}!&lLjt$NCI$FrZtR7qaj2! zbt7F?iSwpwA+zY8o#8G#Ud z`QiLzHt8o6iHDB(I9k`$_G0Rj)V!}10`m&P%-`(?H z$iNfkCJXM-`D&y^oFH4d1i38|i@e&>w>E{MC%z(g!gwu5LPZv=QRgm%$V4w!^eTuC z)X-aYfcj0e*`#zGrex6I<}t1?UW52>%EWP~pauR(4d?RD$|Jr-Pk-C8@U3n)2q8Ly zOYx17pWG5)@wPtTVY=N1C>O4gsNP+_{q)7s^tpulr-0d36qZ6yn5iFoSIb>HMnS+P z_HaEHlosy!r|5y(Kpn4v*Z#$Ps7AUsT0AIH$$Gzj>6cE)lT&r+yt9(ipq3n7QDT(hU&6XU%;-Gy6T|;| zE~UnOs#?&>5>g~jMu00?Oj%TsqTn!l;ec3)3T3KSjn@!*zbXwJbx<4!`!yq z(#XS&LN;&o(uMWvtNCb`k z%1%(E9G=gC0Y>t9N`mW6=)qqk-f!bbdX^!uAvT;Vgzzp`T{>qVX zu$kl!iU|@nQpP~fn=0uzDui`awccYTe^o6qhiF4{BQq-ZzATxom^vw5$DAk4*V67T z-czYlWW;2075Wezc^c*GE9fl5pTx;S)^*FQRX+ZeABjSUu8?qTF~SEgh!CV=LhO?9DPX`Xc&=nVN`-C6N6R%`+svTliG1qXAzC(YL)d0*X0 zA9RncD@p|H%0oQs%Rxpp9NTU`kc@9Mnn+kI&;CyM1zMl2s&Vc}x(zb$mQi-aie{;A zr}N-i$<$=X#eMOpG2aiSYX?DtqPc3285TIN1gTA_+ey}DUAl`50vzQrdY?z>GyW>l}|1Jb#h;jy>VUr!Y}0yM-uEt z0zu>)+O8wE;3yz1P4o}N#+3zx= zD^0T2dX^w`(vNM{k>&vLpurtR>z=_Yc#ns6Dv#8h){8wUKHsXfu}PXS%qeeA5-0`+dl>~40idNPh#z5=8s9(w;R z`nS`|oWY!&<^*J}c|>W?kI^uu$LcB&^~PwQG{!xQOjDwbJ@zb2>!Tpxf0INgJN7At z?9PzEL>wswa-i9`2}koedC2*8G73TJfwX1ya3I|5wsBOh*ciKx7IgwY69F<$HekAztr80_KP`J77mu=T2jE6a z&*m|peEM02L{0lioD|I`>mTm;(UzS{DWR!Lj@{?58&q5k!hqG9;rbVm9J9D50sj-; z=;5{fAnjMCv!6^A8F>||D+Ks4HlY;}^&@(3RZDqv=q(5|Hu>Ot<43bQY_`rdyAa&V z5YU00v%E%Eos+>Mz)7TRIt2Jj<-ZYxv{@P(#3tli+A;NzM9LfMUGq%OWn|bqsoDC# zn(GhK65LaH_QH*maRGHRd#v6|WE&aeY#EsKve*BdTI=^T{k=h4(s4Ieys zB^X}$Mdd=C6quzpMnXm`YOR*Ll}Z z*9^Kjr$LTzH+>_Tnx6nvw#--t3R(*mr;U6dytk3I-GIL=7ggK2g$$ahANR1xF$T>jFuT7O$*t#^pUzGDZ8oZ z>zz-uIoONr){qJhzH!Es=v@dyKMp81eXuE>{oq` z=X^&me0#qn@O)El5YPFBJ=}s2%o%xo(YSql5VR^e6yT1u=*?hBCynqZ_J`Cng1R)DV~uBnb)LVC8c(<&;)jj zWib%YjM1puGTI%H3i48?ztt2WFcgBuXb(rP4Lfg1u5HmQ0Y8v&7T#h8U-j!)mfj1~ zHXJJ&`CP$$9AgE!dgDb1gl`TXS(f=cY`r!09Fo}lFRkiB=og#B|7~mUy(P)?AD3kM z6@FVeDi8y11eYt(vqA`09{Ia;?hjU04WN+BXgXk*BM{G(iKJ? z(Ye{|SJSI1#xe0eI=D=*d~uW@fVUT*>TKyzQ=q@Dtw9+V7Y|$gx+Iz43;x)ai0qTO z>3eo5=Twhl!^YK47ku}IoXl@%^nWU+eI9k)R*ne7g1r>ZFy!lZo=S@14NhJ1JN9tR z`<^QXG!$W;sy)WY$2U$kl23{ZNsm5z_C)AlyFQ_~J(k|rxcK>W zdEfLNKh}R}@V~XM8__=Pw;Oab=ms`eANH6=5fxB`yzpBa7F@b6NK(5&AE+`zXI&9WpIE;Ar2 z?Xcy&_Q#FAo7XMT-x_IqBcy|ow1Y2coy2A0x@~(`(banwV1|!>#XU5h5kIx?s$&YO zx&v}ko|G(a69Ws14NwWV9pu%Zxw~T2xNOu_MLRB?8y<3^%T@fpeskOgm{yy!Y6mtp zl2rYjNJvmHE&Ba@wHK@2P4LS9c%^o?A!JF3n=u;J71ILd5Tv#h6ca`$ic zc_MoxAph8qg2s`*nFINE=B1hoh99UGJpb~CLoC4WVzoVwm2PZ*#~Si&W8l*4y7NqR zF26GwPu-I_JQ{sw1^)Rlv3~?84(^sw<0c3~{VxNh?}8+u2MaKMMp{az`F1Puhat+a zqU^68a{_=0H|Ka-Cf7_90l?x0wG`v8ZmKy--7JJVfiO- z@mhC_jUA~y+Xapwjw*=QS&<_)pN}mjYt~bOf}VIqtyWn}E1S+WPbPdM1BALKa92pj zp}gy@AXPewQ#F!3Fi##16(fehu z#$}Iz&2Z?hVA+QVzzib+$%-;60YETeqh^gYCu$c4p^;Ned@{1{wGEU0NR%8qD&Nap z$S9$=iS8e$f$onGss69#<^MvAXnqF3aIXg@4G%78Tl@!44=)LmlafMkgVARV<|;hr zbWa}dg}r_I@TssM0~=>AdxconFxc)vR#s5astEb`*y0Rsa4u2$HfDI3atM)nq#U(< zANNjV*9T@Dr&)*Q)mI<2;>Mz1Yj!xvzq~mtd0qDqSN_Sw8g?#J=eJ=q&cBnUSATUO zP1_lf8bsvj>G_AhJ+Xp}x_Uw-%QI$b8Bb3^4o=STnVHvd;xy_OLqAX2_RsRcoZ(Yb zUKev=nor578_?AuD{e74Ji_nZzgu~JVt(P;yAl`6TV--Ow$S=m2&!~OaBhMP>+s73 z^2#@%i<=^D)a`ix@n|r{xsm_WLDT=`tY}(;xMy<%lh4arkOg?ML(g!fb;}LnS69s) zrXfht(b2XJw(_rEKW=Dfz{ibD&dG7!E1#XAct%ewE9ag8DIF$Cz&IKtx|hIOaiv*{`BJIMQ==x?3tPLj5vVo$5iexugVkLrCRq9!H7` z05ke zkw-y~0ku?8H9+4bd7TRT6&B9B<g(ceqJ0ae?<4f0Yo*=lvvSVnibu^r*^jOI8ULJoTZ#yjQ)t#*@A^m(0M>aK%kD ze$~#vfD$nU$D8jo#Aj$ir^9bdnk(#qf>=jax!y3@i`y*C8hY#C3j!l`yrU=X%j22k znnvNMIq1>RCd@uf%Fk7wslFpKDMw)o+ShqRAwJcRA@`i-1A5Ij(galjZzoWM06(5V z-Y2Rip4M;&kll*kPZZ`BeP^6>qur040_A9`hT@rYj*-|uHLuexW+6xzbxzMZ zGA3QB(N^@nAuV>Fj$NI~PEe}CX9riZepn8z6h*fpABU{xL<~CJ3mjbT6G67h8eQy? zjaP>hXRPp6w(w%^uIV~XkQTm-?x}b$e>IK1+qQqW7&3RzfOK2p{(TfeC*8Vg$@y(P zCvh;yp?NASxJ%F`4nNBcuumjXj=FuWCb~sKZjrq(%#XAc=>G_0eTPC-PzzEMS>c&? zhYjPWG6sJq|6J~e4vQM4*_I#dh2_r+AQN>h|I3$8s%Nvj7abuvNEuhqDW*s7-v?Ke zP=zv-EiQt_he$|-u`PKQrL-d#KxKR<8uB2$Fm_WE2Ht8`TIoH{%3Oy6O#=?^YZSyffu z+M1MFopkHg6-~1n9H#Ck-k2KvYJ{%?;3yl60CQ^eN@g|_2}SQ zjCtJfK}{>w0e6k&%jOVUKTmF>cKL9n%{{46tx0619{LMs36ju3MW!c0XnqqTwTh3F z&N7!S9&Zkjx!XK?d;d{j{8b&1`-8eU5u5W%DmM90?C4X zc;n#Ec{5_pK%%m4-!Llp0m@Q0Zx9^0R)1G@!xLvi0DeWc&M^jCUAg4R^gt9ra?Fme zNhV0+dzlT0s$}|6;o7}74FzAK(zOIg2l>v`K(0e0TyngS5KdZv8fOR8+GdU`=SI50 zz2o?_cz&R1=pFd}O{(r&i>=u2oNPEWG?Q9ugPO)!wk51Jy+c98{v}%hh|_hMs|G8* zNuEWG2p>A_;emSUQQkh}SrB|2q)MD1LV>v&m_VHzRl}((gHy;*Xf}FD{+|$NYnp5D zx^H7FxW_9yN5I7Q7O-t-6n9en)Q7OCZ(u~x#EIvMn1q3im#p(Gj@&CPh5^No3@j|& zK70T-w^!s~sHTK=cDsjHL!XqN zYxM3MrPvmg3hK5Flp?+B&O~^0^CVJP5wY#Jl**0g5OQ+~0 z0<0Fc>MS3dTWMdxO$Q5|3nX;HWg?zQ!??e`%iM#60Yy# z3`f`>y!@W@_EZnjL=vW$_2`iVl?5Tfd3Qk4RM@Jo&ZVqJQX;xkGg&KSmp~qdJa>GR?RVCj2@|2{jem$ZvM2RL9N8Nto~(@s z>8=gHht}n*C!A%>Ttzuz-zk)9 znr^T@c#d=kwBAV_1bKod@tzLpN2McKxJ;$JL?vyFchqfVw&+k<>b5Gly;z1fx-2=C z_r}fTkEW^)Trn~DBbO!55#5|AAq0hp^V_iF=LiG&rkyKYW;QZ;W9f%zXj!(eAA(Bw zznM~onV6U8$8|TE%#eTZA>`i_pZbWNn$nT-1bI!VAJFNRV=63W01D-)2h~WkM#I-@ z2IJ1PmZoFEKUYuxm$6gv=h*QFkI~vTT^z;6zxkQ_PG)r?VM z6pxO5HwIBr0vehuTPH^)zWmkGy8GC|yF0GzfFqU9Uq7#<08RLNI5O(m!S6<_x0LDUs@DkxSh{{&+Aw z9p>Qz56(AdC41-WRvaG6GF`<;p-;FM<{sZGG8w%?mSm$@$@>)I1FMA`D=Ap@lR~n5 zF^nXL4S36KeWQ##7;l!gZ8E>L?&5I>jdsso$;OG6601X!gF0r&SBl%ds+xf>lKFNV zs8d%SN?7n&SJd|wCFoobhCDmvn7H`Cmp>7}^?~0M>QGY5-F;CRuP4?!pC)v5N*ExO zTR=$yC{?C3#JWu5^*1_Vv64Gy?qEsSzq8WN!&`ka3#(8Lm~y)gk#1^PoOVBTvLBt? z@f{p{vdR?@m|G&t#<>4kK$FxU0*xw^(teMN|7&ce2fvVP95=DW!g=c3==Z7!cDwn{ zbNT*0qV9_a>z2``R{mg-Mv_5Y0He666Q-FILCFH0A|eeQ%oLlQ`ky`m@L2M5rED97 zG&JS(xc0ckm*?I402eW8auHj4H#fJ#^5AA$i7q?DTsX~c5V;gE(fIXs-@rgP2-K&n zCZLUBxVpkl%`!}8u|c|cTa?@*KKNzB`_JBru*roTXK5sB zrbZopdcWMd=Mzq7mwW-kaXD~ZFfnjPBfP62bRwpAS?NDC6(J<(RliuAw!W!aHE~Z; zdy>crU-<^3=R32$xv2~8!Bh9P7=It!&dN_}bb-1!ofIJubYwH{K8of7t3Kx{?aIf~ zWmt*3b{)NymQ`6GttP*%sxgPhsG1$W446e!(W{%f{8qu?OX);Z?rHTJrBgTaKij|S*<+=%1k8uj zU~@EH%g^17KdF9{6&KyYX!*G&zh-0)FDQWbpk@Es$GzZFU2V0DQv(OISMh%$SZCe# zh8*Bj{bno6dyE7lH#hfz{-;lfGM6%X^UHl&1&8qz0%Ow?sC9FpW_-5Qy+N1s zUXJB_&O!+&zQKqL{lXgVWgGZqrstfX^4(HtPiNt0i_N>UH-9Jb#s2`<{d*C4-~iZP z8ULV?_;a=WB}sg?1KXO~fe#4R$v|QtUKft^1y4`_G!Y+j*Vf^+qPsi#4GoQ^AdWl2 zG{K|}d#=v8Q-w|aiEfqCQVY#WMa)UH#|PZU-Dz;5!v!j5#d4EoO(DCdO(r?;n){Iv zp0(XOLt#fD-J)!_9i24>J-pik@1ArgE3@>>&M^5U!DH)&IueR{&KnmboBIg{W~9-Gbt!+ z9M-gWnPi%tdY#M4%-r$Qm1%4y!uNO+VPj)yZP}40l9ZMfF4cTRj|o%^u#xikE3p$5 zWgGmR=t-Obh%u-u*2{I$CwFq|OEg8Gii!(_ctUW(d}Z~^bhRt?=I}M~F4Xx=nGb=M zv9el!*T?|ng}B_I-@9ek>tz?n7yufx?nRQS(Mo<9c9mD!jAK~qBw#oMGVXqn}za4Z$?nveno1H^6E+N&_ZwA6v4+K*W_6-QR{k2VC%ty)F zT~Om;j~|Jb8f17}_Vx3Z{2#Dho_a#hYp;`?1?>3vc$fNlb}laYjk2sF$D&AHK{S-- z=xaHn(uo>m-10W`A<=BvQ8z6SeGY(7ko6-`&wSTm1ic?uj}pqm%zB||q=(w-6R*jR zTF#3!T*{5{R&INHC%o*ZiwJcO$5fWMw>h+oqhNHy3sH!0CN1*Uo!fr4XY$34T7E;f zn&#cAT`tk~4)V>u*!;-Tizbx|%L9pvckhzZvtLQHfxdoy*a)&;#zW$=acw;?(c~K@G`SDUp}QTl(ItOM48yvA^<=CjdrZ(d@8Z3rB&ktvGW^@5fE+ zB7(__^dKiEp1a%GR(`t^+i*Dsi!a54YdyU=L*3%{*Sy&Qo3BgsTXAgy_Fq(cRa

    Cn3|v$W$8{cEwfyx@GXG1m1N#XScoH+ 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 P18k2K)fC_l%>w@q*=+}8 literal 0 HcmV?d00001 diff --git a/docs/assets/cogs/prefix-group.png b/docs/assets/cogs/prefix-group.png new file mode 100644 index 0000000000000000000000000000000000000000..f6df8169aad9912659e90b105ff1240e4c610e54 GIT binary patch literal 63971 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 aa~DdQ3hTtT1G4{MysjFU>Q`RA5%WKBK2uZx literal 0 HcmV?d00001 diff --git a/docs/assets/cogs/slash-group.png b/docs/assets/cogs/slash-group.png new file mode 100644 index 0000000000000000000000000000000000000000..7074aa9f0c98fe4d3180b648d2ca6e071ca05023 GIT binary patch literal 44004 zcmbSz1z23m)+GdY3vR&)1b24{PM~r3(70>k?hxDp3EFsYcL~AW-7N%Y9ESVm<=*>b zzM1*=_cin>`cxlwo!YhcsP|yHG_?H&4RdtG& zU(n7UWW=E=MoA7{4qz?C6vd#Rs^d@|jNx96ksM^TouQzxUH*7MuUe3MKtX{$-%EZV`T-@wr=^^@WPgQ=vkO!6KmR8Lbds*V~oV&GG|J#;oeLHQ-^Ai-l7SdT;&ZEtrzF|0F zqWo?7hV@D%`hE6_oaxdle0HTebd;aLYm$H3bfj##HE=?y_WJ|Sh5Gkdl$22xmP)!& ziE_24S$;HsHK%iOl^Zh25HspTg#R|3FWR1JBe4Qkwq;g-ebhPz(2C5#5J5E6aKLa+ zH1qq@;o*bWC3?x#1)yN&IV=@IEdiZdE$RPefF=eV;KUPLx#6h_a9HC6T-)$hC!huX zBDcB*8}>{hz({kobz5X<{!I7ae=!0a^KiQl3Ts4WQjDaNf~z)-dP4#%Ugyq68Hn(} z^=sR22*11CSDE4~04l(Nzk};lCQ7e{NxLPF4E9$ldHPA+-$};_y*g=elQxxr(Wuai zS>R~z!GFGo)s5m_@}A83@Lt2cbmjgQ8NM{l=C>R8C0&&cEbQxSOt1KHPb7hA$n}ew z6reLoso{1jjpx-czqq_G3<*Vjp-B$*`0UJ}!$WKJnQ7yh(&XZjlCB@h9lfdKpi)S~ zam$e|sQt0`>!}Hc*Qw=qPF2ko+DWXFfi^=t$bw}D(*5zbwP0V!f_=B}{V|Vmt}i6B zY7BJb3z%p|(Z~k`Q3+J9w9Ur%k^frIt!2azeq!~49F?p>LZ!*;Z59GsAtzN{SJt1B z?Zf7_0t$h$L$VS&Zg?6j+7_g;w!09EMO_i+j8K2SmKBPB-VON@?@M_`R;{(`)^sRD zH9G*I+>_K0_Zg7`&7#ls)p*GOzmYOxL&X1i2x-1iIDWB0(4&Gk^-%-o!Uk59Xo zgoN9gI+lN@mvn$f#L!G2D;xFs<_QsZ`-I?|WWD=o*spI`1goSDyeDiWA6K2MuDuOz zk;&SA4U#_YHzBUMRmv=IwGO*|9swegB8MUcAF}{B7*TQ@Zni94s_c`5E1}^hC}IaaTFKVQ%+gmy>TW z9$e4cpK8JQwP6QAsIR+G;6k&VZ(rOjOTRa+aEw4Zx!qNera zySwT{Wx2hL3>~z(5L2Lp9Z!8N3_JXe2TVlp?yKkH`atg>rq$$8k6Qnw388t7|K3KNVUzN`yP_Y1xtvZ{&BF0V<9f^j;s>JC93+T+`-K8KmYS`f7 zb7GRr6K04Ya!kNbQDKe35ogA#F?XFPyY;rrt%W6*iomA|d*c3FZn_!3?gV(CoHjb4 z^7luTgi`w4E|Yq=g4)su{7vm!35(EWgX9%v-ep9}JYBMXpW*ZW!FIh~>KsVgB8+5uv9KiSE>f;`Tx}mvi zzi?Df?2(l%qm&lg4#V`eUJN>ZjEr3duW~UN?!{VfbA!RR>!C3BNqu_yA0cyZPr*)1 zvriXd)1Ol2FYw0F)!3?3XuE9dqN;v&z5RK8E7Yt=6zRgZQzT0^*f%T(`2i;wb2$_v6f|HmlKux;zH`FIqD}o z=Y!_XR=<%iy6%T=f8wNONGC z4|gb12yQX!=Cc&K^vdND`O0`%>cu-}C!xiJzaH?d_*Gto$(kLXL)jv-r6Y~_tu~@% zQKyhMQ>_s}UZ5VqL4*VIA}kYi5;(i;qKrW`LW7FqJ&ns1yFeFF>=WqGZ28G7tXT3W zq49Ev@kH_nD(hlDd+=tB)WgmTj=g^+!nwsKRHWku7vAt1nby)LLWb;7AkqOA#I@sf zspG?OnyZ8Q)iAb&T!6&<`HsUNtsUKws-lM}HCFOrdB9=Gc`Y2s>HCx*3I5vBCVOB| zT&msR!-qR`3ll$G*O8Gl4F75533fyD%b~8F7!+;d`=7FT-Kt+n}|L*l%l1~FtsyI&6Lz}4o^>uu|Vm%t7@#-|I^!%_sw zi$s)hsobdBI1&FUS80KXyRBzmt(WNfNc$3LK{)@hNVS~0D}974f3~2En6)4r-cOQ6 z=*UgT4r7za4P1Q;qo85h@~72yx5%%pecjjBR}2RCY)Z+qSwcwO=`|t>d0&fr-nyj~ zM&L4Pym^gk{B3^h=&ICrZ!|rq_p9W+AlB>=U>KfyKq7VKYiJ2}UZF>}g>_bjCaQ!_ z#VpYM(@b|$^)eAoZ3cX@nG`STKt0jX2WoRg9dxn(Qw|}J>aU;`H`F8?fEA4 z?Dg8!3D;&bKqHWgc8KBR@S;RAXe^|RSz`Px9DVweZn7DiQco4gHSKnCO=bEG#QuiJ zzO|0vZCf0cGi_oVY2-2>cQfQ53R9BQ+CnIr#|*b@^1(|n`ZM|ICj}cr`by~OGX3Dh z$~AG{bB0epJc_gv>)<59C|U9l`znQlK3Br_mm*YoY74R7=b$3=Qe+kRS1N_tXxw-AbH8BMYFLJw*&xTS3F*W^D@KAbhpRhKNK-&}1~t~Xgehcd>UyzQTg z$IcC^_Vd6WdmOgwAPe075gY%_vn0Z*j9y$Ny9Yb`lk2JY8t^H4v`8-`prOM*7$UST zCnqzo#Ugg?d@5;OX$&!FS$FMG)kX4CcP;hPgxRGNn?OZu{n41WxKIl*PH1Js?1`Z9IBR#O^+M!PV|ZZ&ftv$yW0~9~n>v_Nkr6t>r`= zF*gx(+`7MQ&IJjhOVE@O%bg!67Hxh<`I6E0&^cSm-&^3W4s57T?#YC*cbm!pBawQ) zsoPUAi{VvedOL2u`QnFd@#>a!ls8$Q;NzxFQF4x5-e8I%;vypSdVZr@;0XLi)%t#u zDOyLSjw?^v(ZSkox`nEq0|yf_6LG>%K;ig&;#~f=M1~pr&8dtM4%Yv+i81l0h*{aZ z?XFlSMU9VFzits>eQbs8{Q9}%QzYVa+CR722y9|w|Agq;n|j~6)v5cx!&X#M>aYDc z#p#=IMym z8#=)w_c3W*P&saVVcGcZ2(vCtb7;C(oq6yA-&SNdsd&TdB{qbwSWpBH1gIk-{zFF>}l_8yvmg{ zMbM3=`zcf-PSdfX(au-Kg?G=ov8`zw1r&tti>=ar=}T~foh&bpxn}u_9R*(WB35RT z?@K(OLr*{CC5MX%ui0k#RF=@h-3EBe#}7T7#bKa0o6X&}Vh0Rrq#$mxmzZ zYL3hAavWY;hFYdm2alVato6-}sT5e6kdYYqwU=5Qph+PtOeUZ5E^O^g1_Tn0OsVYO zTyQ@A#)-7ESG-*UJmF3jj2RaYYGrttoApBBY>5*9OSZfmC;+6Fg` zUnzaiaF*|Mt^jLY4`y3~l+U;S1SXrUEFgX*Nx~@eg#!>v&S`}&Ccpg|O&0gCMMqKT z$4`_B@{c(KA>O8%S7=8@UQ&(kG)|4*7Gue}rkJewkxA+UP|S-62i|~HNJO4pr-v;E zxIjVQ%YEbBrr+C$)HQ?t$ZkZ7&}{! z)6w8wZ!q{h#jr?qKD5;!R=dtT$>G+4nj}oVQ-Xby8DJO@Fx&)hHB-aaIuYz!=L;V( z%xvab1ik}HSzY#3Y~HO#7s#jN>$kWO`1V@C_85OkPR{%K74`yj1N|i|rn4U|YRSc* zzcB5S-gx072)(-A0+0zYHTyRctg2Rvyehw+wJ9?wf(U$N)bWPARd?K}fny+(vmR!Q zk55DN;|=E+6+{_MVF~Kl5Eb`%g`Je7qOKks9gV7P|5nQPGAO=yWcifyeD2+|g5RzJ zOo0EpnBVnzzQjmeg;n{vHcnVzQa*zY20)B}fX(fl9GIcXW=GEDEGN!^KDz(AH7pQ_ zRTg&#;yuBN;~{2lsB7&S(`HqH>#)yUq57*Jc98;po#YaSm`j0c)uh1o__*aG%G1m3 zIratuyzw$uf5R zD_Z)#USU>A96V(#ZFx?KvTC(a4S5Z&7;(n<*F5KhgknW9lWE^OJuk?&14Jha`28Y>p(~j8B>?O{OzI?)e1E19HBcf66kM(x2?kG-Ee)6@);%}k zW5@>9@ufTH3qE4g>i$N_KqmZj?sW}1_0<+_k$15Qb2(<;A=O5_{wHWV^B>eA%h7P@ zQ8+)3BHgsv1!HfiloQfl%$dlqaNCqHsSX+Spf1UfQ@b7|{Ooq2{?6^ntd|+^GmXtk zkY-?Y1OE*pu2^bY8=Vfn-GmRdVD)oiSz?))5W#zm_Xe5anNG3#Vo+KczNDtZ4z&>r&j6jJcFayPSrHzUxme(VRBVo20 zD%%?(;o9e>{>fH6UjRD8?ah>{|3ZsEpd+rsSY@>0YdbK^or~0)cKB1=tJyS0vb?0w zFXxTIKjV%=9maU~`<6cQ=uF8q_}q*Uz^`Emt&5aV#cN><^ut>@3F)VQ5@doI)utIg zSuxLVXm@84JS5^nTy}vKx8RC4mHFamg8>_AF3!jjv|7#cV2LihwXtI4g4|u*s*|lY zA%sZIh5D3q-^EiSAP)24Ga#i$^&?IAjBDJlPC~md(F#`|tQD!@ zkaiFb$rUrf7x-?!?@*kvhXLzVZme72jpa8_6;5uBdJW>!IZG?TVa;%F7?t(z9j-DS z!dyesw}MPvvmc4Dv9f$#2Y%cH-9_Ceot-(HuO93;;2}(JjJO`UXSdBL)FW7CABvXp zR`Ng>r{Q(OdzY>|@W7kB0$YYu<51tVbFcS&k<(v&PHu9}d`jcqo$GLfYgr2#bHs6&II|!4d{=n8Jk`sV#BVIc zczr_ZjB(n2`fmG^V$Wn^@pE{B8*{~d4;rtk581cfGErGHw_eo-kz@W(iqvMm($?6O(IF39f^cBo#T%T{7AWBXm?2R%}VEjW%gzRWo<+$)bQQx@JiSwuO zFqze($_bpr?qWqOkhvV^VGmWZ*qCe6 zFy$<&5p*A5CHQuDwF{d>CEUn?YttYj;)V+vHVi}D0YlS%-#ZdU-vvh=KT?@#A;J;o zID%B+b;o*-p}BVjw0$Msv&yFHWfX%_`I_}u$9TB6Fwz&Xhl2XErlKQ;vd%CJgII5S zoRf$%Rlu!KPV!RzvQi(ew2c86OPaZBY{1M+;crDB# zSAg%4krCV^0iG~kaT)$;8QWhyJdTLhk2s-193fh>s{2XUl88gHQBU5q|6JSdCNk($ z+?9$;C4pbxTteZ8mWJtjZf#-yqV60=ohb9RDj7mh8Y0F3+VTE)v+VeO&~6QhV(U%i z%wn{G8Ui(~j=kd^Gor=K#_cvjBR8k$(g)-@VAT4=1ttjtM>)TEPYb118}{mTeWdB* zcq((ybn@~;QRV*rEhEj_-*4UG#hhV(;gYg%n)2}cIYr!69N_0 z`=Nk__0uI5@ogKq(~rDokfQRfZN9i87I^czlQqZEo0fw+M$gf=^tBMXe2jq-e2o6t zhUbVGRjIz!gzNRydpl8#>TK_BG=iC*=^~o81R#h9`kH9Z0_uGG9>|dUvc7N$^KH1FCaT zWFRxp6KX;{LzlDZBp7Dst`B}7Js`J^-j@7ap|p~|z>G$r-i38_HB=u-2cO-RfNt(5L2PYVCZO-YJ?`9_(Std2)& z5%FfTH!o+OK>;RXZ8dsfH6~gRc8n~fA2<+o5gV%9N|VB!~2Vk84^1T+@9oL<@8tjtQ7siMJ7MUK^F$mrqYda%jZhWTHKl`}zH)Wmuf-)?de~fmno{N2 zUSCS|c*0;Ir*vLzpi;N960b^pbPcnhjdpkgcnCr~WKO16ydvH-42cc=k}o2LCM4a+ zDpyZo;#WOZTLMyOuq>FigFGP8d3{Zr|CvnAGFnS_y=Zm$)~fTc((<$1vVqlz2%ED$ zSuf-%t|-)QqCzDOu<6>k0V|N8n|Cn!zC67B;6S;&t@ zB!blt6v$HkolIz>X!}cP_GySdjD37lLpIT4fIo|B>GW(LPdRSHqP4-@|_%>eW z&{Zv-o?-ctpfkeajU}GBakXc@J@uV`AO21(JB1*ww5IOoh<5O%Qrm>UHT`9TVSp4^ z!$>zIZS2_m?EOEp<=X3vJ>@U=8dBiJ=+TZ-atf+o9X~V%Vn%f!;w+Vleq<@yg=&i< zn>9C+2HRvQ&pRpJ*DCU;wLjE>wJEcF(6P-BdmGu#l*x_w#__)f zOn|n8*4YLgOYUNNEzGh<(>M_eP4j}!D4&=gP<8QrA`)*oRER#JvTmXe_z-irpg^XKdTT@M$}pp6b3N&^IPGe`jKZA>eec6h0)EETkllT? zO?a>BxLkd(sq-E&o1NroeoyR#&yOt&9EgZcKwFW-FiMPJIxos;;KTb0&RZpl7&}+d zi7XIqv(9zs1CrT|gs2a9x06EKsyJ-Mp1m%A1)=Y$PNPuv`aM9CK>L^P0n)Q7slO}Z z21A|uqON80xWw|(Zu*tt`wtU^->)RTkrJ#8ES{`q2AG34Crp1>eT|G8Sa_t2KCH(* z(u4*K&*qmd@ha?-v8>h#q7q}?>iDv6w))#2nS7cq`s`P!=dG6!CN;dtW}^EB#VzxW}hm!fU_VT_5H0>@!sK=3v2Y3(G;qXa^*tF9xDD)=-SnZ~7at$-{Y zdl*v6avH_o;KQngDFh#jcX7*(AJ@NVU9BH;8x<9w&X|f;l|!PTNgm8&&Qs9%yE1K= z5cFGYl{&uBc#1s+UIh4Jf{DN?q}(bFmkR`56KCVjo8|OrE*!{89dK>5E1`iAJP}VZ zrB@j)q+W`x26d}Al~7rZ<7Gw0b)B8J0|Ofs@*h}tCSMEk6)?8@`eNU`rv99tr>>`? z=YxM;r^!~$ct{r~k!@p%E>$J8esc%xZ39|D&wxO@hPbAgTbR7&(ew6i0xLfBD(fSL zDWAaEXhk$$YeF= zM5%KiAe<2pEXBo&EE7J*3Xj&4w0>j9yv%q)?MOTd9??cu1_-{Qi`=4f!OjgO$gG2P zq_N}D@bkh*li%x6`$(E!>$I#iS27Pf21eP4J_`uF*uI~H-rWsRJd;Pc#`$u4E6LfN zz@tCu_+B|(oxAGr%lzSV!(Pb5n_ZOHk2+^AhAMOR8|`l7L0S*9j9S@V@OEC?XN~uh z2J~K6NIpz!bBfQs#D>$KuXp^q+AvlkglB+x8rG~)toIjvKgq7+2|D253V`KdiVJ)C zB7Sg(4ES63gV(oTDm1T7INvFe#Oadz65(IJ8}RZZ^#)yayUHf-J@m}%Ga=;1Mnz!R zo;1APk*I3^WV-O~9D$sx{R!+@eCP}--R~-HEyq=Ac2Grd?dwZ^+IA&f7h86$3783Y z-WDrJ`x0yUZ`jvz5`9la#udu=-5zQ+57W%ke%bsgN-zw438O@%;~s_WdIBQP8gGP%Q|#yU4=NtF z_H5Quxj*NW-3)U7#ECLo-p2|u6`B)UmxbWFKjnB(pESprWOu+LX_F>!+-SkByhQ}^ zqt0ySL-D()aeGn`ajN04k<6eb>#R5`)lsNbX-op#R*dOLjCqX0=|^#AiN=fcDMyKT zpaMiCrmCYmZnSETn=An32(hgdtsvb~=Z^kvUB|O87#od^XXm3u)yetM|84>UvOM{o zBJ5Rbj5-a|Hq!Tw_;2igP9REvaCJ2*qz8#K&_ch6*&K=TiovEMCN-GR8A&;((Yh#} zqQH{ED^Ot}buqm2x(2m+wh)_QoW1Gq<*W7Q&4ei|-0F!ta=asTPRL%?CTVdNP6ws` z9f&fu&t<6hX7ADg@XOO^AN?B+H5;i>?l)?rMk`2F>U+;TLB!oNucsLZvRnxWMsG8= zR_e5o^ZNc>qdK**nH(LraU9?)D(DCQ}l46)So41hzs8exxs9 z>I)wxe>Ex4{jzza7@^UG=%1JFKupmX#8u2<7#2d_7Fm@O9#EtQB~%9!$cjl`+TGe< zDE>L0z*m|yu9aDcZEp*owMLh8)z^o9xzJ}Y-Uq&!_K6N`x>9U2D7K3AEEdUwVPKin zO!gb5!J5di0!o3Y=-AE-l0U0oVBiibteaj;WsEKj7mB%d8iY<>S`eM=ZDlLFt-Bv4tDXLxkdHGGw;|hTp z-As5(igHZqObzonw%Ozin&EuNfPofrB^8p=E!3Mo9g;8f=}_@ogO0`y_=9RgV%dkO zU(nVZlV95oGHFTB5fpk}XR=c)O5!`ekD1YeOyIl(6Y_Yh)nNYvtSxwH7o?5+Jg!D7 zmA6X!sS=SYPauCo$HG}9Ug zR`Woi^>Iu!&8J`V(`!u=qg3jLwNE_`-Nr)%fHZ$L3H~qD?PNnk{A8`(sL~i0-L@&+ z6iNj{T!vida@%U(rki%a?w$CueWon$g64+)1`ppky6H|F#+6vb)LKwVjF|S??UFX@ z@!%F$rXCgcBNH22g_7&0`b8Fz38VHjH;yxYLAHNzeDicsv}%>R042c^WUNlrrynV@ zwn+Ny?Zhj6T^dBE{;EjFtJCXea{jLdrzMJfgr#B5nVB7!2A!skl@*aa-3Y8Kdp>E0 z_8o$*+Z0pSJ>A&GYESo!yOMISSQrU; zD8}gP`}A=%I!+lb&JhfKa9|H=Hz9fyAJ#?~3YtS0T4RvizHuCH9B&g|{bp=o52w(L zu^kqwM3B5Y&x$6sG$;9<&%4nE5-Q#`r|5N`VYa{vrUAtNVME5XE)@i*D+TP0+i%IX zQ?E>inL_P~hbb)Mb?q!^F%AuYZ9qZV_&nbPZCqDhIzNyXrLV{8ie=8AMOGMLJ3`T) zT`GpZm#}2wH$|bejTk{7E{f85Cfmf_v<@~-`)ai`coZFk zz+85-ZEjUCyw3h8$_o{Shs|WO5@+?Yr^2igtfMEYQBCxo^@sYz2ctJ|#uKPaiZSW3 z4H@YnD)cy4F(1?J-gDWt0^waW1DheBgi~pgE3bEYwDm{3`NhjbzriKS{M^jlrl}O? z5}oI)F1C_6>)fkPWxj81i0CWVBIA1kelQ2cXXHdU@S<`YOIUB|`P_f!ZOq?`LnN>!gwk)ouIf^e&C+Zq03S5N0B3Exnt!owW=F_6S(ZLtN15h! z12tikm7DPl7bJcskdl`dQ#1upH%u4N?DkF0%PMUKlGWxkI+?VkzRA`mh8%s$zMt`8 zD9BOOm~o(Bd!SJdlKlzUCk~7KOZf7J_yk0Vxb<%?TRsptl(Z!6G$^UbsNjz{Y$fdR zY=(L2V(uxZT%fN&S298~uh3wuVT|^)*{}HLO)z4skM(_F-^lPF8Ew8`P~a~k#Wpjx z>+|xtNzFX}5nYH7P(bQR4)VKl+)rWV->kzQ0g?JO-6NG%75?523E#(jxpwf&zKli0 zEbaZ5{5meKC+o|7?EYxYf$p7obnS`K;ZG%XR^WMd%*3P0?@T=^O-4oYRG$T)WdxZs zYhIBnF-pkkg)Tn(FO=lhkt4G;C z`!ESFQ!{F5Zh&Pf`<8%<#>Y*2CHk~_g2*3-SNlG7v?6G8=yj|kEnn@~WAPrFWn~w; z{btru=1aurnP8|EVMUsmUl(`?7qZMs{Ld(CB$za`tE{O27M zhNu0S!8v|{Z8F~}34v?kaCSwju^wAKk};1@f851Uz{wYo?1R?r0xLOfe27j!N%YGN z4a22J^bJ8=9Z>G%2isq(I|#ExFD5p@tysO*OaI&fex>m)_ExL0FNT#pkMLK3R)%$R zUQfUq5)0YdDyy2)8Ms_3LO&l6*KS3HDnc>j#aYU@+4t-=v@bA6b7cWV>zyak)+*DpTG_JGL!8Sj14dTv|3O6deH8)xo zaOuIaf#jqU1mC3*`F@5>sUFGqmd3=~4CwX|c<ZY>cXD7pv%@`8k|*n(!csRSZOpy|YxJsrnev?*X&%qEy!TaZvhnf*8f61veocg9 zKjJY4YN(^zF)&s?{+(iO#XF2~I8B&vGYTYp->yc2RBjOXb2#s{V z@<_Sb?;saEi0Gw+G@=+)com@rlGYSw9R(R1Gnc>MET33REcLH@&B&|tR53iZF;^@wPzSj+E(?Q~YBVViub5d*9}4OkO$B4=*4W_RMRmGIJ_ zo#dFrLJnJxhzsKwjS-fB@7{1R+A6JsVAayKo}Xw9HOK9vV+1}Sx5)es=(fqb2_gQ9 zw^O@p)-kiPlu=0KLg$@^WMXGxzF3Ixn24}d);n^rL1H%ZRnSsWQnCuNl1@(S@Nr}j zIHN*6!jTZzq_TVTHTi$KI-eZu`Bdv!yRWeeh?HE+MzYKb%;?uq*8mvz+{IYURgl)( zE`{O_Yp$mk<@QaNs3jyPzf`H(+I$2r(vJRYuY6yZqwa;FpQLl-U4eq$X4iqYd_P|< zo0kMKsH{B3XxK-k8C&hmG^Js-MHqtdj3Ggu6M5|8?LjWv zE}eCek$Jq@z9S4|2z}b6Xgm@AJu;*=BNs(XdurMf&0+AUWWiIT{G?q*i2D5QeF>(q zk_`{BvhvCUlLf;Ly=iO&oK|l%Dz$^=p6>bam<*yny&%AX)+99owco}jU!6n3F3PTC zV}4L~(g+hR<_-5AjbHZ{vF$lF+dJJ`=SEY7 zimYg8ntGmaDJ(jHMSjozzJ*$OkORc4!GQa)E5s`sgqv3mEKIBC+JpxYh?hrD9IG%Z zdttyKi~XHC>jNk%0YaT}4Cxm2H#Xr-CcJXsau`znK)5DE_a7?yzRqyVj17?}M2M(| zs3YXT>FXg0=}>bIii!holN^_lNY7WVItJus$b*KI4bTML(G9d-H6q*h*=oj!4S2B4 zs03H$w2?k%8)7sftfvv%b-jg|TE|x7LMhsu5P3w{IV2I?OR-G5gG#8uHi#x3*?@pEfjn- zXc?gOc8%waBbIsHl(@YSQBzZx9IwN-S3kj9aUxib1}qjMcVvVM=`Rd?nFR=Pa`4Gg z1Gz?}K}hQ|#QJ@}AIgi34B}%BDaSu_7tp9Mr*Onrhgl^V-lP2cSD?<4o)_5#N%ECL z#ZqCZ{)h)pmedl~aYoDw6Elmkp}VQ+Ri51f;?CF3i$@)+F3doo3#0Hy{U~lRl#myi zH(WDs9B@V>*$T~)wj{X1G*jU^LL|iDGPkD!yBx*=l3Vy@t7qxF;Q)7#fCtXfJv(&3 z@P;U4t|L-@vZMD)oNySW@PpzQ2e4wsTXGa&m(ym zO3-Moj$*A`^HS6{SxETsVR*Trl9bbvD7D*3(QbD;{HL*70%N}yp+#9Qm9Q{YX8UXX zy^z67C+-hCKK@*l9U%^T!{fKhJptO+MvwncS-_!^K->82u*|o!As|`mh34o-RvqW* zt^+mDz}V&4hbj+?rL%=px2-^xaXY4z2eGVy z_M#tmby^pjTg4?x>O8-wpwWyg=CfFAx#cIN+fdOjafIX z!hM~&6eA$HR3XjUNo&riISbK}rl%=SkH&_}4{_ABfc3+co1oxu zbsJu6A_D-4IMZw;TaNQaZ}6BOmQ*bu@xUES&FDZBdIj!jU=a$-ho7*05n!}8y$CSM z52v=zB@$W=)mnLdu>y-_M%*zrMm#sKPD8OSd$JQFB0~&IKqHGG^pCqtFXUYDgXo4# z8f{%x7Xl|7ZsQBEGSxm~K=m(>je$m3G^nUEpj!4MHLBm7-01#$h`&A2q2VLm&Wrkj zZ(6v$NpUUT>`4!}=BM1l?IM0Ru6It@8e*$#7*bj=t2fdxJP{v{dEo$#v?mu;JYURC zEEAY!mKiFVGP=Q|{Mpr^(kg_NE){AUO2QHo){PFe1 z;}1>7E5yBml3=h7y3t20g$A4$nJcL+wnxn4MBGQddIfxeLF~W6=(V15g&Crfy zX-fC&k%-S)z!K`S zF_5DqYOw!@A_H}axMlo)@mZostwQ=)z(CUHp3H%!;7iYWQi9*<>#vtY7H4%R2KXd( z$!s$v0h7p`O#OXA0?VSlAJt9RYmwS@&hflXo|pk|#_3mQfAsXZF_VO?gfY9f1_fX| zU`VhKAqwcX2Vt#x@&(TNMi>cU=Gw7@#QO;>uCe37oZ|1b`@Lf?pCBbMJ(Id7!_|6j zD5Qb;U2|C3OYSM@TI00{awb+U>F=I)CJw_%CYF8cc!Dj^<)$DJZdB&F+h4h^{{K{P z;Qdx`DCFPCT-9Rd4_pQ%U{{vvnb(28a=~vH)FL_NG6w+r@Lm)gMqb;<#Vtl@^Z zOSr>_3>_Y>?(8IV*xts*JqOV&9vO|8#jNagMQr=LvD32;{L7A_rne2E&r9RpA6Q^5 zAMxeMa-y4_wZd2Cj!wU8HDddRMkZE#m zK85*g_NTXVfiJ1l;nIuLW4G=tj5mEeutpA?IwJFCyfAtW)L=1$ystWp|0&g0Mo;|J zD(J}8hGnfH1(~()J~JyT`r}lg@p@-h8oT++RxL?H)0z*Ee5O}6A}C>ffsgQR1exul z)=Y&Gn1SnEZYwodo#vLy&-=iC)+zw=vW6(Qd9PccHU$MS^28|D&7_9u{S`lK_ANb0 z25tS63h%7~s$89ge**8b@^dfl7JO%j-1Kl99i}AOYM15(w&V7drVhrClY4K~klz3m zPi|psX*xGP4cx#cwyWN&Lwz2M6<0f7)14D zeTf4VqVx6um8{G_q1SX<@3Eb$n5i@}jiG@^2^mh<>I%d&&2oZqo4?K2tdkjWj! zK9l-^h%Wp0uDtTKXE2kh1aK+u++Nw4ia=Lj0ZSU=U@wjDpcMFR3O`+|2u(=}A z2R8IkEA0eTuSmbsFz%6O0+Fe&3_~PvF&li%J_%!BaH_~a8|gGclAh|R{$=S zDS49wo&W6$Pa2Fn4kxwC-gilj6X${!-@Uju(kqqpLps?6cE3DlD+fN%0v{UaWPa z$oPI1OO}t8TsY9m>bk&fy6L1@cH7r zC~r!YD*lk6EA&|~y!ku7YrR#D@m^PpIo2x}+Pr~ts`zxhfX(Y1iM~6gPP}u2Yr+6# zncV2sJicOG9dt`N1Z$CdsHffQ=~prx9Pu~?A(NM;<44K zvEr%Kboo8SAVd}&Xg?5b;Dw=#Z{N@$KMncN+uK2bUBOzl6U6C~Bb`^El&0V7(n$&D zSnPL+WD(m629<(*?l�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 literal 0 HcmV?d00001 diff --git a/docs/cogs.md b/docs/cogs.md index 2aaedc0..05e35d5 100644 --- a/docs/cogs.md +++ b/docs/cogs.md @@ -1,13 +1,39 @@ ## What are cogs? -Cogs are a way to organize your bot's code into modules. They are a way to keep your code clean and organized, and to prevent your main file from getting too big and messy. +Cogs allow you to structure your bot's code into modules. They keep your code tidy and orderly while also preventing your bot code from becoming a monolithic monstrosity. Cogs are a technique to organize related commands, events, and tasks together, with the goal of making bot programming easier by using a few special methods. ## Difference between Cogs and Extensions -Cog is a class that inherits from `commands.Cog` while extension is a Python module (file) that most of the time contains a Cog and is used to load them into your bot. +| Cogs | Extensions | +|----------------------------------------------|-------------------------------------------------------------------------------------------------------------------| +| A class that inherits from `commands.Cog` | A Python module (file) that contains a Cog or a bunch of standalone callbacks (commands, events, listeners, etc.) | +| Used to organize commands, events, and tasks | Used to load cogs, commands, events, listeners, etc. into the bot, using the `setup` function as an entry point | + +## Extensions + +An extension is a Python module that contains a Cog or a bunch of standalone callbacks (commands, events, listeners, etc.). To load an extension, you need to define a `setup` function in the extension that takes the bot as an argument using which you can add commands, cogs, and tasks to the bot. ### Loading extensions +To load an extension, you need to define a `setup` function in the extension that takes the bot as an argument. This function is called by the bot when you load the extension. + +```py +from discord.ext import commands + +@commands.command() +async def super_command(ctx: commands.Context): + ... + +class SuperCog(commands.Cog): + ... + +async def setup(bot): + bot.add_command(super_command) + await bot.add_cog(SuperCog(bot)) +``` + +This setup function is the entry point for the extension. It is called by the bot when you load the extension. + To load an extension, you use `bot.load_extension()` method. ```python @@ -15,7 +41,26 @@ await bot.load_extension("cogs.super_cog") ``` !!! note "Note" - The extension path is made almost the same like importing a module. If we had our extension under `cogs/super_cog.py` we would use `cogs.super_cog` as the extension path. + The extension path is similar to pythons import mechanism. The path is relative to the file where you are calling `load_extension` and folder names are separated by dots. The file extension is not required. + So given the following folder structure: + ``` + . + ├── bot.py + └── cogs + └── super_cog.py + ``` + The path to `super_cog.py` would be `cogs.super_cog`. + + Lets take another more complex example: + ``` + . + ├── bot.py + └── cogs + ├── super_cog.py + └── subfolder + └── sub_cog.py + ``` + The path to `sub_cog.py` would be `cogs.subfolder.sub_cog`. ### Unloading extensions @@ -25,40 +70,86 @@ To unload an extension, you use `bot.unload_extension()` method. await bot.unload_extension("cogs.super_cog") ``` -## Register command - -To register a command we use `@commands.command()` decorator. - -```python -class SuperCog(commands.Cog): - @commands.command() - async def super_command(self, ctx: commands.Context): - ... -``` - -## Register event +!!! note "Note" + Sometime you may need to perform some cleanup or be notified when an extension is unloaded. You can use the `teardown` function for this purpose. + It is similar to the `setup` function but is called when the extension is being unloaded. -To register an event we use `@commands.Cog.listener()` decorator. + ```python + async def teardown(bot): + print("Extension unloaded!") + ``` + Any exception raised in the `teardown` function will be ignored and the bot will continue to unload the extension. -```python -class SuperCog(commands.Cog): - @commands.Cog.listener() - async def on_message(self, message: discord.Message): - ... -``` +### Reloading extensions -## Register task - -To register a task we use `@tasks.loop()` decorator. +You might make some changes to an extension like adding a new command or fixing a bug. In such cases, you can avoid restarting the whole bot by just reloading that particular extension. +This can be done using `bot.reload_extension()` method. ```python -class SuperCog(commands.Cog): - @tasks.loop(...) - async def super_task(self): - ... +await bot.reload_extension("cogs.super_cog") ``` - -## Example Extension +If reloading fails due to an exception, the bot will continue to run with the old version of the extension. + +???+ example "Hot reloading" + Here is a small example of how you can use hot reloading to reload an extension when a file is modified and saved. This can be useful during development. + + ```python + import os + import time + import pathlib + import asyncio + + import discord + from discord.ext import commands + + + class MyBot(commands.Bot): + _watcher: asyncio.Task + + def __init__(self, ext_dir: str, *args, **kwargs): + super().__init__(*args, **kwargs) + self.ext_dir = pathlib.Path(ext_dir) + + async def _load_extensions(self): + print("Loading extensions...") + for file in self.ext_dir.rglob("*.py"): + if file.stem.startswith("_"): + continue + try: + await self.load_extension(".".join(file.with_suffix("").parts)) + print(f"Loaded {file}") + except commands.ExtensionError as e: + print(f"Failed to load {file}: {e}") + + async def setup_hook(self): + await self._load_extensions() + self._watcher = self.loop.create_task(self._cog_watcher()) + + async def _cog_watcher(self): + print("Watching for changes...") + last = time.time() + while True: + extensions: set[str] = set() + for name, module in self.extensions.items(): + if module.__file__ and os.stat(module.__file__).st_mtime > last: + extensions.add(name) + for ext in extensions: + try: + await self.reload_extension(ext) + print(f"Reloaded {ext}") + except commands.ExtensionError as e: + print(f"Failed to reload {ext}: {e}") + last = time.time() + await asyncio.sleep(1) + + + bot = MyBot("cogs", command_prefix="!", intents=discord.Intents.default()) + bot.run("TOKEN") + ``` + +### Example Extension + +Here is an example of a simple extension. ```python title="cogs/super_cog.py" from discord.ext import commands @@ -81,97 +172,270 @@ class SuperCog(commands.Cog): async def setup(bot): await bot.add_cog(SuperCog(bot)) + +async def teardown(bot): + print("Extension unloaded!") ``` Lets break this down. -### `setup` function +#### `setup` function This function is used to load the extension into your bot. It is called by the bot when you load the extension. !!! note "Note" - This function is required for the extension to work. - -### `bot.add_cog` method + This function is required for the extension to work properly. -This method is used to add the Cog to the bot. - -### `SuperCog` class +#### `teardown` function -This is the `Cog` class. It inherits from `commands.Cog` and has a constructor that takes `bot` as an argument. This allows you to access the bot instance within the Cog. +This function is called when the extension is being unloaded. It is used to cleanup. -## How to load extensions from a folder +#### `bot.add_cog` method -Lets say you have a folder called `cogs` and you want to load all extensions from it. -We can use `os` module to get all files from the folder and then load them. +This method is used to add the Cog to the bot. -```python -@bot.event -async def setup_hook(): - for file in os.listdir("cogs"): - if file.endswith(".py"): - await bot.load_extension(f"cogs.{file[:-3]}") -``` +#### `SuperCog` class -!!! note "Note" - `file[:-3]` is used to remove `.py` from the file name. +This is the `Cog` class. It inherits from `commands.Cog` and has a constructor that takes `bot` as an argument. This allows you to access the bot instance within the Cog. -## Managing extensions using commands +#### How to load extensions from a folder -### Load extension +Lets say you have a folder called `cogs` and you want to load all extensions from it. We can use `os` module to get all files from the folder and then load them. -```python -@bot.command() -async def load(ctx: commands.Context, extension: str): - await bot.load_extension(f"cogs.{extension}") - await ctx.send(f"Loaded {extension}!") -``` +=== "Using os.listdir" + ```python + import os -### Reload extension + @bot.event + async def setup_hook(): + for file in os.listdir("cogs"): + if file.endswith(".py") and not file.startswith("_"): + await bot.load_extension(f"cogs.{file[:-3]}") + ``` +=== "Using pathlib" + ```python + import pathlib -```python -@bot.command() -async def reload(ctx: commands.Context, extension: str): - await bot.reload_extension(f"cogs.{extension}") - await ctx.send(f"Reloaded {extension}!") -``` + @bot.event + async def setup_hook(): + for file in pathlib.Path("cogs").rglob("*.py"): + if file.stem.startswith("_"): + continue + await bot.load_extension(".".join(file.with_suffix("").parts)) + ``` -### Unload extension +!!! note "Note" + We check if the file ends with `.py` and does not start with `_` to avoid loading files that are not extensions and files that are private. + Prefer using `pathlib` over `os` as it resolves the path more accurately over different platforms and has a more modern and pythonic approach. + +### Managing extensions using commands + +#### Load extension + +Loading an extension on demand can be useful when you want to add new features to your bot without restarting it or on certain events. + +=== "Prefix command" + ```python + @bot.command() + async def load(ctx: commands.Context, extension: str): + await bot.load_extension(f"cogs.{extension}") + await ctx.send(f"Loaded {extension}!") + ``` +=== "Slash command" + ```python + extensions: list[pathlib.Path] = [file for file in pathlib.Path("cogs").rglob("*.py") if not file.stem.startswith("_")] + + @bot.tree.command() + async def load(inter: discord.Interaction, extension: str): + await inter.bot.load_extension(f"cogs.{extension}") + await inter.response.send_message(f"Loaded {extension}!") + + @load.autocomplete("extension") + async def extension_autocomplete(inter: discord.Interaction, current: str) -> list[app_commands.Choice[str]]: + options: list[app_commands.Choice[str]] = [] + for ext in extensions: + if ext.stem.startswith(current): + options.append(app_commands.Choice(name=ext.stem, value=ext.stem) + return options[:25] + ``` + +#### Reload extension + +Reloading extensions can be useful when you are developing your bot and want to test changes on the fly. + +=== "Prefix command" + ```python + @bot.command() + async def reload(ctx: commands.Context, extension: str): + await bot.reload_extension(f"cogs.{extension}") + await ctx.send(f"Reloaded {extension}!") + ``` +=== "Slash command" + ```python + @bot.tree.command() + async def reload(inter: discord.Interaction, extension: str): + await inter.bot.reload_extension(f"cogs.{extension}") + await inter.response.send_message(f"Reloaded {extension}!") + + @reload.autocomplete("extension") + async def extension_autocomplete(inter: discord.Interaction, current: str) -> list[app_commands.Choice[str]]: + extensions = list(inter.bot.extensions.keys()) + options: list[app_commands.Choice[str]] = [] + for ext in extensions: + if ext.startswith(current): + options.append(app_commands.Choice(name=ext, value=ext) + return options[:25] + ``` + +#### Unload extension + +Unloading extension allows you to remove features from your bot on demand or when the feature is broken/obsolete. + +=== "Prefix command" + ```python + @bot.command() + async def unload(ctx: commands.Context, extension: str): + await bot.unload_extension(f"cogs.{extension}") + await ctx.send(f"Unloaded {extension}!") + ``` +=== "Slash command" + ```python + @bot.tree.command() + async def unload(inter: discord.Interaction, extension: str): + await inter.bot.unload_extension(f"cogs.{extension}") + await inter.response.send_message(f"Unloaded {extension}!") + + @unload.autocomplete("extension") + async def extension_autocomplete(inter: discord.Interaction, current: str) -> list[app_commands.Choice[str]]: + extensions = list(inter.bot.extensions.keys()) + options: list[app_commands.Choice[str]] = [] + for ext in extensions: + if ext.startswith(current): + options.append(app_commands.Choice(name=ext, value=ext) + return options[:25] + ``` + +## Cogs + +Cogs are a way to organize your bot's commands, events, and tasks into modules. They allow you to group related commands together and keep your code tidy and orderly and modular. + +### Register command + +We can register a command by defining a method inside the Cog and using the command types respective decorator. + +=== "Prefix command" + ```python + class SuperCog(commands.Cog): + @commands.command() + async def super_command(self, ctx: commands.Context): + ... + ``` +=== "Slash command" + ```python + class SuperCog(commands.Cog): + @app_commands.command() + async def super_command(self, inter: discord.Interaction): + ... + ``` +=== "Hybrid command" + ```python + class SuperCog(commands.Cog): + @commands.hybrid_command() + async def super_command(self, ctx: commands.Context): + ... + ``` + +### Register event + +To register an event we use `@commands.Cog.listener()` decorator. You can define any number of listeners as required. For a comprehensive list of events refer to the [this](https://discordpy.readthedocs.io/en/stable/api.html#event-reference). ```python -@bot.command() -async def unload(ctx: commands.Context, extension: str): - await bot.unload_extension(f"cogs.{extension}") - await ctx.send(f"Unloaded {extension}!") +class SuperCog(commands.Cog): + @commands.Cog.listener() + async def on_message(self, message: discord.Message): + ... ``` -## Cog Groups +### Register task -`GroupCog` is a `Cog` subclass hence all `Cog` methods are supported. Every command in the Cog will be registered as a subcommand of the group. You can set name of the group using `group_name` metadata option. +To register a task we use `@tasks.loop()` decorator. Refer to the [tasks documentation](./tasks.md) for more information. ```python -class SuperCog(commands.GroupCog, group_name="utility"): - @commands.command() - async def ping(self, ctx: commands.Context): +class SuperCog(commands.Cog): + @tasks.loop(...) + async def super_task(self): ... ``` -!!! warning "Warning" - Group Cogs only work with slash commands and hybrid commands. If you define a prefixed command inside it will be defined at root level hence command will be registered as `ping`. - -## Advanced settings -### Extensions +### Group Commands in Cogs + +Cogs are a great way to group related commands together. Here are a few ways to group commands, for different types of commands. + +=== "Prefix command" + ```python + class SuperCog(commands.Cog): + # super_group + @commands.group() + async def foo(self, ctx: commands.Context): + if ctx.invoked_subcommand is None: + await ctx.send("foo") + + @foo.group() + async def bar(self, ctx: commands.Context): + if ctx.invoked_subcommand is None: + await ctx.send("bar") + + @bar.command() + async def baz(self, ctx: commands.Context): + await ctx.send("baz") + ``` + ![Group Commands](./assets/cogs/prefix-group.png) +=== "Hybrid command" + ```python + class SuperCog(commands.Cog): + # /foo foo | !foo or !foo foo + @commands.hybrid_group(fallback="foo") + async def foo(self, ctx: commands.Context): + """This is a hybrid command group.""" + await ctx.send("foo") + + # /foo bar | !foo bar + @foo.command() + async def bar(self, ctx: commands.Context): + """This is a subcommand.""" + await ctx.send("bar") + + # /foo baz | !foo baz + @foo.command() + async def baz(self, ctx: commands.Context): + """This is a regular command.""" + await ctx.send("baz") + ``` + ![Group Commands](./assets/cogs/hybrid-group.png) + !!! warning "Warning" + Due to a limitation in discord, the parent/group command itself will not be listed and will not be able to be invoked. However, you can still use the parent/group command as a regular prefix command. To get around this limitation, you can use the `fallback` parameter to specify a subcommand that will be invoked if the parent/group command is invoked without a subcommand. +=== "Slash command" + ```python + class SuperCog(commands.GroupCog, name="foo", description="A super cog"): + _bar = app_commands.Group(name="bar", description="A bar group") + + @app_commands.command() + async def foo(self, inter: discord.Interaction): + await inter.response.send_message("foo") + + @_bar.command() + async def baz(self, inter: discord.Interaction): + await inter.response.send_message("baz") + ``` + ![Group Commands](./assets/cogs/slash-group.png) + + !!! warning "Warning" + There is no way to define a fallback command for a slash command group. You can only define subcommands. The `app_commands` also dosen't define any `group` decorator. So instead you can define a `GroupCog` class which is a subclass of `Cog` and all commands in the Cog will be registered as subcommands of the group or you can define a `Group` object and add commands to it. For more information refer to the [slash commands documentation](./slash-commands.md#slash-command-groups). -#### `teardown` function - -This function is called when the extension is being unloaded. It is used to cleanup. - -```python -async def teardown(bot): - print("Extension unloaded!") -``` +!!! warning "Warning" + Group Cogs only work with slash commands and hybrid commands. If you define a prefixed command inside it will be defined at root level and not as a subcommand. Slash commands can currently be nested only one level deep. So for example `/foo bar baz` is the maximum depth you can go. Prefix commands do not have this limitation. -### Cogs +### Advanced settings #### `cog_load` method @@ -244,8 +508,40 @@ class SuperCog(commands.Cog, name="Super Cog"): ... ``` +#### `description` attribute + +This attribute is used to set the description of the Cog. If not set, the description will be empty. + +=== "Keyword argument" + ```python + class SuperCog(commands.Cog, description="This is a super cog!"): + ... + ``` +=== "Docstring" + ```python + class SuperCog(commands.Cog): + """This is a super cog!""" + ... + ``` + ## Jishaku -Jishaku is a debugging and testing cog for discord.py bots. It is a very useful tool for bot developers. Installation can be found on the following sites. +Jishaku is an extension for bot developers that enables rapid prototyping, experimentation, and debugging of features for bots. It provides a set of commands that can be used to interact with the bot and the environment it is running in. + +### Usage + +To use Jishaku, first you need to install it using pip. + +```bash +pip install jishaku +``` + +Then you can load it as an extension. + +```python +await bot.load_extension("jishaku") +``` -[Github](https://github.com/Gorialis/jishaku) [PyPi](https://pypi.org/project/jishaku/) [Documentation](https://jishaku.readthedocs.io/en/latest/) +- [Github](https://github.com/Gorialis/jishaku) +- [PyPi](https://pypi.org/project/jishaku/) +- [Documentation](https://jishaku.readthedocs.io/en/latest/) diff --git a/docs/embeds.md b/docs/embeds.md index bcccc17..f422b8f 100644 --- a/docs/embeds.md +++ b/docs/embeds.md @@ -1,8 +1,8 @@ # Embeds -## What is Embed? +## What is an Embed? -Discord Embed object is a message component that is used as a way of adding rich content with different structures and formatting styles +Discord Embed object is a message component that is used as a way of adding rich content with different structures and formatting styles. Discord embeds also allow you to use markdown in the fields and descriptions, which can be useful for formatting. Check out our [Markdown](./markdown-and-ansi.md) page for more information. ## Overview @@ -31,22 +31,43 @@ async def foo(ctx: commands.Context): await ctx.send(embed=embed) ``` -!!! warning "Warning" - Almost all embed methods require keyword-only arguments - !!! info "Note" - Since most embed methods return the embed itself, you can nest them as follows: + Since most embed methods return the embed itself, you can chain them like this: ```py discord.Embed(...).set_image(...).add_field(...) ``` + Almost all methods have a default value of `None`, so you can skip them if you don't need them. ![Showcase](assets/embeds/1.png) +## Creating an Embed + +To create an embed, you need to create an instance of the `discord.Embed` class. You can pass various parameters to the constructor to set the properties of the embed. + +```py +embed = discord.Embed( + title="Title", + description="Description", + color=discord.Color.random(), + timestamp=datetime.datetime.utcnow() +) +``` + +- `title` - The title of the embed +- `description` - The description of the embed +- `color` - The color of the embed, you can use [`discord.Color`](https://discordpy.readthedocs.io/en/stable/api.html#colour) to set the color or construct colors using the following methods: + - `discord.Color.from_rgb(r, g, b)` + - `discord.Color.from_hsv(h, s, v)` + - `discord.Color.from_str("0x | # | 0x# | rgb(r, g, b)")` +- `timestamp` - The timestamp of the embed, you can use `discord.utils.utcnow()` to get the current time + ## Working with specific fields +--- + ### Getting a list of fields -*property* [Embed.fields](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.fields) +**property** [Embed.fields](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.fields) ```pycon title="Python Console Session" >>> import discord @@ -67,10 +88,9 @@ async def foo(ctx: commands.Context): ([pep8](https://peps.python.org/pep-0008/#descriptive-naming-styles)) - ### Appending a field -*method* [Embed.add_field](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.add_field) +**method** [Embed.add_field](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.add_field) ```pycon title="Python Console Session" >>> import discord @@ -84,7 +104,7 @@ async def foo(ctx: commands.Context): ### Inserting field at index -*method* [Embed.insert_field_at](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.insert_field_at) +**method** [Embed.insert_field_at](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.insert_field_at) ```pycon title="Python Console Session" >>> import discord @@ -99,7 +119,7 @@ async def foo(ctx: commands.Context): ### Changing field at index -*method* [Embed.set_field_at](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.set_field_at) +**method** [Embed.set_field_at](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.set_field_at) ```pycon title="Python Console Session" >>> import discord @@ -114,7 +134,7 @@ async def foo(ctx: commands.Context): ### Removing one field -*method* [Embed.remove_field](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.remove_field) +**method** [Embed.remove_field](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.remove_field) ```pycon title="Python Console Session" >>> import discord @@ -129,7 +149,7 @@ async def foo(ctx: commands.Context): ### Removing all fields -*method* [Embed.clear_fields](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.clear_fields) +**method** [Embed.clear_fields](https://discordpy.readthedocs.io/en/stable/api.html?#discord.Embed.clear_fields) ```pycon title="Python Console Session" >>> import discord @@ -197,14 +217,8 @@ async def foo(ctx: commands.Context): ## How to use local image for an embed image? -!!! info "Note" - It's a copy from [discord.py faq](https://discordpy.readthedocs.io/en/stable/faq.html#local-image) - -Discord special-cases uploading an image attachment and using it within an embed so that it will not display separately, but instead in the embed’s thumbnail, image, footer or author icon. +Discord.py allows you to send images as attachments in messages. You can use the `discord.File` class to send images as attachments in messages. You can then use the `attachment://` protocol followed by the filename to reference the attachment in the embed. -To do so, upload the image normally with [abc.Messageable.send()](https://discordpy.readthedocs.io/en/stable/api.html#discord.abc.Messageable.send), and set the embed’s image URL to `attachment://image.png`, where `image.png` is the filename of the image you will send. - -Quick example: ```py file = discord.File("path/to/my/image.png", filename="image.png") embed = discord.Embed() @@ -212,6 +226,8 @@ embed.set_image(url="attachment://image.png") await channel.send(file=file, embed=embed) ``` +Always remember to also send pass the `file` object when sending the message, without it discord will not be able to find the image you are trying to refer to. + ## Embed limits !!! abstract "" @@ -229,9 +245,10 @@ await channel.send(file=file, embed=embed) The **total of characters** allowed in an embed is **6000** -## Embed generating website +## Embed Playgrounds -!!! warning "Warning" - We don't advise using the website to create embeds: it's best to do it on your own. But it's actually very comfortable. +- [Discord Embed Sandbox](https://cog-creators.github.io/discord-embed-sandbox/) +- [Embed Visualizer](https://leovoel.github.io/embed-visualizer/) -On this [site](https://cog-creators.github.io/discord-embed-sandbox/) you can generate discord.py code for creating an embed +!!! warning "Warning" + We don't advise using the website to create embeds: it's best to do it on your own and far more efficient and customizable. But however, the site can be a good playground for testing and learning. diff --git a/docs/markdown-and-ansi.md b/docs/markdown-and-ansi.md index 061e627..3ee123d 100644 --- a/docs/markdown-and-ansi.md +++ b/docs/markdown-and-ansi.md @@ -400,6 +400,44 @@ To have syntax highlighting in code blocks, you can specify the language after t !!! tip "Tip" Above were just a few examples, You can find a list of supported languages [here](https://highlightjs.org/static/demo/). +### Mentions + +Discord supports mentioning users, roles, and channels in messages and a few other special mentions such as `@everyone` and `@here`. + +| Mention Type | Code | Remarks | +|--------------|-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| User | `<@user_id>` or `<@!user_id>` | Replace `user_id` with the user's id, this will ping the user. If the user is not found it will display `@unknown-user`. | +| Role | `<@&role_id>` | Replace `role_id` with the role's id, this will ping all the users with the role. If the role is not found it will display `@unknown-role`. | +| Channel | `<#channel_id>` | Replace `channel_id` with the channel's id, this will display the channel's name as a hyperlink making it easier to navigate to the channel. If the channel is not found it will display `#unknown`. | +| Everyone | `@everyone` | Pings everyone in the server. | +| Here | `@here` | Pings everyone in the server who is online. | + +### Timestamps + +You can use timestamps in messages and embeds to display the time in a user's local timezone, in a relative format, or in a specific format. + +| Style | Format | Example Input | Example Output | Description | +|-------------|-------------------|--------------------|-----------------------------------|-----------------------------------------------------------------| +| t | `` | `` | `8:10 AM` | Short time format (HH:MM AM/PM) in the user's local timezone. | +| T | `` | `` | `8:10:00 AM` | Long time format (HH:MM:SS AM/PM) in the user's local timezone. | +| d | `` | `` | `10/8/2021` | Short date format (MM/DD/YYYY) in the user's local timezone. | +| D | `` | `` | `October 8, 2021` | Long date format (Month DD, YYYY) in the user's local timezone. | +| f (default) | `` | `` | `October 8, 2021 8:10 AM` | Short date and time format in the user's local timezone. | +| F | `` | `` | `Friday, October 8, 2021 8:10 AM` | Long date and time format in the user's local timezone. | +| R | `` | `` | `3 years ago` | Relative time format. | + +```pycon +In [1]: import discord + ...: import datetime + ...: + ...: timestamp = datetime.datetime(2021, 10, 8, 8, 10) + ...: print(discord.utils.format_dt(timestamp, "f")) + + +In [2]: print(discord.utils.format_dt(timestamp, "t")) + +``` + ## Conclusion In this tutorial, we learned how to use markdown and ANSI highlighting in discord.py. We also learned how to use the `AnsiBuilder` class to create custom ANSI blocks. diff --git a/docs/tasks.md b/docs/tasks.md index aa6b046..8994e05 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -1,36 +1,73 @@ # Tasks -[Tasks](https://discordpy.readthedocs.io/en/stable/ext/tasks/index.html) in discord.py are helpers -for [asyncio.Task](https://docs.python.org/3/library/asyncio-task.html#task-object) +One of the most common things you will often find yourself needing is some sort of background task. This could be anything from updating a counter every minute to updating some leaderboard every hour or posting daily reminders. +To handle these tasks, discord.py provides a `tasks` extension that makes it easy to create and manage background tasks. -They are used for having a loop run in the background at a specified interval/time. +The `tasks` extension is a wrapper around the [`asyncio.Task`](https://docs.python.org/3/library/asyncio-task.html#task-object) class that allows you to run a coroutine in the background at a specified interval, with a lot of additional features like error handling, reconnect logic, exponential backoff, and more. ## Creating a task To create a task you need to make an `async` function that you want to run in the task and apply `tasks.loop` decorator on it. -You can read about its parameters in [discord.py documentation](https://discordpy.readthedocs.io/en/stable/ext/tasks/index.html#discord.ext.tasks.loop) +It takes the following arguments: -```python -from discord.ext import tasks +- `seconds`: The number of seconds between each iteration. +- `minutes`: The number of minutes between each iteration. +- `hours`: The number of hours between each iteration. +- `time`: A `datetime.time` or a list of `datetime.time` objects representing the time(s) of day to run the task. +- `count`: The number of times to run the task. If `None`, the task will run indefinitely. +- `reconnect`: Whether to handle errors and restart the task using an exponential backoff strategy. Defaults to `True`. For more information see [here](https://github.com/Rapptz/discord.py/blob/ff638d393d0f5a83639ccc087bec9bf588b59a22/discord/backoff.py#L41-L108). +- `name`: The name of the task. If `None`, the function name will be used. +Then you can start it by using it's `start` method. This will schedule the task to run in the background. -@tasks.loop(seconds=10) -async def my_task(): - print("Hello!") -``` +=== "Using a Cog" + ```python + from discord.ext import commands, tasks -Then you can start it by using it's `start` method. For example in `setup_hook`: + class MyCog(commands.Cog): + def __init__(self, bot): + self.bot = bot -```python -@bot.event -async def setup_hook(): - my_task.start() -``` + # you can start the task when the cog is loaded + async def cog_load(self): + self.my_task.start() + + # you can stop the task when the cog is unloaded + async def cog_unload(self): + self.my_task.stop() + + @tasks.loop(seconds=10) + async def my_task(self): + print("Hello!") + + async def setup(bot): + bot.add_cog(MyCog(bot)) + ``` +=== "Standalone" + ```python + from discord.ext import tasks + + @tasks.loop(seconds=10) + async def my_task(): + print("Hello!") + + @bot.event + async def setup_hook(): # setup_hook is called before the bot is started + my_task.start() + + @my_task.before_loop + async def before_my_task(): + await bot.wait_until_ready() # wait until the bot is ready + ``` + !!! note "Note" + The only requirement to schedule a task is to call the `start` method which you can call at an appropriate place in your code. A thing to note is that the task may start running before the bot is ready, so you may want to use `before_loop` to wait until the bot is ready if you are fetching any data from the discord API. ## Utility Decorators -### before_loop +--- + +### @before_loop A decorator that registers a coroutine to be called before the loop starts running. @@ -48,9 +85,9 @@ async def before_my_task(): print("preparing!") ``` -### after_loop +### @after_loop -A decorator that registers a coroutine to be called after the loop finishes running. +A decorator that registers a coroutine to be called after the loop finishes running. You can use this to perform cleanup tasks. ```python from discord.ext import tasks @@ -66,7 +103,7 @@ async def after_my_task(): print("finished!") ``` -### error +### @error A decorator that registers a coroutine to be called if the task encounters an unhandled exception. @@ -121,9 +158,22 @@ my_task.restart() Adds exception types to be handled during the reconnect logic. By default the exception types handled are those handled by `Client.connect()`, which includes a lot of internet disconnection errors. +This method is useful if you want to handle custom exceptions that are either raise by you or some third-party libraries. ```python -my_task.add_exception_type(SomeCustomError, AnotherCustomError) +class SomeCustomError(Exception): + pass + +@tasks.loop(seconds=10) +async def my_task(): + connection = await some_third_party_library.connect() + print(connection) + if not connection: + raise SomeCustomError("Connection failed!") + # do something with connection + connection.close() + +my_task.add_exception_type(SomeCustomError) # now SomeCustomError will be handled during the reconnect logic ``` ### clear_exception_types @@ -162,4 +212,4 @@ my_task.change_interval(seconds=15) ## Examples -Check out [discord.py tasks recipes](https://discordpy.readthedocs.io/en/stable/ext/tasks/index.html#recipes). There you can find a lot of examples +Check out [discord.py tasks recipes](https://discordpy.readthedocs.io/en/stable/ext/tasks/index.html#recipes) for some examples on how to use tasks in your bot. diff --git a/docs/views.md b/docs/views.md index 5178302..fa59591 100644 --- a/docs/views.md +++ b/docs/views.md @@ -38,7 +38,6 @@ So keeping these methods in mind, let's create a view: ```py from __future__ import annotations -import logging import typing import discord diff --git a/examples/hot-reload/cogs/sub_cogs/sub_cog.py b/examples/hot-reload/cogs/sub_cogs/sub_cog.py new file mode 100644 index 0000000..71198c6 --- /dev/null +++ b/examples/hot-reload/cogs/sub_cogs/sub_cog.py @@ -0,0 +1,9 @@ +from discord.ext import commands + + +class SubCog(commands.Cog): + ... + + +async def setup(bot: commands.Bot): + await bot.add_cog(SubCog()) diff --git a/examples/hot-reload/cogs/super_cog.py b/examples/hot-reload/cogs/super_cog.py new file mode 100644 index 0000000..205e1ec --- /dev/null +++ b/examples/hot-reload/cogs/super_cog.py @@ -0,0 +1,19 @@ +import discord +from discord import app_commands +from discord.ext import commands + + +class SuperCog(commands.GroupCog, name="foo", description="A super cog"): + _bar = app_commands.Group(name="bar", description="A bar group") + + @app_commands.command() + async def foo(self, inter: discord.Interaction): + await inter.response.send_message("foo") + + @_bar.command() + async def baz(self, inter: discord.Interaction): + await inter.response.send_message("baz") + + +async def setup(bot: commands.Bot): + await bot.add_cog(SuperCog()) diff --git a/examples/hot-reload/main.py b/examples/hot-reload/main.py new file mode 100644 index 0000000..c14b77c --- /dev/null +++ b/examples/hot-reload/main.py @@ -0,0 +1,55 @@ +import asyncio +import os +import pathlib +import time + +import discord +from discord.ext import commands +from dotenv import load_dotenv + + +class MyBot(commands.Bot): + _watcher: asyncio.Task + + def __init__(self, ext_dir: str, *args, **kwargs): + super().__init__(*args, **kwargs) + self.ext_dir = pathlib.Path(ext_dir) + + async def _load_extensions(self): + print("Loading extensions...") + for file in self.ext_dir.rglob("*.py"): + if file.stem.startswith("_"): + continue + try: + await self.load_extension(".".join(file.with_suffix("").parts)) + print(f"Loaded {file}") + except commands.ExtensionError as e: + print(f"Failed to load {file}: {e}") + + async def setup_hook(self): + await self._load_extensions() + self._watcher = self.loop.create_task(self._cog_watcher()) + await self.tree.sync() + + async def _cog_watcher(self): + print("Watching for changes...") + last = time.time() + while True: + extensions: set[str] = set() + for name, module in self.extensions.items(): + if module.__file__ and os.stat(module.__file__).st_mtime > last: + extensions.add(name) + for ext in extensions: + try: + await self.reload_extension(ext) + print(f"Reloaded {ext}") + except commands.ExtensionError as e: + print(f"Failed to reload {ext}: {e}") + last = time.time() + await asyncio.sleep(1) + + +if __name__ == "__main__": + load_dotenv() + bot = MyBot("cogs", command_prefix="!", intents=discord.Intents.all()) + bot.run(str(os.getenv("TOKEN")))