Что я пытаюсь сделать: Получить ответ от автора сообщения в их личных сообщениях с ботом.
Моя проблема: бот не отвечает, когда ему отправляется сообщение в 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
Изображений:
(Изображение вверху) Ответ не дается, несмотря на выполнение заданных условий.
Ссылки/Другие вопросы, на которые я ссылался:
У вас проблема с чеком, если вы напечатаете 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"
Эта часть вашей проверки:
message.channel == discord.channel.DMChannel
это то, что вызывает у вас проблему.