如何使用 Discord.py 私信特定用户?

How can I dm a specific User by using Discord.py?

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

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。但是什么也没发生。

使用await user.send("message")

我注意到的几件事:

你定义了两次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,这里有一些关于此的好帖子:

打开 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")