discord.py Бот не отвечает на ввод в личном кабинете

Dec 23 2020

Что я пытаюсь сделать : получить ответ от автора сообщения в личном кабинете с ботом.

Моя проблема : бот не отвечает, когда ему отправляется сообщение в 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.DMChannel API Справочник
  • Discord.py - ответьте DM конкретным сообщением
  • Бот Discord.py: как заставить моего бота Discord отправлять мне ответы на команду, которую пользователи используют в прямых переписках, например, для опроса?

Ответы

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"