python 如何仅使用用户ID向用户发送DM

2ledvvac  于 2022-12-02  发布在  Python
关注(0)|答案(2)|浏览(155)

我想发送一个dm给一个用户,只是使用他们的用户ID,我从他们的配置文件复制。
这是我做的代码,但它没有工作。

@client.command()
async def dm(userID, *, message):
    user = client.get_user(userID)
    await user.send(message)

出现的错误如下:
discord.ext.commands.errors.CommandInvokeError:命令引发异常:属性错误:'NoneType'对象没有'send'属性

brgchamk

brgchamk1#

您所要做的就是将userID参数更改为user: discord.User。该参数将接受用户提及(@user)、用户名(user)和id(904360748455698502)。现在完整的代码将是:

@client.command()
async def dm(user: discord.User, *, message):
    await user.send(message)
czfnxgou

czfnxgou2#

您的代码部分正确。但是,根据discord.py API参考,User对象是不可消息传递的,即您不能直接在User本身上使用send()函数。
要解决这个问题,我们需要先创建一个带有用户的DMChannel,然后向DMChannel发送一条消息。
下面是工作代码:

@client.command()
async def dm(userID, *, message):
    user = client.get_user(userID)
    dmChannel = user.create_dm()
    await dmchannel.send(message)

相关问题