discord.py Bot reagiert nicht auf Eingaben in DMs

Dec 23 2020

Was ich versuche zu tun : Um eine Antwort vom Nachrichtenautor in seinen DMs mit dem Bot zu erhalten.

Mein Problem : Bot antwortet nicht, wenn eine Nachricht in den DMs an ihn gesendet wird, wie ich es erwarte. Es gibt keine Fehlermeldungen.

Code :

@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

Bilder :

(Bild oben) Trotz der gegebenen Bedingungen wird keine Antwort gegeben.

Referenzen / Andere Fragen, auf die ich mich bezogen habe :

  • Discord.py Überprüfen Sie, ob Channel ein DM ist
  • discord.DMChannel API-Referenz
  • Discord.py - Antworte DM mit einer bestimmten Nachricht
  • Discord.py-Bot: Wie würde ich meinen Discord-Bot dazu bringen, mir Antworten auf einen Befehl zu senden, den Benutzer in DMs verwenden, z. B. für eine Umfrage?

Antworten

1 NuKeFluffy Dec 23 2020 at 09:49

Es gibt ein Problem mit Ihrem Scheck. Wenn Sie drucken, erhalten message.channelSie:

Direct Message with username#1234

Und wenn Sie drucken, erhalten discord.channel.DMChannelSie:

<class 'discord.channel.DMChannel'>

Sie werden feststellen, dass es sich um zwei verschiedene Dinge handelt. Wenn Sie Ihre Prüfung auf diese ändern, sollte das Problem behoben werden:

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