You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py:如何通过用户名获取无共同公会用户的ID以发私信

关于Discord机器人通过用户名+判别器获取无共同公会用户ID的问题

核心结论

无法仅通过用户名+判别器获取与机器人无共同公会用户的ID,这是Discord API的权限限制导致的。

原因说明

Discord的隐私机制和API设计限制了机器人的查询范围:机器人只能获取自己所在公会内的用户信息,或是已经与机器人有过私信互动的用户信息。用户名+判别器的组合虽然理论上唯一,但Discord不支持通过这个组合跨公会查询用户ID,以此保护用户隐私。

示例代码纠正

你提供的代码存在两处问题:

  1. fetch_user方法的参数需要是用户ID(整数),而非用户名+判别器字符串;
  2. get_user_info和send_message在新版discord.py中已被弃用。

如果已有用户ID,正确的代码写法应为:

user = await client.fetch_user(123456789012345678)  # 替换为实际用户ID
await user.send("message")

替代解决方案

  • 让目标用户先主动给机器人发送一条私信,此时机器人就能获取到该用户的ID并存储,后续即可主动发起私信;
  • 若目标用户在某个公开服务器,可让机器人加入该服务器,之后就能获取到用户ID。

内容的提问来源于stack exchange,提问作者aravinds.arv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:27:24