使用discord.py向非服务器用户发邀请私信:通过用户名与鉴别器获取用户
获取Discord用户对象并发送私信的方法
针对你提到的场景(已知目标用户的用户名和鉴别器,对方不在你的服务器中),分两种情况说明可行方案:
一、Discord机器人开发场景(开发者视角)
如果你是开发Discord机器人,可以通过官方API接口获取目标用户对象:
- 调用机器人客户端的用户查询方法,传入用户名和鉴别器参数。以Discord.js v14为例:
// 在异步函数内执行 try { const targetUser = await client.users.fetch({ username: "目标用户名", discriminator: "4位鉴别器数字" }); // 发送私信邀请 await targetUser.send(`你好!邀请你加入我的服务器:[替换为你的服务器邀请链接]`); } catch (error) { console.error("操作失败:", error); } - 核心限制:机器人必须满足Discord的私信规则才能成功发送:
- 目标用户未屏蔽该机器人
- 机器人与目标用户存在至少一个共同服务器,或用户曾主动给机器人发过消息,或机器人是通过用户授权添加的
二、普通Discord用户场景
如果你是普通用户(非开发者),仅通过用户名+鉴别器无法找到不在同服务器的用户并发送私信。受Discord隐私机制限制,你需要满足以下任一条件才能联系对方:
- 知道对方的用户ID,通过客户端「添加好友」功能输入ID,待对方通过好友请求后发送私信
- 与对方存在共同服务器,在服务器成员列表中找到对方后发起私信
- 对方公开了个人会话链接,通过链接发起沟通
内容的提问来源于stack exchange,提问作者ColorfulYoshi
相关产品推荐
相关产品推荐

