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

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

कोड:

@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

छवियां:

No response is given

(ऊपर की छवि) दी गई शर्तों को पूरा करने के बावजूद कोई प्रतिक्रिया नहीं दी जाती है।

संदर्भ/ अन्य प्रश्न जिनका मैंने उल्लेख किया है:

4
Bagle 23 पद 2020, 05:03
आपके चेक का यह हिस्सा: message.channel == discord.channel.DMChannel ही आपको समस्या का कारण बना रहा है।
 – 
Fluffy
23 पद 2020, 05:40

1 उत्तर

सबसे बढ़िया उत्तर

आपके चेक में कोई समस्या है, अगर आप 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"
1
Fluffy 23 पद 2020, 05:54