実現したいこと
スレッドで発言があったとき、応答するBotを作りたい。
特定のチャンネルに存在するスレッドで発言したときのみ、応答させたい。
(できれば、権限操作による方法に頼りたくない)
発言のあったスレッドが位置するチャンネルのIDを取得したい。
前提
はじめたての初心者です。
拙い質問ですが、よろしくお願いいたします。
discord.pyでbotを作っています。
質問内容は、[実現したいこと]の内容になります。
実行したことは、以下のソースコードの通りです。
チャンネルIDを、(message.channel.id)で取得しようと試みましたが、失敗しました。
・Botをアクセスできるようにしたい範囲
カテゴリA
┗チャンネル0×
└スレッドい× ←書き込みがあっても応答しない
カテゴリB
┗チャンネル1〇 ←受け取ったメッセージから、このIDを取得したい
└スレッドろ〇 ←メッセージを受け取るチャンネル
└スレッドは〇 ←メッセージを受け取るチャンネル
┗チャンネル2×
└スレッドに×
└スレッドほ×
これは追加の質問で、現在必要としていませんが、
チャンネルが存在するカテゴリIDを取得することもできますか?
該当のソースコード
python
1import discord 2 3TOKEN = "Bot's token" 4 5client = discord.Client(intents=discord.Intents.all()) 6 7@client.event 8async def on_ready(): 9 print('Bot is UP and Ready') 10 11# 問題のコード 12@client.event 13async def on_message(message): 14 # スレッド以外での発言をはじく 15 if type(message.channel) is discord.Thread: 16 # Botの発言をはじく 17 if message.author == client.user or message.author.bot: 18 return 19 20 # 特定のチャンネル以外に存在するスレッドでは、Botが発言してほしくない 21 if message.channel.id != [発言を許可するチャンネルID]: 22 # スレッドIDが取得されてしまうが、スレッドが存在するチャンネルIDが取得したい 23 print(f'{message.channel.id}') 24 return 25 26 await message.channel.send('hello') 27 28client.run(TOKEN)
試したこと
公式リファレンスから探そうと試みましたが、
上手く使って見つけることができませんでした。
補足情報(FW/ツールのバージョンなど)
Python 3.11.2
discord.py 2.2.2
powershellで実行しています

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/07 13:40