1import{r as p,o as c,c as l,a,b as s,w as r,F as i,d as n,f as e}from"./app.1a0d0096.js";const u={},d=a("h1",{id:"threads",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#threads","aria-hidden":"true"},"#"),n(" Threads")],-1),h=a("p",null,"Threads can be thought of as temporary sub-channels inside an existing channel, to help better organize conversation in a busy channel.",-1),k=a("h2",{id:"thread-related-gateway-events",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#thread-related-gateway-events","aria-hidden":"true"},"#"),n(" Thread related gateway events")],-1),m={class:"custom-container tip"},b=a("p",{class:"custom-container-title"},"TIP",-1),g=n("You can use the "),v=n(" type guard to make sure a channel is a "),_=n("!"),y=a("p",null,"Threads introduce a number of new gateway events, which are listed below:",-1),w=n(": Emitted whenever a thread is created or when the client user is added to a thread. "),f=n(": Emitted whenever a thread is deleted. "),T=n(": Emitted whenever a thread is updated (e.g. name change, archive state change, locked state change). "),x=n(": Emitted whenever the client user gains access to a text or news channel that contains threads. "),C=n(": Emitted whenever members are added or removed from a thread. Requires "),j=a("code",null,"GuildMembers",-1),A=n(" privileged intent. "),D=n(": Emitted whenever the client user's thread member is updated. "),M=a("h2",{id:"creating-and-deleting-threads",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#creating-and-deleting-threads","aria-hidden":"true"},"#"),n(" Creating and deleting threads")],-1),L=n("Threads are created and deleted using the "),N=n(" of a text or news channel. To create a thread you call the "),P=n(" method:"),E=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> <span class="token keyword">await</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">{</span> 2 <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'food-talk'</span><span class="token punctuation">,</span> 3 <span class="token literal-property property">autoArchiveDuration</span><span class="token operator">:</span> ThreadAutoArchiveDuration<span class="token punctuation">.</span>OneHour<span class="token punctuation">,</span> 4 <span class="token literal-property property">reason</span><span class="token operator">:</span> <span class="token string">'Needed a separate thread for food'</span><span class="token punctuation">,</span> 5<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 6 7console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">\`</span><span class="token string">Created thread: </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">\${</span>thread<span class="token punctuation">.</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">\`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> 8</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div>`,1),G=n("To delete a thread, use the "),I=n(" method:"),q=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token operator">=></span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">'food-talk'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 9<span class="token keyword">await</span> thread<span class="token punctuation">.</span><span class="token function">delete</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 10</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h2 id="joining-and-leaving-threads" tabindex="-1"><a class="header-anchor" href="#joining-and-leaving-threads" aria-hidden="true">
10#</a> Joining and leaving threads</h2>`,2),H=n("To join your client to a ThreadChannel, use the "),O=n(" method:"),V=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token operator">=></span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">'food-talk'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 11<span class="token keyword">if</span> <span class="token punctuation">(</span>thread<span class="token punctuation">.</span>joinable<span class="token punctuation">)</span> <span class="token keyword">await</span> thread<span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 12</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div>`,1),$=n("And to leave one, use "),B=n(";"),F=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token operator">=></span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">'food-talk'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 13<span class="token keyword">await</span> thread<span class="token punctuation">.</span><span class="token function">leave</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 14</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h2 id="archiving-unarchiving-and-locking-threads" tabindex="-1"><a class="header-anchor" href="#archiving-unarchiving-and-locking-threads" aria-hidden="true">#</a> Archiving, unarchiving, and locking threads</h2><p>A thread can be either active or archived. Changing a thread from archived to active is referred to as unarchiving the thread. Threads that have <code>locked</code> set to true can only be unarchived by a member with the <code>ManageThreads</code> permission.</p><p>Threads are automatically archived after inactivity. "Activity" is defined as sending a message, unarchiving a thread, or changing the auto-archive time.</p>`,4),R=n("To archive or unarchive a thread, use the "),S=n(" method and pass in a boolean parameter:"),U=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token operator">=></span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">'food-talk'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 15<span class="token keyword">await</span> thread<span class="token punctuation">.</span><span class="token function">setArchived</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// archived</span> 16<span class="token keyword">await</span> thread<span class="token punctuation">.</span><span class="token function">setArchived</span><span class="token punctuation">(</span><span class="token boolean">
16false</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// unarchived</span> 17</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div>`,1),Y=n("This same principle applies to locking and unlocking a thread via the "),z=n(" method:"),J=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token operator">=></span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">'food-talk'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 18<span class="token keyword">await</span> thread<span class="token punctuation">.</span><span class="token function">setLocked</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// locked</span> 19<span class="token keyword">await</span> thread<span class="token punctuation">.</span><span class="token function">setLocked</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// unlocked</span> 20</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><h2 id="public-and-private-threads" tabindex="-1"><a class="header-anchor" href="#public-and-private-threads" aria-hidden="true">#</a> Public and private threads</h2>`,2),W=n("Public threads are viewable by everyone who can view the parent channel of the thread. Public threads can be created with the "),K=n(" method."),Q=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> <span class="token keyword">await</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">{</span> 21 <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'food-talk'</span><span class="token punctuation">,</span> 22 <span class="token literal-property property">autoArchiveDuration</span><span class="token operator">:</span> ThreadAutoArchiveDuration<span class="token punctuation">.</span>OneHour<span class="token punctuation">,</span> 23 <span class="token literal-property property">reason</span><span class="token operator">:</span> <span class="token string">'Needed a separate thread for food'</span><span class="token punctuation">,</span> 24<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 25 26console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">\`</span><span class="token string">Created thread: </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">\${</span>thread<span class="token punctuation">.</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">\`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> 27</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div>`,1),X=n("They can also be created from an existing message with the "),Z=n(' method, but will be "orphaned" if that message is deleted.'),nn=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> <span class="token keyword">await</span> message<span class="token punctuation">.</span><span class="token function">startThread</span><span class="token punctuation">(</span><span class="token punctuation">{</span> 28 <span class="token literal-property property">
28name</span><span class="token operator">:</span> <span class="token string">'food-talk'</span><span class="token punctuation">,</span> 29 <span class="token literal-property property">autoArchiveDuration</span><span class="token operator">:</span> ThreadAutoArchiveDuration<span class="token punctuation">.</span>OneHour<span class="token punctuation">,</span> 30 <span class="token literal-property property">reason</span><span class="token operator">:</span> <span class="token string">'Needed a separate thread for food'</span><span class="token punctuation">,</span> 31<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 32 33console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">\`</span><span class="token string">Created thread: </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">\${</span>thread<span class="token punctuation">.</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">\`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> 34</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>The created thread and the message it originated from will share the same ID. The type of thread created matches the parent channel's type.</p><p>Private threads behave similar to Group DMs, but in a Guild. Private threads can only be created on text channels.</p>`,3),an=n("To create a private thread, use "),sn=n(" and pass in "),tn=a("code",null,"ChannelType.PrivateThread",-1),en=n(" as the "),pn=a("code",null,"type",-1),on=n(":"),cn=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> <span class="token punctuation">{</span> ChannelType<span class="token punctuation">,</span> ThreadAutoArchiveDuration <span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'discord.js'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 35 36<span class="token keyword">const</span> thread <span class="token operator">=</span> <span class="token keyword">await</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">{</span> 37 <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'mod-talk'</span><span class="token punctuation">,</span> 38 <span class="token literal-property property">autoArchiveDuration</span><span class="token operator">:</span> ThreadAutoArchiveDuration<span class="token punctuation">.</span>OneHour<span class="token punctuation">,</span> 39 <span class="token literal-property property">type</span><span class="token operator">:</span> ChannelType<span class="token punctuation">.</span>PrivateThread<span class="token punctuation">,</span> 40 <span class="token literal-property property">reason</span><span class="token operator">:</span> <span class="token string">'Needed a separate thread for moderation'</span><span class="token punctuation">,</span> 41<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 42 43console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">\`</span><span class="token string">Created thread: </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">\${</span>thread<span class="token punctuation">.</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">\`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> 44</code></pre><div class="highlight-lines"><br><br><br><br><br><div class="highlight-line">\xA0</div><br><br><br><br></div><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><h2 id="adding-and-removing-members" tabindex="-1"><a class="header-anchor" href="#adding-and-removing-members" aria-hidden="true">
44#</a> Adding and removing members</h2><p>You can add and remove members to and from a thread channel.</p>`,3),ln=n("To add a member to a thread, use the "),rn=n(" method:"),un=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token operator">=></span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">'food-talk'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 45<span class="token keyword">await</span> thread<span class="token punctuation">.</span>members<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'140214425276776449'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 46</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div>`,1),dn=n("And to remove a member from a thread, use "),hn=n(":"),kn=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> thread <span class="token operator">=</span> channel<span class="token punctuation">.</span>threads<span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token operator">=></span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">'food-talk'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 47<span class="token keyword">await</span> thread<span class="token punctuation">.</span>members<span class="token punctuation">.</span><span class="token function">remove</span><span class="token punctuation">(</span><span class="token string">'140214425276776449'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 48</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h2 id="sending-messages-to-threads-with-webhooks" tabindex="-1"><a class="header-anchor" href="#sending-messages-to-threads-with-webhooks" aria-hidden="true">#</a> Sending messages to threads with webhooks</h2>`,2),mn=n("It is possible for a webhook built on the parent channel to send messages to the channel's threads. For the purpose of this example, it is assumed a single webhook already exists for that channel. If you wish to learn more about webhooks, see our "),bn=n("webhook guide"),gn=n("."),vn=e(`<div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">const</span> webhooks <span class="token operator">=</span> <span class="token keyword">await</span> channel<span class="token punctuation">.</span><span class="token function">fetchWebhooks</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 49<span class="token keyword">const</span> webhook <span class="token operator">=</span> webhooks<span class="token punctuation">.</span><span class="token function">first</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 50 51<span class="token keyword">await</span> webhook<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token punctuation">{</span> 52 <span class="token literal-property property">content</span><span class="token operator">:</span> <span class="token string">'Look ma! I\\'m in a thread!'</span><span class="token punctuation">,</span> 53 <span class="token literal-property property">
53threadId</span><span class="token operator">:</span> <span class="token string">'123456789012345678'</span><span class="token punctuation">,</span> 54<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 55</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>And that's it! Now you know all there is to know on working with threads using discord.js!</p>`,2);function _n(yn,wn){const t=p("DocsLink"),o=p("RouterLink");return c(),l(i,null,[d,h,k,a("div",m,[b,a("p",null,[g,s(t,{path:"ThreadChannel:Class#isThread",type:"method"}),v,s(t,{path:"ThreadChannel:Class"}),_])]),y,a("ul",null,[a("li",null,[s(t,{path:"Client:Class#threadCreate"}),w]),a("li",null,[s(t,{path:"Client:Class#threadDelete"}),f]),a("li",null,[s(t,{path:"Client:Class#threadUpdate"}),T]),a("li",null,[s(t,{path:"Client:Class#threadListSync"}),x]),a("li",null,[s(t,{path:"Client:Class#threadMembersUpdate"}),C,j,A]),a("li",null,[s(t,{path:"Client:Class#threadMemberUpdate"}),D])]),M,a("p",null,[L,s(t,{path:"GuildTextThreadManager:Class"}),N,s(t,{path:"GuildTextThreadManager:Class#create",type:"method"}),P]),E,a("p",null,[G,s(t,{path:"ThreadChannel:Class#delete",type:"method"}),I]),q,a("p",null,[H,s(t,{path:"ThreadChannel:Class#join",type:"method"}),O]),V,a("p",null,[$,s(t,{path:"ThreadChannel:Class#leave",type:"method"}),B]),F,a("p",null,[R,s(t,{path:"ThreadChannel:Class#setArchived",type:"method"}),S]),U,a("p",null,[Y,s(t,{path:"ThreadChannel:Class#setLocked",type:"method"}),z]),J,a("p",null,[W,s(t,{path:"GuildTextThreadManager:Class#create",type:"method"}),K]),Q,a("p",null,[X,s(t,{path:"Message:Class#startThread",type:"method"}),Z]),nn,a("p",null,[an,s(t,{path:"GuildTextThreadManager:Class#create",type:"method"}),sn,tn,en,pn,on]),cn,a("p",null,[ln,s(t,{path:"ThreadMemberManager:Class#add",type:"method"}),rn]),un,a("p",null,[dn,s(t,{path:"ThreadMemberManager:Class#remove",type:"method"}),hn]),kn,a("p",null,[mn,s(o,{to:"/popular-topics/webhooks.html"},{default:r(()=>[bn]),_:1}),gn]),vn],64)}u.render=_n;export{u as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.