PageSourceSearch

https://discordjs-guide.netlify.app/assets/threads.html.89c2d80f.js

js discordjs-guide.netlify.app collected 2026-10-03 10:40:33 UTC 26,670 bytes, 55 lines download raw bytes

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">&#39;food-talk&#39;</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">&#39;Needed a separate thread for food&#39;</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">=&gt;</span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">&#39;food-talk&#39;</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">=&gt;</span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">&#39;food-talk&#39;</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">=&gt;</span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">&#39;food-talk&#39;</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. &quot;Activity&quot; 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">=&gt;</span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">&#39;food-talk&#39;</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">=&gt;</span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">&#39;food-talk&#39;</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">&#39;food-talk&#39;</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">&#39;Needed a separate thread for food&#39;</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">&#39;food-talk&#39;</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">&#39;Needed a separate thread for food&#39;</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&#39;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">&#39;discord.js&#39;</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">&#39;mod-talk&#39;</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">&#39;Needed a separate thread for moderation&#39;</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">=&gt;</span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">&#39;food-talk&#39;</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">&#39;140214425276776449&#39;</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">=&gt;</span> x<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">&#39;food-talk&#39;</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">&#39;140214425276776449&#39;</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">&#39;Look ma! I\\&#39;m in a thread!&#39;</span><span class="token punctuation">,</span>
53	<span class="token literal-property property">
53threadId</span><span class="token operator">:</span> <span class="token string">&#39;123456789012345678&#39;</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&#39;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.