discord.py Bot DMs में इनपुट का जवाब नहीं देता है

Dec 23 2020

मैं क्या करने की कोशिश कर रहा हूं : बॉट के साथ अपने डीएम में संदेश लेखक से प्रतिक्रिया प्राप्त करने के लिए।

मेरी समस्या : बॉट प्रतिक्रिया नहीं देता है जब संदेश को डीएम में भेजा जाता है जैसा कि मैं उम्मीद कर रहा हूं। कोई त्रुटि संदेश नहीं हैं।

कोड :

@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.DMChannel API संदर्भ
  • Discord.py - एक विशिष्ट संदेश के साथ DM को उत्तर दें
  • Discord.py bot: मैं अपनी डिस्क बॉट कैसे बनाऊंगा जो मुझे एक सर्वेक्षण के लिए DMs उदा में उपयोग करने वाले कमांड पर प्रतिक्रियाएं भेजेगा?

जवाब

1 NuKeFluffy Dec 23 2020 at 09:49

आपके चेक में कोई समस्या है, यदि आप प्रिंट message.channelकरते हैं तो आपको मिलेगा:

Direct Message with username#1234

और यदि आप प्रिंट discord.channel.DMChannelकरेंगे तो आपको मिलेगा:

<class 'discord.channel.DMChannel'>

आप देखेंगे कि वे दो अलग-अलग चीजें हैं, इस पर अपनी जांच को बदलकर समस्या को ठीक करना चाहिए:

def check(message):
    return message.author == ctx.author and str(message.channel.type) == "private"