Discord.py 向自定义 ID 用户发送 DM

Posted

技术标签:

【中文标题】Discord.py 向自定义 ID 用户发送 DM【英文标题】:Discord.py Send a DM to a Custom ID User 【发布时间】:2021-04-26 13:18:03 【问题描述】:

我正在使用 discord.py,并希望将自定义 DM 发送给具有我希望的 ID 的自定义用户。我确实尝试了我们在 Stack Overflow 和 discord.py 上的所有方法和选项,但是,它们都没有最终起作用。我得到的结果总是无。有什么建议吗?

我尝试过的:

#1
    user = await bot.get_user_info(user_id)
    await user.send('hello')
#2
    await client.send_message(discord.Object(id='12324234183172'), 'hello')
#3

    async def send_dm(ctx, member: discord.Member, *, content):
        channel = await member.create_dm()
        await channel.send(content)

【问题讨论】:

虽然这很可能是意图或 int(id) 问题 (discordpy.readthedocs.io/en/latest/intents.html),但它与 ***.com/questions/54499864/… 重复 【参考方案1】:

确保您使用的是 discord.py 重写分支,因为该分支是 discord.py 的最新版本。从 discord.py-rewrite 开始,您尝试发送直接消息的所有三种方式都不起作用。如果您使用的是 rewrite 分支,您可以更新以下三种方法中的任何一种:

在 #1 中,问题在于方法 Client.get_user_info() 已更改为 Client.fetch_user(),这应该会检索到正确的用户。

在 #2 中,问题在于方法 Client.send_message() 已更改为 channel.send()

#3 中处理 DM 的方式目前没有使用,尽管它应该仍然有效。我建议您直接member.send() 向用户发送直接消息。

另一个重要的事情是机器人无法向不与机器人共享公会的用户发送 DM,因此请确保该用户在运行机器人的公会中。

参考资料:

Migrating to 1.0 fetch_user() channel.send() member.send()

【讨论】:

以上是关于Discord.py 向自定义 ID 用户发送 DM的主要内容,如果未能解决你的问题,请参考以下文章

您能否确定是不是可以使用 discord.py 直接向用户发送消息?

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

从 discord.py 中的提及中获取用户 ID

通过 ID 添加角色 discord.py

discord.py,在没有 on_message() 事件的情况下通过通道 id 发送消息?

Discord.py:获取带有 id 的用户对象