如何使用 Discord.py 对特定用户进行 dm?

Posted

技术标签:

【中文标题】如何使用 Discord.py 对特定用户进行 dm?【英文标题】:How can I dm a specific User by using Discord.py? 【发布时间】:2021-11-21 21:29:12 【问题描述】:

我正在使用 discord.py 制作一个不和谐的机器人,当用户使用特定命令时,我想要一个特定的用户。

from discord import DMChannel

client = discord.Client()
client = commands.Bot(command_prefix=']')

@client.command(name='dmsend', pass_context=True)
async def dmsend(ctx, user_id):    
  user = await client.fetch_user("71123221123")
  await DMChannel.send(user, "Put the message here")

当我发出命令 ]dmsend 时,什么也没有发生。我也尝试过 dmsend。但是什么也没发生。

【问题讨论】:

你确定client.fetch_user("71123221123") 正在做你认为它正在做的事情吗?由于添加了意图,您可能需要先更新用户缓存,然后才能执行此类操作。 【参考方案1】:

使用await user.send("message")

【讨论】:

【参考方案2】:

我注意到的一些事情:

你定义了两次client,那只会出错。

首先)删除client = discord.Client(),你不再需要它了。

如果您想向特定用户 ID 发送消息,则不能将其括在引号中。此外,您应该小心fetch,因为这样会向 API 发送请求,并且它们是有限的。

第二)await client.fetch_user("71123221123")更改为以下内容:

await client.get_user(71123221123) # No fetch

如果您有想要发送消息的user,则无需创建另一个DMChannel

第三)await DMChannel.send() 改成如下:

await user.send("YourMessageHere")

您可能还需要启用members Intent,这里有一些很好的帖子:

https://discordpy.readthedocs.io/en/stable/intents.html How do I get the discord.py intents to work?

开启 Intents 后的完整代码可能是:

intents = discord.Intents.all()

client = commands.Bot(command_prefix=']', intents=intents)

@client.command(name='dmsend', pass_context=True)
async def dmsend(ctx):
    user = await client.get_user(71123221123)
    await user.send("This is a test")

client.run("YourTokenHere")

【讨论】:

那么我如何管理client.run ("token") 只是为了做对:您接受了我的回答,但因为您还有其他问题而未接受?这是一种奇怪的处理方式。 client.run("YourToken") 必须在代码的末尾,即使这不是您的问题的一部分。我只是提供了相关代码。 哦,对不起,兄弟,但是当我这样做时,它会给我一个错误.. 错误是什么? error is too long to type this is error [error] (ghostbin.com/OHkqK)

以上是关于如何使用 Discord.py 对特定用户进行 dm?的主要内容,如果未能解决你的问题,请参考以下文章

如何查看特定用户在语音频道上花费的时间?[Discord.py]

如何在调用函数时使用 discord.py 添加反应?

如何在 discord.py 中记录特定用户的信息?

Discord.py 机器人:如何让我的不和谐机器人向我发送对用户在 DM 中使用的命令的响应,例如进行调查?

如何使用 discord.py 让 discord bot ping 用户 [关闭]

{discord.py} 删除特定用户的特定信息