【discordpy】質問スレッドの自動作成

この機能は DiscordサーバーDiscord Bot Portal JP で導入されています。
(Discord Bot 利用者/開発者のためのサーバーです)
https://discord.gg/FWw6VqQ


仕様

質問チャンネルに発言があったら、
同カテゴリ内に自動でチャンネルを作成し、
そのチャンネルにトリガーの発言のURLを投げる

Discordサーバーの構成例

質問前

鯖(Guild)  
└── 質問スレ(CategoryChannel)  
    └── 質問(TextChannel)  

質問後

鯖(Guild)  
└── 質問スレ(CategoryChannel)  
    ├── 質問(TextChannel)  
    └── q1(TextChannel)  

実装

以下の属性とメソッドを利用する。

ソースコード

import discord  
import os  

client = discord.Client()  
TOKEN = os.environ['DISCORD_BOT_TOKEN']  
ID_CHANNEL_QUESTION = # 質問チャンネルID  
ID_CATEGORY_QA = # 質問スレカテゴリID  


@client.event  
async def on_message(message):  
    if message.channel.id == ID_CHANNEL_QUESTION:  
        await qa_thread(message)  


async def qa_thread(message):  
    category_qa = client.get_channel(ID_CATEGORY_QA)  
    channel_name = f'q{len(category_qa.text_channels)}'  
    payload = {'name': channel_name, 'category': category_qa, 'position': 0}  
    channel_qa = await message.guild.create_text_channel(**payload)  
    await channel_qa.send(message.jump_url)  
    await client.get_channel(ID_CHANNEL_QUESTION).edit(position=0)  


client.run(TOKEN)