Discord.py 向用户发送 dm

时间:2021-03-01 11:34:45

标签: python python-3.x discord.py

所以我为我的机器人创建了一个 dm 命令,它运行良好,但我无法 dm 用户名中有空格的用户。有人知道怎么做吗?

@client.command(pass_context=True)
@commands.is_owner()
async def dm(ctx, user: discord.User, *, message=None):
    message = message or "Message from bot owner"
    embed = discord.Embed(title="Message from bot owner", description=message, color = 0)
    await user.send(embed = embed)

当我尝试使用空格发送用户时,例如:=dm Special user#1234 我的终端说找不到用户 Special。

2 个答案:

答案 0 :(得分:1)

你可以这样做

@client.command(pass_context=True)
@commands.is_owner()
async def dm(ctx, user, *, message=None):
    if message is None:
        await ctx.send("You need to specify the message to send!")
        return
    user = client.fetch_user(user)
    await user.send(embed=discord.Embed(title="Message from bot owner", description=message, color = 0))

答案 1 :(得分:0)

在这种情况下,您应该有一种单独的方式来定义 message 变量,因为 member 变量可能需要空格。这是我定义函数的方式:

@commands.command()
async def dm(self, ctx, *, member: discord.Member):
    await ctx.send('Enter a message to DM in the chat...')
    msg = await self.bot.wait_for('message', check=lambda message: message.author == ctx.author)
    await member.send(msg.content)