Python 如何将discord.py bot私人/直接消息发送给';他不是作者吗?

Python 如何将discord.py bot私人/直接消息发送给';他不是作者吗?,python,discord,discord.py,Python,Discord,Discord.py,假设我想制作一个具有“戳”功能的机器人(当有人说“!poke@user#0000”时,aka会向用户发送一个pm,说“Boop”),我该怎么做?当我这样做时,它工作得非常完美: @bot.command(pass_context=True) async def poke(ctx, message): await client.send_message(ctx.message.author, 'boop') 但前提是我想戳一下信息的作者。我要捅谁? 我知道discord.py文档说我可以

假设我想制作一个具有“戳”功能的机器人(当有人说“!poke@user#0000”时,aka会向用户发送一个pm,说“Boop”),我该怎么做?当我这样做时,它工作得非常完美:

@bot.command(pass_context=True)
async def poke(ctx, message):
    await client.send_message(ctx.message.author, 'boop')
但前提是我想戳一下信息的作者。我要捅谁?

我知道discord.py文档说我可以使用:

start_private_message(user)

但我不知道用什么来代替用户。

实际上比这简单

@bot.command(pass_context=True)
async def poke(ctx, member: discord.Member):
    await bot.send_message(member, 'boop')

send_message
包含私人消息的逻辑,因此您不必自己使用
start_private_message
:discord.Member
被称为转换器,并且被描述为

我可能会对这篇文章进行一些修改,但最新版本的内容如下:

@bot.command():
async def poke(ctx, user: discord.Member=None):

    if user is None:
        await ctx.send("Incorrect Syntax:\nUsage: `!poke [user]`")

    await user.send("boop")
if user is None:
块是可选的,但如果您希望在命令使用不正确时显示错误消息,则该块非常有用