discord.py O bot não responde à entrada em DMs
Dec 23 2020
O que estou tentando fazer : Receber uma resposta do autor da mensagem em seus DMs com o bot.
Meu problema : o bot não responde quando uma mensagem é enviada para ele nos DMs como eu esperava. Não há mensagens de erro.
Código :
@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
Imagens :

(Imagem acima) Nenhuma resposta é dada, apesar das condições fornecidas serem atendidas.
Referências / outras questões a que me referi :
- Discord.py Verifique se o canal é um DM
- discord.DMChannel API Reference
- Discord.py - Responder ao DM com uma mensagem específica
- Discord.py bot: como eu faria meu discord bot me enviar respostas a um comando que os usuários usam em DMs, por exemplo, para uma pesquisa?
Respostas
1 NuKeFluffy Dec 23 2020 at 09:49
Há um problema com o seu cheque. Se você imprimir message.channel
, receberá:
Direct Message with username#1234
E se você imprimir, discord.channel.DMChannel
você obterá:
<class 'discord.channel.DMChannel'>
Você notará que há duas coisas diferentes, alterar seu cheque para isso deve resolver o problema:
def check(message):
return message.author == ctx.author and str(message.channel.type) == "private"
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas