discord.utils模块无oauth_token属性错误求助
问题解决:discord.utils 不存在 oauth_token 属性
首先明确:discord.py 官方库的 discord.utils 模块里从来没有 oauth_token 这个方法,你调用了一个不存在的API,所以才会报AttributeError。
根据你的需求,分两种情况处理:
1. 如果你是要使用机器人账号转发消息
机器人的token不需要通过client_id和client_secret生成,直接在Discord开发者后台创建机器人应用时,就能复制到机器人专属的token。直接用这个token初始化客户端即可:
import discord # 启用所需的intents,根据你的功能调整 intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print(f"已登录为 {client.user}") # 这里可以编写消息转发的逻辑 # 替换成你的机器人token client.run("你的机器人Token")
2. 如果你是要获取用户授权的OAuth2令牌
如果是需要让用户授权你的应用,获取用户的令牌来操作,那得走完整的OAuth2流程:
- 先用你已经导入的
oauth_url生成授权链接,引导用户访问授权:
from discord.utils import oauth_url client_id = "你的应用客户端ID" # 根据需求设置权限范围,比如要读取用户信息就加"identify",管理服务器就加"guilds" scopes = ["identify", "guilds"] # 生成授权链接 auth_link = oauth_url(client_id, scopes=scopes) print("引导用户访问这个链接授权:", auth_link)
- 用户授权后,会跳转到你在开发者后台设置的回调URL,你需要在后端接收这个请求,拿到
code参数,然后向Discord的token接口发送POST请求,携带client_id、client_secret、code等参数,才能获取到用户的OAuth2令牌。
总结:别再用discord.utils.oauth_token了,这个方法根本不存在,根据你的实际需求选上面的方案之一。
内容的提问来源于stack exchange,提问作者sombody.eth
相关产品推荐
相关产品推荐

