Ping 成员 discord.py

Ping members with discord.py

我正在为我的机器人制作一个命令,当使用该命令时,它将向 DM 成员发送命令 +ping @Member。这是我的代码:

    if message.content.startswith('+ping'):
        ping = message.content.replace("+ping ","")
        dm_member = ping
        pinger = message.author
        await dm_member.send('You got pinged by:')
        await dm_member.send(pinger)

但在 return 我得到:

Traceback (most recent call last):
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "main.py", line 95, in on_message
    await dm_member.send('You got pinged by:')
AttributeError: 'str' object has no attribute 'send'

如何修复此 AttributeError?

当我用 message.author 替换 dm_member 时(因此 ping 作者)它有效。

我认为它不起作用,因为 str 对象没有 discord 属性。但是我该如何解决这个问题?

    if message.content.startswith('+ping'):
        ping = message.content.replace("+ping ","")
        user_id = int(ping[2:-1]) # convert to int
        dm_member = await message.guild.get_member(user_id) # this function accepts an int
        pinger = message.author
        await dm_member.send('You got pinged by:')
        await dm_member.send(pinger)

您将 dm_member 设置为等于 ping,这是一个字符串,一个 Python 内置。 pinger是作者的用户对象。要获取 ping 用户,请从 ping 中提取用户 ID,并使用它来使用 await message.guild.get_member(user_id).

查找用户对象