使用Discord API与Python Requests分配角色遇401错误求助
解决Discord API分配角色返回401未授权的问题
核心原因及修复步骤
- 缺少有效认证信息:Discord API所有请求都需要携带合法的认证令牌,401错误直接说明请求未通过身份验证。
- 需在请求头中添加机器人令牌(推荐使用机器人令牌,权限控制更清晰),格式为
Authorization: Bot YOUR_BOT_TOKEN - 确保机器人已加入目标服务器,且拥有
Manage Roles权限
- 需在请求头中添加机器人令牌(推荐使用机器人令牌,权限控制更清晰),格式为
- 多余的请求体:给用户添加角色的PUT端点不需要任何请求体,你当前发送的
data是无效的,会干扰请求处理。
修正后的代码
import requests def give_role(guild_id, user_id, role_id): url = f"https://discord.com/api/guilds/{guild_id}/members/{user_id}/roles/{role_id}" # 替换为你的机器人令牌 headers = { "Authorization": "Bot YOUR_BOT_TOKEN", "Content-Type": "application/json" } # 该端点无需请求体,直接发送PUT请求 response = requests.put(url, headers=headers) print(response) # 可以添加状态码判断,更直观反馈结果 if response.status_code == 204: print("角色分配成功") elif response.status_code == 403: print("权限不足:请检查机器人角色位置是否高于目标角色,或是否拥有Manage Roles权限") else: print(f"错误详情: {response.json()}")
额外检查项
- 机器人的角色在服务器角色列表中的位置,必须高于要分配的角色,否则会返回403禁止访问
- 确保令牌完整无空格、未过期或被撤销
内容的提问来源于stack exchange,提问作者Alexander Shoja Assadi
相关产品推荐
相关产品推荐

