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"