如何通过Discord OAuth2实现以用户身份而非BOT发送频道消息
问题核心原因
Discord官方出于反垃圾消息、防范账号滥用的政策限制,从未向第三方OAuth2应用开放以普通用户身份发送消息的权限,没有对应公开的OAuth scope,因此即便勾选全部公开scope也只能获取消息读取权限,无法实现发消息操作是预期结果。
可行实现方案
方案1:Webhook定向推送(合规,无需认证)
- 适用场景:仅需向固定少量频道发送消息,可接受非个人账号身份发信
- 实现逻辑:在目标频道手动创建Webhook,获取Webhook接口地址后直接调用接口发送消息,可自定义消息发送者的名称和头像,无需OAuth2认证或BOT加入服务器。
方案2:BOT账号发送(官方合规推荐方案)
- 适用场景:需要向所有已加入的服务器频道发信,可接受BOT身份发信
- 实现逻辑:创建Discord BOT应用后,邀请BOT加入所有你需要发消息的服务器,为BOT授予
SendMessages权限,调用官方公开的BOT接口即可实现跨频道消息发送。该方案完全符合Discord开发者政策,无账号风控风险,若需和个人账号显示效果接近,可将BOT的昵称、头像设置为和你个人账号一致。
方案3:个人账号本地自动化(仅限个人非公开测试使用,违反平台服务条款)
- 适用场景:仅个人自用,不对外提供服务,可接受账号封禁风险
- 实现逻辑:提取个人Discord账号的
Authorization请求头,直接调用Discord内部用户发消息接口实现发送操作。该方案违反Discord服务条款,高频操作极大概率触发账号风控、临时限制甚至永久封禁,仅建议极小范围测试使用,不建议用于正式场景。
内容的提问来源于stack exchange,提问作者eronn
相关产品推荐
相关产品推荐

