我开始制作一个不和谐的小机器人,将钥匙提供给要求它的人。但是,要求已更改,现在我需要收到想要的人的有效电子邮件。我不确定如何在DM中获得回复。
我看到了Discord.py get message from DM
但是我真的没有client.get_user_info()之类的东西吗?
bot = commands.Bot(command_prefix='!')
@bot.command(pass_context =True, no_pm=True, name='key', help="I give you a key. you're welcome", )
async def key_giver(ctx):
commandTime = str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
##check if you're PMing bot
elif isinstance (ctx.channel, discord.DMChannel):
print(ctx.message)
await ctx.author.send(keyArray[0])
else:
response = "Hello my friend. I give you a key for a game. This is my purpose. Please enter your email!"
##Send key via PM
await ctx.author.send(response)
打印ctx.message是
<Message id=620538695124254720 channel=<DMChannel id=614377525417738240 recipient=<User id=605223566371192852 name='aon' discriminator='5906' bot=False>> type=<MessageType.default: 0> author=<User id=605223566371192852 name='aon' discriminator='5906' bot=False>>
我真的不确定。我只是愚蠢,请不要对我大喊。
答案 0 :(得分:1)
您可以使用Client.wait_for
等待消息并使用其结果。您已经有了User
对象(ctx.author
),因此可以从User.dm_channel
获取要收听的频道。我正在重新使用message_check
函数from this previous answer来生成支票
# Send them a message in a DM
await ctx.author.send("Please give an email address")
# Wait for a response
response = await bot.wait_for('message', check=message_check(channel=ctx.author.dm_channel))