Files
website/tr/blog.html
github-actions[bot] 1ef445605d deploy: 39ff89aa00
2022-12-28 19:47:10 +00:00

41 lines
99 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="tr" dir="ltr" class="blog-wrapper blog-list-page plugin-blog plugin-id-default">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-rc.1">
<link rel="alternate" type="application/rss+xml" href="/tr/blog/rss.xml" title="sern - Handlers. Redefined. RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/tr/blog/atom.xml" title="sern - Handlers. Redefined. Atom Feed"><title data-rh="true">Blog | sern - Handlers. Redefined.</title><meta data-rh="true" property="og:url" content="https://sern-handler.js.org/tr/blog"><meta data-rh="true" name="docusaurus_locale" content="tr"><meta data-rh="true" name="docsearch:language" content="tr"><meta data-rh="true" name="og:title" content="sern - Handlers. Redefined."><meta data-rh="true" name="og:description" content="A customizable, batteries-included, powerful discord.js framework to automate and streamline bot development"><meta data-rh="true" name="og:image" content="https://i.imgur.com/rr8nqDP.png"><meta data-rh="true" name="og:url" content="https://sern.dev"><meta data-rh="true" name="og:type" content="website"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" name="twitter:site" content="@sern-handler"><meta data-rh="true" name="twitter:title" content="sern - Handlers. Redefined."><meta data-rh="true" name="twitter:description" content="A customizable, batteries-included, powerful discord.js framework to automate and streamline bot development"><meta data-rh="true" name="twitter:image" content="./assets/images/logo.png"><meta data-rh="true" name="twitter:url" content="https://sern.dev"><meta data-rh="true" name="theme-color" content="#cb547c"><meta data-rh="true" property="og:title" content="Blog | sern - Handlers. Redefined."><meta data-rh="true" name="description" content="Blog"><meta data-rh="true" property="og:description" content="Blog"><meta data-rh="true" name="docusaurus_tag" content="blog_posts_list"><meta data-rh="true" name="docsearch:docusaurus_tag" content="blog_posts_list"><link data-rh="true" rel="icon" href="/tr/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://sern-handler.js.org/tr/blog"><link data-rh="true" rel="alternate" href="https://sern-handler.js.org/blog" hreflang="en"><link data-rh="true" rel="alternate" href="https://sern-handler.js.org/fr/blog" hreflang="fr"><link data-rh="true" rel="alternate" href="https://sern-handler.js.org/tr/blog" hreflang="tr"><link data-rh="true" rel="alternate" href="https://sern-handler.js.org/blog" hreflang="x-default"><link rel="stylesheet" href="/tr/assets/css/styles.c6e92678.css">
<link rel="preload" href="/tr/assets/js/runtime~main.2f21d242.js" as="script">
<link rel="preload" href="/tr/assets/js/main.501bc7a9.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region"><a href="#" class="skipToContent_fXgn">Ana içeriğe geç</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/tr/"><div class="navbar__logo"><img src="/tr/img/favicon.ico" alt="logo logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/tr/img/favicon.ico" alt="logo logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Home</b></a><a class="navbar__item navbar__link" href="/tr/docs/intro">Docs &amp; Guide</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/tr/blog">Blog</a><a class="navbar__item navbar__link" href="/tr/plugins">Plugins</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/sern-handler" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog son gönderiler navigasyonu"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/tr/blog/2.0.0">Release 2.0.0</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/tr/blog/getting-started">How to get started with sern!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/tr/blog/1.2.0">Release 1.2.0</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/tr/blog/2.0.0">Release 2.0.0</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-12-13T00:00:00.000Z" itemprop="datePublished">13 Aralık 2022</time> · <!-- -->4 dakikalık okuma</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/jacoobes" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/jacoobes.png" alt="jacoobes"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/jacoobes" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">jacoobes</span></a></div><small class="avatar__subtitle" itemprop="description">Head Dev</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="20-release">2.0 Release<a class="hash-link" href="#20-release" title="Başlığa doğrudan bağlantı"></a></h2><p>Join our <a href="https://sern.dev/discord" target="_blank" rel="noopener noreferrer">discord</a>! <br>
Wow! We&#x27;re finally increasing our semantic versioning by +<code>1.7.9.</code> <br>
What does this mean?</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="plugin-support-for-event-modules">Plugin Support for Event Modules<a class="hash-link" href="#plugin-support-for-event-modules" title="Başlığa doğrudan bağlantı"></a></h3><p>You can now use plugins for event modules. Previous version would throw an error if the
<code>plugins</code> field was populated.</p><div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token keyword" style="color:rgb(12, 150, 155)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">function</span><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">commandPlTest</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> SernEmitterPlugin </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">return</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> type</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> PluginType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token plain">Command</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token function-variable function" style="color:rgb(153, 76, 195);font-style:italic">execute</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"> mod</span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"> controller</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">if</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token plain">mod</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token plain">name </span><span class="token operator" style="color:rgb(12, 150, 155)">===</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;module.register&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token builtin" style="color:rgb(72, 118, 214)">console</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">log</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;Event Module created correctly&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">return</span><span class="token plain"> controller</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">next</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token builtin" style="color:rgb(72, 118, 214)">console</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">log</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;event name is wrong&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">return</span><span class="token plain"> controller</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">stop</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Applying this plugin to some <code>eventModule</code>: </p><div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token keyword" style="color:rgb(12, 150, 155)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">default</span><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">eventModule</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> name</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;error&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> type</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> EventType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token plain">Sern</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> plugins</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">[</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">commandPlTest</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token punctuation" style="color:rgb(153, 76, 195)">]</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">execute</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token plain">m</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token builtin" style="color:rgb(72, 118, 214)">console</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">log</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token plain">m</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-injection-and-decoupling">Dependency Injection and Decoupling<a class="hash-link" href="#dependency-injection-and-decoupling" title="Başlığa doğrudan bağlantı"></a></h2><p>The powerful npm package <code>iti</code> decouples sern even more.
Decoupling data structures with the Inversion of Control pattern separates data from logic, which will help speed production
and make sern even more customizable than before.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="how-do-i-start">How do I start?<a class="hash-link" href="#how-do-i-start" title="Başlığa doğrudan bağlantı"></a></h3><div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockTitle_Ktv7">src/index.ts</div><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//With typescript, you can customize / augment your typings.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token keyword" style="color:rgb(12, 150, 155)">interface</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">MyDependencies</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">extends</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">Dependencies</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token string-property property" style="color:rgb(12, 150, 155)">&#x27;@sern/client&#x27;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Singleton</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">Client</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token string-property property" style="color:rgb(12, 150, 155)">&#x27;@sern/logger&#x27;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Singleton</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">DefaultLogging</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token keyword" style="color:rgb(12, 150, 155)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">const</span><span class="token plain"> useContainer </span><span class="token operator" style="color:rgb(12, 150, 155)">=</span><span class="token plain"> Sern</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token generic-function function" style="color:rgb(153, 76, 195);font-style:italic">makeDependencies</span><span class="token generic-function generic class-name operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token generic-function generic class-name" style="color:rgb(17, 17, 17)">MyDependencies</span><span class="token generic-function generic class-name operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">// exclude: new Set([&#x27;@sern/logger&#x27;]), don&#x27;t autofill optional dependencies</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token function-variable function" style="color:rgb(153, 76, 195);font-style:italic">build</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> root </span><span class="token operator" style="color:rgb(12, 150, 155)">=&gt;</span><span class="token plain"> root</span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">add</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"> </span><span class="token string-property property" style="color:rgb(12, 150, 155)">&#x27;@sern/client&#x27;</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">single</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token plain">client</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">add</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"> </span><span class="token string-property property" style="color:rgb(12, 150, 155)">&#x27;@sern/logger&#x27;</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">single</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token keyword" style="color:rgb(12, 150, 155)">new</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">DefaultLogging</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain">Sern</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">init</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> defaultPrefix</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;!&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">// removing defaultPrefix will shut down text commands</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> commands</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;src/commands&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">// events: &#x27;src/events&#x27; (optional),</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> containerConfig </span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> get</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> useContainer </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//pass in your dependency getter here</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Using the <code>Sern#makeDependencies</code> function, inject your dependencies.
We&#x27;ll use specific dependencies that are created with the <code>@sern/keyword</code>
key.
Using typescript to display all <code>keywords</code> and what they represent:</p><div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token keyword" style="color:rgb(12, 150, 155)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">interface</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">Dependencies</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token string-property property" style="color:rgb(12, 150, 155)">&#x27;@sern/client&#x27;</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Singleton</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">EventEmitter</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//Discord Client</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;@sern/logger&#x27;</span><span class="token operator" style="color:rgb(12, 150, 155)">?</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Singleton</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">Logging</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//Logger</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token string-property property" style="color:rgb(12, 150, 155)">&#x27;@sern/emitter&#x27;</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Singleton</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">SernEmitter</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//SernEmitter</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token string-property property" style="color:rgb(12, 150, 155)">&#x27;@sern/store&#x27;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Singleton</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">ModuleStore</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//Stores all Command Modules</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token string-property property" style="color:rgb(12, 150, 155)">&#x27;@sern/modules&#x27;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Singleton</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">ModuleManager</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//Manages Modules</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token string-property property" style="color:rgb(12, 150, 155)">&#x27;@sern/errors&#x27;</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Singleton</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">ErrorHandling</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//A Lifetime / Crash Handler</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-danger alert alert--danger admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>danger</div><div class="admonitionContent_S0QG"><p>Sern#addExternal has been deprecated and removed in favor of Sern#makeDependencies</p></div></div><p>At the moment, one optional dependency, <code>@sern/logger</code>, exists. If not added explicitly,
we&#x27;ll <strong>autofill</strong> with a <a href="https://sern.dev/docs/api/classes/defaultlogging" target="_blank" rel="noopener noreferrer">DefaultLogger</a>.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>If you don&#x27;t want a logger, add it to the
<code>exclude</code> field while composing dependencies.</p></div></div><p>Use your generated dependency getter <code>useContainer</code> (use whatever name you want), access them
from anywhere.</p><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>the function <a href="https://sern.dev/docs/api/modules#usecontainerraw" target="_blank" rel="noopener noreferrer">useContainerRaw</a> is provided for direct access to dependencies and the internal
data structure. Use this wisely as no guarantees are made and crashes can happen.</p></div></div><p>The <code>build</code> field follows <a href="https://itijs.org/docs/quick-start#usage" target="_blank" rel="noopener noreferrer">createContainer</a> function call.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="new-commandtypes">New CommandTypes<a class="hash-link" href="#new-commandtypes" title="Başlığa doğrudan bağlantı"></a></h2><p>2.0 includes all the new role select menus. <code>CommandType.MenuSelect</code> has been renamed into
<code>CommandType.StringSelect</code>. The remaining SelectMenus are
<code>CommandType.RoleSelect</code>, <code>CommandType.ChannelSelect</code>, <code>CommandType.UserSelect</code>, <code>CommandType.MentionableSelect</code></p><div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockTitle_Ktv7">commands/roleselect.ts</div><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token keyword" style="color:rgb(12, 150, 155)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">default</span><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">commandModule</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> type</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> CommandType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token plain">RoleSelect</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">execute</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token plain">ctx</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> ctx</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">reply</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;role select&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In addition, commandModules with ContextMenus have been renamed.</p><div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> CommandType.MenuUser, CommandType.MenuMsg </span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> CommandType.CtxUser, CommandType.CtxMsg</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="typings-simplification">Typings Simplification<a class="hash-link" href="#typings-simplification" title="Başlığa doğrudan bağlantı"></a></h2><p>Pre 2.0: </p><img loading="lazy" src="https://cdn.discordapp.com/attachments/820348341358952550/1038577974829666386/image.png" class="img_ev3q"><br> <br> <br>Post 2.0:<br><img loading="lazy" src="https://cdn.discordapp.com/attachments/820348341358952550/1052623728489550015/image.png" class="img_ev3q"><p>CommandPlugin&lt;T<!-- -->&gt;<!-- --> and EventPlugin&lt;T<!-- -->&gt;<!-- --> typings have also been static&#x27;ified, transformed from types to interfaces</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="breaking-changes">Breaking Changes<a class="hash-link" href="#breaking-changes" title="Başlığa doğrudan bağlantı"></a></h2><img loading="lazy" src="https://img.srizan.ml/Discord_z8Sn1UBfEe.png" class="img_ev3q"><br>All deprecation warnings from previous versions have taken effect, and are removed in 2.0.<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> type Module = EventModule | CommandModule</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> type AnyModule = EventModule | CommandModule</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic">export type SpreadParams&lt;T extends (...args: never) =&gt; unknown&gt; = (</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> args: Parameters&lt;T&gt;[number],</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> ) =&gt; unknown;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Override type has been removed due to redundancy</p><div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> discord.js : 14.5</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> discord.js : 14.7</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic">typescript: 4.7</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> typescript: 4.9</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> interface Wrapper {</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> readonly defaultPrefix?: string;</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> readonly commands: string;</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> readonly events?: string;</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> readonly containerConfig : {</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> get: (...keys: (keyof Dependencies)[]) =&gt; unknown[];</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> }</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic">}</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> interface Wrapper {</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> readonly client: Client;</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> readonly sernEmitter?: SernEmitter;</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> readonly defaultPrefix?: string;</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> readonly commands: string;</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> readonly events?:</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> | string</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> | { mod: EventModule; absPath: string }[]</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> | (() =&gt; { mod: EventModule; absPath: string }[]);</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> DefaultLogger</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> DefaultModuleManager</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> SernEmitter</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> DefaultErrorHandling</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> type Singleton&lt;T&gt; = () =&gt; T</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> type Transient&lt;T&gt; = () =&gt; () =&gt; T; </span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> type LogPayload&lt;T = unknown&gt; = { message: T }</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> export const single = &lt;T&gt;() =&gt; T</span><br></span><span class="token-line" style="color:#403f53"><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> export const many = &lt;T&gt;() =&gt; () =&gt; T</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Including the previous section, some names to symbols and data structures were altered to
be better represented. view <a href="/tr/404.html">changelog</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="context-refactoring">Context refactoring<a class="hash-link" href="#context-refactoring" title="Başlığa doğrudan bağlantı"></a></h2><p>The context data structure has been internally altered to represent its dynamics better.</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Etiketler:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tr/blog/tags/release">release</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/tr/blog/getting-started">How to get started with sern!</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-09-30T00:00:00.000Z" itemprop="datePublished">30 Eylül 2022</time> · <!-- -->2 dakikalık okuma</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/SrIzan10" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/SrIzan10.png" alt="Sr Izan"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/SrIzan10" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Sr Izan</span></a></div><small class="avatar__subtitle" itemprop="description">Contributor</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="hello-everyone">Hello everyone!<a class="hash-link" href="#hello-everyone" title="Başlığa doğrudan bağlantı"></a></h2><p>I&#x27;m Sr Izan, your fellow user and contributor.</p><p>Today I&#x27;m going to show you how to get started with sern and all its cool features.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-install-the-cli">Step 1: Install the CLI.<a class="hash-link" href="#step-1-install-the-cli" title="Başlığa doğrudan bağlantı"></a></h3><p>Install the CLI:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token plain">npm i -g @sern/cli</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>and then run</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token plain">sern init</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>You can also run <code>sern init -y</code> if you want to use the default options.</p></div></div><p>The CLI is written in Typescript and open-sourced on <a href="https://github.com/sern-handler/cli" target="_blank" rel="noopener noreferrer">Github</a>. (thanks <a href="https://github.com/EvolutionX-10" target="_blank" rel="noopener noreferrer">evo</a>!)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-2-have-some-way-to-store-secrets">Step 2: Have some way to store secrets.<a class="hash-link" href="#step-2-have-some-way-to-store-secrets" title="Başlığa doğrudan bağlantı"></a></h3><p>Normally you&#x27;d need a way to store secrets, and the best way to do that is by installing another package: <code>dotenv</code></p><p>just <code>npm i dotenv</code> in the project folder and add <code>require(&#x27;dotenv&#x27;).config()</code> to your import section. Then, when you login, <code>process.env.TOKEN</code> (or however you have it named on your <code>.env</code> file) should do the trick.</p><div class="theme-admonition theme-admonition-caution alert alert--warning admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</div><div class="admonitionContent_S0QG"><p>If you&#x27;re using ESM, configure dotenv with <code>import &#x27;dotenv/config&#x27;</code> instead of <code>require(&#x27;dotenv&#x27;).config()</code>.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="and-thats-it">And... that&#x27;s it?<a class="hash-link" href="#and-thats-it" title="Başlığa doğrudan bağlantı"></a></h3><p>Yes, that&#x27;s it. Here&#x27;s a little FAQ to get you started. You can also join the <a href="https://sern-handler.js.org/discord" target="_blank" rel="noopener noreferrer">Discord</a> for any problems.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="extra-video-tutorial">Extra: Video tutorial!<a class="hash-link" href="#extra-video-tutorial" title="Başlığa doğrudan bağlantı"></a></h3><video width="400" controls=""><source src="https://srizan.s-ul.eu/wtJBVsZU" type="video/mp4"></video><h2 class="anchor anchorWithStickyNavbar_LWe7" id="faq">FAQ<a class="hash-link" href="#faq" title="Başlığa doğrudan bağlantı"></a></h2><p><strong>Q</strong>: How do I publish a slash command?<br>
<strong>A</strong>: Install the publish extension. Little video: </p><video width="400" controls=""><source src="https://srizan.s-ul.eu/uHzPhfcS" type="video/mp4"></video><p><strong>Q</strong>: Any snippet VSCode extension?<br>
<strong>A</strong>: Yeah, just search <code>sern Snippets</code> made by a verified publisher called Sr Izan (haha yeah me funny!) </p><p><strong>Q</strong>: HEEEELLLPPPP!!!!<br>
<strong>A</strong>: Hey, don&#x27;t panic! We&#x27;re here to help so, join the <a href="https://sern-handler.js.org/discord" target="_blank" rel="noopener noreferrer">Discord</a>. We&#x27;re trying to get to 100 members!</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Etiketler:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tr/blog/tags/guides">guides</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/tr/blog/1.2.0">Release 1.2.0</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-09-28T00:00:00.000Z" itemprop="datePublished">28 Eylül 2022</time> · <!-- -->2 dakikalık okuma</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/jacoobes" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/jacoobes.png" alt="jacoobes"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/jacoobes" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">jacoobes</span></a></div><small class="avatar__subtitle" itemprop="description">Head Dev</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="class-based-modules">Class-based modules<a class="hash-link" href="#class-based-modules" title="Başlığa doğrudan bağlantı"></a></h2><p>Today we&#x27;re announcing the ability to create class based modules!
To get started, install</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token plain">npm install @sern/handler@latest</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Quick List of changes!</p><ul><li><a href="#class-based-modules">Class based modules</a></li><li><a href="#deprecation-warnings">Deprecation Warnings</a></li><li><a href="#dependencies-update">Dependencies update</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="class-based-modules-1">Class based modules<a class="hash-link" href="#class-based-modules-1" title="Başlığa doğrudan bağlantı"></a></h3><p>Incorporate class based modules into your project instead of the traditional <code>commandModule</code> or <code>eventModule</code>
Extend the new <a href="/tr/docs/api/classes/CommandExecutable">CommandExecutable</a> or <a href="/tr/docs/api/classes/EventExecutable">EventExecutable</a></p><div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockTitle_Ktv7">commands/meaning-of-life.ts</div><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token keyword" style="color:rgb(12, 150, 155)">import</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"> CommandType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"> CommandExecutable</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">Args</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">Context</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">from</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;@sern/handler&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token keyword" style="color:rgb(12, 150, 155)">import</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"> publish </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">from</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;../plugins/publish.js&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token keyword" style="color:rgb(12, 150, 155)">import</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"> serendipityOnly </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">from</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;../plugins/serendipityOnly.js&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token keyword" style="color:rgb(12, 150, 155)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">default</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">class</span><span class="token plain"> </span><span class="token class-name keyword" style="color:rgb(12, 150, 155)">extends</span><span class="token plain"> CommandExecutable</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">CommandType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token plain">Both</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> type </span><span class="token operator" style="color:rgb(12, 150, 155)">=</span><span class="token plain"> CommandType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token plain">Both </span><span class="token keyword" style="color:rgb(12, 150, 155)">as</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">const</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> description </span><span class="token operator" style="color:rgb(12, 150, 155)">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;What is the meaning of life?&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> override onEvent </span><span class="token operator" style="color:rgb(12, 150, 155)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">serendipityOnly</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">]</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> override plugins </span><span class="token operator" style="color:rgb(12, 150, 155)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">publish</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">]</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#403f53"><span class="token plain"> </span><span class="token function-variable function" style="color:rgb(153, 76, 195);font-style:italic">execute</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">async</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token plain">ctx</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Context</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"> args</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> Args</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">await</span><span class="token plain"> ctx</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">reply</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;42&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-caution alert alert--warning admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</div><div class="admonitionContent_S0QG"><p>execute must not be a method of the class. It should be as above, a property on the class!</p></div></div><div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockTitle_Ktv7">events/guildMemberAdd.ts</div><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token keyword" style="color:rgb(12, 150, 155)">import</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"> CommandType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"> EventExecutable</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">EventType</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">from</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;@sern/handler&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token keyword" style="color:rgb(12, 150, 155)">import</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">type</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"> GuildMember </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">from</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;discord.js&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token keyword" style="color:rgb(12, 150, 155)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">default</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">class</span><span class="token plain"> </span><span class="token class-name keyword" style="color:rgb(12, 150, 155)">extends</span><span class="token plain"> EventExecutable</span><span class="token operator" style="color:rgb(12, 150, 155)">&lt;</span><span class="token plain">EventType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token plain">Discord</span><span class="token operator" style="color:rgb(12, 150, 155)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> type </span><span class="token operator" style="color:rgb(12, 150, 155)">=</span><span class="token plain"> EventType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token plain">Discord </span><span class="token keyword" style="color:rgb(12, 150, 155)">as</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">const</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#403f53"><span class="token plain"> </span><span class="token function-variable function" style="color:rgb(153, 76, 195);font-style:italic">execute</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token plain">member</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> GuildMember</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token builtin" style="color:rgb(72, 118, 214)">console</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">log</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token plain">member</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Now, you might ask <strong>why</strong> this feature was added. <br> Simply put, to give flexibility to the developers.
I believe that you should build your own structures however you might like and customize to your liking.
In addition, <strong>decorators now unofficially work with modules!</strong>
Feel free to use TypeScript experimental decorators to augment and customize your classes. </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deprecation-warnings">Deprecation Warnings<a class="hash-link" href="#deprecation-warnings" title="Başlığa doğrudan bağlantı"></a></h3><p>The next update will bring sern v2 with some important features. Here are some things to watch out for.</p><ul><li><a href="/tr/docs/api/interfaces/Wrapper">Wrapper#client</a> will be deprecated</li><li><a href="/tr/docs/api/interfaces/Wrapper">Wrapper#sernEmitter</a> will be deprecated<ul><li>a SernEmitter will be automatically created once Sern#init is called</li></ul></li><li>The option to pass in a function or array for <a href="/tr/docs/api/interfaces/Wrapper">Wrapper#events</a> will be deprecated. Only strings are accepted.</li><li><a href="/tr/docs/api/classes/SernEmitter">Sern#addExternal</a> will be deprecated in favor of a better way.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-update">Dependencies Update<a class="hash-link" href="#dependencies-update" title="Başlığa doğrudan bağlantı"></a></h3><ul><li>TypeScript has been updated to 4.8.3</li><li>Discord.js has been upgraded to 14.5</li></ul></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Etiketler:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tr/blog/tags/release">release</a></li></ul></div></footer></article><nav class="pagination-nav" aria-label="Blog gönderi sayfası navigasyonu"></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Information</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/tr/docs/intro">Docs &amp; Guide</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/sern-handler" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://discord.gg/DwbF5H5JgQ" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://opencollective.com/sern" target="_blank" rel="noopener noreferrer" class="footer__link-item">Open Collective<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/tr/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/sern-handler" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Built with ❤️ by the sern Handler team and its contributors</div></div></div></footer></div>
<script src="/tr/assets/js/runtime~main.2f21d242.js"></script>
<script src="/tr/assets/js/main.501bc7a9.js"></script>
</body>
</html>