discord.py Bot tidak menanggapi masukan dalam DM

Dec 23 2020

Apa yang saya coba lakukan : Untuk menerima tanggapan dari penulis pesan di DM mereka dengan bot.

Masalah saya : Bot tidak merespons ketika pesan dikirim ke sana di DM seperti yang saya harapkan. Tidak ada pesan kesalahan.

Kode :

@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

Gambar :

(Gambar di atas) Tidak ada respons yang diberikan meskipun kondisi yang diberikan terpenuhi.

Referensi / Pertanyaan Lain yang saya rujuk :

  • Discord.py Periksa apakah Channel adalah DM
  • discord.DMChannel API Reference
  • Discord.py - Balas ke DM dengan pesan khusus
  • Discord.py bot: bagaimana cara membuat bot perselisihan saya mengirimkan tanggapan kepada saya atas perintah yang digunakan pengguna di DM, misalnya untuk survei?

Jawaban

1 NuKeFluffy Dec 23 2020 at 09:49

Ada masalah dengan cek Anda, jika Anda mencetak message.channelAnda akan mendapatkan:

Direct Message with username#1234

Dan jika Anda mencetak, discord.channel.DMChannelAnda akan mendapatkan:

<class 'discord.channel.DMChannel'>

Anda akan melihat ada dua hal yang berbeda, mengubah cek Anda menjadi ini seharusnya memperbaiki masalah:

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