
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)