discord.pyボットはDMへの入力に応答しません
私がやろうとしていること:ボットを使用したDMでメッセージ作成者からの応答を受信するため。
私の問題:ボットは、DMでメッセージが送信されたときに、期待どおりに応答しません。エラーメッセージはありません。
コード:
@client.command()
async def test(ctx):
await ctx.send("Sending a dm now")
def check(message):
return message.author == ctx.author and message.channel == discord.channel.DMChannel
try:
await ctx.author.send("Say test: ")
response = await client.wait_for('message', check=check)
if response.content.lower() == 'test':
await ctx.send("Test successful")
elif response.content.lower() == 'banana':
await ctx.author.send("That works too")
except:
# do things here
画像:
(上の画像)所定の条件が満たされているにもかかわらず、応答がありません。
参考文献/私が参照したその他の質問:
- Discord.pyチャンネルがDMかどうかを確認する
- discord.DMChannelAPIリファレンス
- Discord.py-特定のメッセージでDMに返信する
- Discord.pyボット:ユーザーがDMで使用するコマンド(調査など)への応答をDiscordボットに送信させるにはどうすればよいですか?
回答
1 NuKeFluffy
小切手に問題があります。印刷message.channel
すると、次のようになります。
Direct Message with username#1234
そして、あなたが印刷discord.channel.DMChannel
するならば、あなたは得るでしょう:
<class 'discord.channel.DMChannel'>
これらは2つの異なるものであることに気付くでしょう。チェックをこれに変更すると、問題が解決するはずです。
def check(message):
return message.author == ctx.author and str(message.channel.type) == "private"