discord.pyでフォーラムにスレッドを作成する方法

フォーラムにスレッドを作成する

import discord
from discord import app_commands

intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
slash = app_commands.CommandTree(client)
TOKEN = "YOUR_TOKEN"
FORUM_ID = 123456789 # 生成したいフォーラムチャンネルのID

@client.event
async def on_ready():
  print('Bot is ready.')
  await client.change_presence(activity=discord.Game(name='testing', type=1))
  await slash.sync()  

@slash.command(name='createthread',description='スレッドを作成します')
async def createthread(ctx):
  await ctx.response.defer()
  forum_channel :discord.ForumChannel = client.get_channel(FORUM_ID) # フォーラムチャンネルの取得(一応型指定)

  # スレッドの作成
  thread = await forum_channel.create_thread(name="タイトル", content="説明")
  await ctx.followup.send('スレッドを作成しました。')

client.run(TOKEN)

テキストチャンネルにスレッドを作成するときと違い、create_threadの引数のcontentが必須になっているので注意。


タグを追加する

import discord
import datetime
from discord import app_commands
  
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
slash = app_commands.CommandTree(client)
TOKEN = "YOUR_TOKEN"
FORUM_ID = 123456789 # 生成したいフォーラムチャンネルのID
  
@client.event
async def on_ready():
  print('Bot is ready.')
  await client.change_presence(activity=discord.Game(name='testing', type=1))
  await slash.sync()  
  
@slash.command(name='createthread',description='スレッドを作成します')
async def createthread(ctx):
  await ctx.response.defer()
  weekday = datetime.datetime.today().weekday() # 今日の曜日取得
  forum_channel :discord.ForumChannel = client.get_channel(FORUM_ID) # フォーラムチャンネルの取得(一応型指定)
  tag = None
  
  # スレッドのタグを設定
  if weekday == 0:
    for available_tag in forum_channel.available_tags:
      if available_tag.name == "月曜日":
        tag = available_tag
        break
  elif weekday == 1:
    for available_tag in forum_channel.available_tags:
      if available_tag.name == "火曜日":
        tag = available_tag
        break
  elif weekday == 2:
    for available_tag in forum_channel.available_tags:
      if available_tag.name == "水曜日":
        tag = available_tag
        break
  # 以下略
  
  # スレッドの作成
  thread = await forum_channel.create_thread(name="タイトル", content="説明", applied_tags=[tag])
  await ctx.followup.send('スレッドを作成しました。')
  
client.run(TOKEN)